| Index: src/regexp/jsregexp.cc
|
| diff --git a/src/regexp/jsregexp.cc b/src/regexp/jsregexp.cc
|
| index e81e7619c083c75f4bf16d26fd057bb1d4876623..dcc6d52e2f6135fb85e189730b8472c64a8b7364 100644
|
| --- a/src/regexp/jsregexp.cc
|
| +++ b/src/regexp/jsregexp.cc
|
| @@ -10,6 +10,7 @@
|
| #include "src/base/platform/platform.h"
|
| #include "src/compilation-cache.h"
|
| #include "src/compiler.h"
|
| +#include "src/elements.h"
|
| #include "src/execution.h"
|
| #include "src/factory.h"
|
| #include "src/isolate-inl.h"
|
| @@ -17,9 +18,9 @@
|
| #include "src/ostreams.h"
|
| #include "src/regexp/interpreter-irregexp.h"
|
| #include "src/regexp/jsregexp-inl.h"
|
| -#include "src/regexp/regexp-macro-assembler.h"
|
| #include "src/regexp/regexp-macro-assembler-irregexp.h"
|
| #include "src/regexp/regexp-macro-assembler-tracer.h"
|
| +#include "src/regexp/regexp-macro-assembler.h"
|
| #include "src/regexp/regexp-parser.h"
|
| #include "src/regexp/regexp-stack.h"
|
| #include "src/runtime/runtime.h"
|
| @@ -193,11 +194,9 @@ MaybeHandle<Object> RegExpImpl::Compile(Handle<JSRegExp> re,
|
| return re;
|
| }
|
|
|
| -
|
| MaybeHandle<Object> RegExpImpl::Exec(Handle<JSRegExp> regexp,
|
| - Handle<String> subject,
|
| - int index,
|
| - Handle<JSArray> last_match_info) {
|
| + Handle<String> subject, int index,
|
| + Handle<JSObject> last_match_info) {
|
| switch (regexp->TypeTag()) {
|
| case JSRegExp::ATOM:
|
| return AtomExec(regexp, subject, index, last_match_info);
|
| @@ -290,11 +289,9 @@ int RegExpImpl::AtomExecRaw(Handle<JSRegExp> regexp,
|
| return output_size / 2;
|
| }
|
|
|
| -
|
| -Handle<Object> RegExpImpl::AtomExec(Handle<JSRegExp> re,
|
| - Handle<String> subject,
|
| +Handle<Object> RegExpImpl::AtomExec(Handle<JSRegExp> re, Handle<String> subject,
|
| int index,
|
| - Handle<JSArray> last_match_info) {
|
| + Handle<JSObject> last_match_info) {
|
| Isolate* isolate = re->GetIsolate();
|
|
|
| static const int kNumRegisters = 2;
|
| @@ -571,11 +568,10 @@ int RegExpImpl::IrregexpExecRaw(Handle<JSRegExp> regexp,
|
| #endif // V8_INTERPRETED_REGEXP
|
| }
|
|
|
| -
|
| MaybeHandle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> regexp,
|
| Handle<String> subject,
|
| int previous_index,
|
| - Handle<JSArray> last_match_info) {
|
| + Handle<JSObject> last_match_info) {
|
| Isolate* isolate = regexp->GetIsolate();
|
| DCHECK_EQ(regexp->TypeTag(), JSRegExp::IRREGEXP);
|
|
|
| @@ -619,18 +615,16 @@ MaybeHandle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> regexp,
|
| return isolate->factory()->null_value();
|
| }
|
|
|
| -
|
| -static void EnsureSize(Handle<JSArray> array, uint32_t minimum_size) {
|
| +static void EnsureSize(Handle<JSObject> array, uint32_t minimum_size) {
|
| if (static_cast<uint32_t>(array->elements()->length()) < minimum_size) {
|
| - JSArray::SetLength(array, minimum_size);
|
| + array->GetElementsAccessor()->GrowCapacityAndConvert(array, minimum_size);
|
| }
|
| }
|
|
|
| -
|
| -Handle<JSArray> RegExpImpl::SetLastMatchInfo(Handle<JSArray> last_match_info,
|
| - Handle<String> subject,
|
| - int capture_count,
|
| - int32_t* match) {
|
| +Handle<JSObject> RegExpImpl::SetLastMatchInfo(Handle<JSObject> last_match_info,
|
| + Handle<String> subject,
|
| + int capture_count,
|
| + int32_t* match) {
|
| DCHECK(last_match_info->HasFastObjectElements());
|
| int capture_register_count = (capture_count + 1) * 2;
|
| EnsureSize(last_match_info, capture_register_count + kLastMatchOverhead);
|
|
|