| Index: src/builtins/builtins-regexp.cc
|
| diff --git a/src/builtins/builtins-regexp.cc b/src/builtins/builtins-regexp.cc
|
| index b907a1bf45dd0559bbf92279e69cb6704121e94f..1a99bfb84af794c1a0a39b6bda1ea33a963eae2c 100644
|
| --- a/src/builtins/builtins-regexp.cc
|
| +++ b/src/builtins/builtins-regexp.cc
|
| @@ -1,8 +1,6 @@
|
| // Copyright 2016 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.h"
|
|
|
| #include "src/builtins/builtins-constructor.h"
|
| #include "src/builtins/builtins-utils.h"
|
| @@ -16,8 +14,82 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| +typedef compiler::Node Node;
|
| typedef CodeStubAssembler::ParameterMode ParameterMode;
|
| -
|
| +typedef compiler::CodeAssemblerState CodeAssemblerState;
|
| +
|
| +class RegExpBuiltinsAssembler : public CodeStubAssembler {
|
| + public:
|
| + explicit RegExpBuiltinsAssembler(CodeAssemblerState* state)
|
| + : CodeStubAssembler(state) {}
|
| +
|
| + protected:
|
| + Node* FastLoadLastIndex(Node* regexp);
|
| + Node* SlowLoadLastIndex(Node* context, Node* regexp);
|
| + Node* LoadLastIndex(Node* context, Node* regexp, bool is_fastpath);
|
| +
|
| + void FastStoreLastIndex(Node* regexp, Node* value);
|
| + void SlowStoreLastIndex(Node* context, Node* regexp, Node* value);
|
| + void StoreLastIndex(Node* context, Node* regexp, Node* value,
|
| + bool is_fastpath);
|
| +
|
| + Node* ConstructNewResultFromMatchInfo(Node* const context, Node* const regexp,
|
| + Node* const match_info,
|
| + Node* const string);
|
| +
|
| + Node* RegExpPrototypeExecBodyWithoutResult(Node* const context,
|
| + Node* const regexp,
|
| + Node* const string,
|
| + Label* if_didnotmatch,
|
| + const bool is_fastpath);
|
| + Node* RegExpPrototypeExecBody(Node* const context, Node* const regexp,
|
| + Node* const string, const bool is_fastpath);
|
| +
|
| + Node* ThrowIfNotJSReceiver(Node* context, Node* maybe_receiver,
|
| + MessageTemplate::Template msg_template,
|
| + char const* method_name);
|
| +
|
| + Node* IsInitialRegExpMap(Node* context, Node* map);
|
| + void BranchIfFastRegExp(Node* context, Node* map, Label* if_isunmodified,
|
| + Label* if_ismodified);
|
| + void BranchIfFastRegExpResult(Node* context, Node* map,
|
| + Label* if_isunmodified, Label* if_ismodified);
|
| +
|
| + Node* FlagsGetter(Node* const context, Node* const regexp, bool is_fastpath);
|
| +
|
| + Node* FastFlagGetter(Node* const regexp, JSRegExp::Flag flag);
|
| + Node* SlowFlagGetter(Node* const context, Node* const regexp,
|
| + JSRegExp::Flag flag);
|
| + Node* FlagGetter(Node* const context, Node* const regexp, JSRegExp::Flag flag,
|
| + bool is_fastpath);
|
| + void FlagGetter(JSRegExp::Flag flag, v8::Isolate::UseCounterFeature counter,
|
| + const char* method_name);
|
| +
|
| + Node* IsRegExp(Node* const context, Node* const maybe_receiver);
|
| + Node* RegExpInitialize(Node* const context, Node* const regexp,
|
| + Node* const maybe_pattern, Node* const maybe_flags);
|
| +
|
| + Node* RegExpExec(Node* context, Node* regexp, Node* string);
|
| +
|
| + Node* AdvanceStringIndex(Node* const string, Node* const index,
|
| + Node* const is_unicode);
|
| +
|
| + void RegExpPrototypeMatchBody(Node* const context, Node* const regexp,
|
| + Node* const string, const bool is_fastpath);
|
| +
|
| + void RegExpPrototypeSearchBodyFast(Node* const context, Node* const regexp,
|
| + Node* const string);
|
| + void RegExpPrototypeSearchBodySlow(Node* const context, Node* const regexp,
|
| + Node* const string);
|
| +
|
| + void RegExpPrototypeSplitBody(Node* const context, Node* const regexp,
|
| + Node* const string, Node* const limit);
|
| +
|
| + Node* ReplaceGlobalCallableFastPath(Node* context, Node* regexp, Node* string,
|
| + Node* replace_callable);
|
| + Node* ReplaceSimpleStringFastPath(Node* context, Node* regexp, Node* string,
|
| + Node* replace_string);
|
| +};
|
|
|
| // -----------------------------------------------------------------------------
|
| // ES6 section 21.2 RegExp Objects
|
|
|