| Index: src/jsregexp.cc
|
| diff --git a/src/jsregexp.cc b/src/jsregexp.cc
|
| index cd51db80a4ec3e4897d410afc44ed6d67c805531..bf8e00a0fef53dccdfaa56f56d575926019f26c7 100644
|
| --- a/src/jsregexp.cc
|
| +++ b/src/jsregexp.cc
|
| @@ -231,14 +231,13 @@ Handle<Object> RegExpImpl::Compile(Handle<JSRegExp> re,
|
| Handle<Object> RegExpImpl::Exec(Handle<JSRegExp> regexp,
|
| Handle<String> subject,
|
| int index,
|
| - Handle<JSArray> last_match_info,
|
| - Zone* zone) {
|
| + Handle<JSArray> last_match_info) {
|
| switch (regexp->TypeTag()) {
|
| case JSRegExp::ATOM:
|
| return AtomExec(regexp, subject, index, last_match_info);
|
| case JSRegExp::IRREGEXP: {
|
| Handle<Object> result =
|
| - IrregexpExec(regexp, subject, index, last_match_info, zone);
|
| + IrregexpExec(regexp, subject, index, last_match_info);
|
| ASSERT(!result.is_null() ||
|
| regexp->GetIsolate()->has_pending_exception());
|
| return result;
|
| @@ -345,8 +344,7 @@ Handle<Object> RegExpImpl::AtomExec(Handle<JSRegExp> re,
|
| // If compilation fails, an exception is thrown and this function
|
| // returns false.
|
| bool RegExpImpl::EnsureCompiledIrregexp(
|
| - Handle<JSRegExp> re, Handle<String> sample_subject, bool is_ascii,
|
| - Zone* zone) {
|
| + Handle<JSRegExp> re, Handle<String> sample_subject, bool is_ascii) {
|
| Object* compiled_code = re->DataAt(JSRegExp::code_index(is_ascii));
|
| #ifdef V8_INTERPRETED_REGEXP
|
| if (compiled_code->IsByteArray()) return true;
|
| @@ -362,7 +360,7 @@ bool RegExpImpl::EnsureCompiledIrregexp(
|
| ASSERT(compiled_code->IsSmi());
|
| return true;
|
| }
|
| - return CompileIrregexp(re, sample_subject, is_ascii, zone);
|
| + return CompileIrregexp(re, sample_subject, is_ascii);
|
| }
|
|
|
|
|
| @@ -384,8 +382,7 @@ static bool CreateRegExpErrorObjectAndThrow(Handle<JSRegExp> re,
|
|
|
| bool RegExpImpl::CompileIrregexp(Handle<JSRegExp> re,
|
| Handle<String> sample_subject,
|
| - bool is_ascii,
|
| - Zone* zone) {
|
| + bool is_ascii) {
|
| // Compile the RegExp.
|
| Isolate* isolate = re->GetIsolate();
|
| ZoneScope zone_scope(isolate, DELETE_ON_EXIT);
|
| @@ -437,7 +434,7 @@ bool RegExpImpl::CompileIrregexp(Handle<JSRegExp> re,
|
| pattern,
|
| sample_subject,
|
| is_ascii,
|
| - zone);
|
| + isolate->zone());
|
| if (result.error_message != NULL) {
|
| // Unable to compile regexp.
|
| Handle<String> error_message =
|
| @@ -502,13 +499,12 @@ void RegExpImpl::IrregexpInitialize(Handle<JSRegExp> re,
|
|
|
|
|
| int RegExpImpl::IrregexpPrepare(Handle<JSRegExp> regexp,
|
| - Handle<String> subject,
|
| - Zone* zone) {
|
| + Handle<String> subject) {
|
| if (!subject->IsFlat()) FlattenString(subject);
|
|
|
| // Check the asciiness of the underlying storage.
|
| bool is_ascii = subject->IsAsciiRepresentationUnderneath();
|
| - if (!EnsureCompiledIrregexp(regexp, subject, is_ascii, zone)) return -1;
|
| + if (!EnsureCompiledIrregexp(regexp, subject, is_ascii)) return -1;
|
|
|
| #ifdef V8_INTERPRETED_REGEXP
|
| // Byte-code regexp needs space allocated for all its registers.
|
| @@ -541,8 +537,7 @@ int RegExpImpl::IrregexpExecRaw(
|
| Handle<JSRegExp> regexp,
|
| Handle<String> subject,
|
| int index,
|
| - Vector<int> output,
|
| - Zone* zone) {
|
| + Vector<int> output) {
|
| Isolate* isolate = regexp->GetIsolate();
|
|
|
| Handle<FixedArray> irregexp(FixedArray::cast(regexp->data()), isolate);
|
| @@ -556,7 +551,7 @@ int RegExpImpl::IrregexpExecRaw(
|
| #ifndef V8_INTERPRETED_REGEXP
|
| ASSERT(output.length() >= (IrregexpNumberOfCaptures(*irregexp) + 1) * 2);
|
| do {
|
| - EnsureCompiledIrregexp(regexp, subject, is_ascii, zone);
|
| + EnsureCompiledIrregexp(regexp, subject, is_ascii);
|
| Handle<Code> code(IrregexpNativeCode(*irregexp, is_ascii), isolate);
|
| NativeRegExpMacroAssembler::Result res =
|
| NativeRegExpMacroAssembler::Match(code,
|
| @@ -582,7 +577,7 @@ int RegExpImpl::IrregexpExecRaw(
|
| // the, potentially, different subject (the string can switch between
|
| // being internal and external, and even between being ASCII and UC16,
|
| // but the characters are always the same).
|
| - IrregexpPrepare(regexp, subject, zone);
|
| + IrregexpPrepare(regexp, subject);
|
| is_ascii = subject->IsAsciiRepresentationUnderneath();
|
| } while (true);
|
| UNREACHABLE();
|
| @@ -617,8 +612,7 @@ int RegExpImpl::IrregexpExecRaw(
|
| Handle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> jsregexp,
|
| Handle<String> subject,
|
| int previous_index,
|
| - Handle<JSArray> last_match_info,
|
| - Zone* zone) {
|
| + Handle<JSArray> last_match_info) {
|
| Isolate* isolate = jsregexp->GetIsolate();
|
| ASSERT_EQ(jsregexp->TypeTag(), JSRegExp::IRREGEXP);
|
|
|
| @@ -632,7 +626,7 @@ Handle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> jsregexp,
|
| }
|
| #endif
|
| #endif
|
| - int required_registers = RegExpImpl::IrregexpPrepare(jsregexp, subject, zone);
|
| + int required_registers = RegExpImpl::IrregexpPrepare(jsregexp, subject);
|
| if (required_registers < 0) {
|
| // Compiling failed with an exception.
|
| ASSERT(isolate->has_pending_exception());
|
| @@ -643,8 +637,7 @@ Handle<Object> RegExpImpl::IrregexpExec(Handle<JSRegExp> jsregexp,
|
|
|
| int res = RegExpImpl::IrregexpExecRaw(jsregexp, subject, previous_index,
|
| Vector<int>(registers.vector(),
|
| - registers.length()),
|
| - zone);
|
| + registers.length()));
|
| if (res == RE_SUCCESS) {
|
| int capture_register_count =
|
| (IrregexpNumberOfCaptures(FixedArray::cast(jsregexp->data())) + 1) * 2;
|
| @@ -5987,7 +5980,7 @@ RegExpEngine::CompilationResult RegExpEngine::Compile(
|
| #else // V8_INTERPRETED_REGEXP
|
| // Interpreted regexp implementation.
|
| EmbeddedVector<byte, 1024> codes;
|
| - RegExpMacroAssemblerIrregexp macro_assembler(codes);
|
| + RegExpMacroAssemblerIrregexp macro_assembler(codes, zone);
|
| #endif // V8_INTERPRETED_REGEXP
|
|
|
| // Inserted here, instead of in Assembler, because it depends on information
|
|
|