diff options
Diffstat (limited to 'deps/v8/src/builtins/regexp-test.tq')
-rw-r--r-- | deps/v8/src/builtins/regexp-test.tq | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/deps/v8/src/builtins/regexp-test.tq b/deps/v8/src/builtins/regexp-test.tq new file mode 100644 index 0000000000..938dfa51f3 --- /dev/null +++ b/deps/v8/src/builtins/regexp-test.tq @@ -0,0 +1,37 @@ +// Copyright 2019 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include 'src/builtins/builtins-regexp-gen.h' + +namespace regexp { + + // ES#sec-regexp.prototype.test + // RegExp.prototype.test ( S ) + transitioning javascript builtin RegExpPrototypeTest( + js-implicit context: Context, receiver: JSAny)(string: JSAny): JSAny { + const methodName: constexpr string = 'RegExp.prototype.test'; + const receiver = Cast<JSReceiver>(receiver) + otherwise ThrowTypeError(kIncompatibleMethodReceiver, methodName); + const str: String = ToString_Inline(context, string); + if (IsFastRegExpPermissive(receiver)) { + RegExpPrototypeExecBodyWithoutResultFast( + UnsafeCast<JSRegExp>(receiver), str) + otherwise return False; + return True; + } + const matchIndices = RegExpExec(context, receiver, str); + return SelectBooleanConstant(matchIndices != Null); + } + + extern macro RegExpBuiltinsAssembler::IsFastRegExpWithOriginalExec( + implicit context: Context)(JSRegExp): bool; + + transitioning builtin RegExpPrototypeTestFast(implicit context: Context)( + receiver: JSRegExp, string: String): Object { + assert(IsFastRegExpWithOriginalExec(receiver)); + RegExpPrototypeExecBodyWithoutResultFast(receiver, string) + otherwise return False; + return True; + } +} |