diff options
Diffstat (limited to 'deps/v8/src/builtins/regexp-exec.tq')
-rw-r--r-- | deps/v8/src/builtins/regexp-exec.tq | 71 |
1 files changed, 35 insertions, 36 deletions
diff --git a/deps/v8/src/builtins/regexp-exec.tq b/deps/v8/src/builtins/regexp-exec.tq index 0b11c42fbf7..87b00c1fdcd 100644 --- a/deps/v8/src/builtins/regexp-exec.tq +++ b/deps/v8/src/builtins/regexp-exec.tq @@ -6,40 +6,39 @@ namespace regexp { - @export - transitioning macro RegExpPrototypeExecBodyFast(implicit context: Context)( - receiver: JSReceiver, string: String): JSAny { - return RegExpPrototypeExecBody(receiver, string, true); - } - - transitioning macro RegExpPrototypeExecBodySlow(implicit context: Context)( - receiver: JSReceiver, string: String): JSAny { - return RegExpPrototypeExecBody(receiver, string, false); - } - - // Slow path stub for RegExpPrototypeExec to decrease code size. - transitioning builtin - RegExpPrototypeExecSlow(implicit context: Context)( - regexp: JSRegExp, string: String): JSAny { - return RegExpPrototypeExecBodySlow(regexp, string); - } - - extern macro RegExpBuiltinsAssembler::IsFastRegExpNoPrototype( - implicit context: Context)(Object): bool; - - // ES#sec-regexp.prototype.exec - // RegExp.prototype.exec ( string ) - transitioning javascript builtin RegExpPrototypeExec( - js-implicit context: NativeContext, - receiver: JSAny)(string: JSAny): JSAny { - // Ensure {receiver} is a JSRegExp. - const receiver = Cast<JSRegExp>(receiver) otherwise ThrowTypeError( - MessageTemplate::kIncompatibleMethodReceiver, 'RegExp.prototype.exec', - receiver); - const string = ToString_Inline(string); - - return IsFastRegExpNoPrototype(receiver) ? - RegExpPrototypeExecBodyFast(receiver, string) : - RegExpPrototypeExecSlow(receiver, string); - } +@export +transitioning macro RegExpPrototypeExecBodyFast(implicit context: Context)( + receiver: JSReceiver, string: String): JSAny { + return RegExpPrototypeExecBody(receiver, string, true); +} + +transitioning macro RegExpPrototypeExecBodySlow(implicit context: Context)( + receiver: JSReceiver, string: String): JSAny { + return RegExpPrototypeExecBody(receiver, string, false); +} + +// Slow path stub for RegExpPrototypeExec to decrease code size. +transitioning builtin +RegExpPrototypeExecSlow(implicit context: Context)( + regexp: JSRegExp, string: String): JSAny { + return RegExpPrototypeExecBodySlow(regexp, string); +} + +extern macro RegExpBuiltinsAssembler::IsFastRegExpNoPrototype( + implicit context: Context)(Object): bool; + +// ES#sec-regexp.prototype.exec +// RegExp.prototype.exec ( string ) +transitioning javascript builtin RegExpPrototypeExec( + js-implicit context: NativeContext, receiver: JSAny)(string: JSAny): JSAny { + // Ensure {receiver} is a JSRegExp. + const receiver = Cast<JSRegExp>(receiver) otherwise ThrowTypeError( + MessageTemplate::kIncompatibleMethodReceiver, 'RegExp.prototype.exec', + receiver); + const string = ToString_Inline(string); + + return IsFastRegExpNoPrototype(receiver) ? + RegExpPrototypeExecBodyFast(receiver, string) : + RegExpPrototypeExecSlow(receiver, string); +} } |