| Index: src/x64/regexp-macro-assembler-x64.cc
|
| ===================================================================
|
| --- src/x64/regexp-macro-assembler-x64.cc (revision 7267)
|
| +++ src/x64/regexp-macro-assembler-x64.cc (working copy)
|
| @@ -68,6 +68,7 @@
|
| *
|
| * The stack will have the following content, in some order, indexable from the
|
| * frame pointer (see, e.g., kStackHighEnd):
|
| + * - Isolate* isolate (Address of the current isolate)
|
| * - direct_call (if 1, direct call from JavaScript code, if 0 call
|
| * through the runtime system)
|
| * - stack_area_base (High end of the memory area to use as
|
| @@ -954,10 +955,11 @@
|
|
|
| CodeDesc code_desc;
|
| masm_->GetCode(&code_desc);
|
| - Handle<Code> code = Factory::NewCode(code_desc,
|
| - Code::ComputeFlags(Code::REGEXP),
|
| - masm_->CodeObject());
|
| - PROFILE(RegExpCodeCreateEvent(*code, *source));
|
| + Isolate* isolate = ISOLATE;
|
| + Handle<Code> code = isolate->factory()->NewCode(
|
| + code_desc, Code::ComputeFlags(Code::REGEXP),
|
| + masm_->CodeObject());
|
| + PROFILE(isolate, RegExpCodeCreateEvent(*code, *source));
|
| return Handle<Object>::cast(code);
|
| }
|
|
|
| @@ -1141,8 +1143,10 @@
|
| int RegExpMacroAssemblerX64::CheckStackGuardState(Address* return_address,
|
| Code* re_code,
|
| Address re_frame) {
|
| - if (StackGuard::IsStackOverflow()) {
|
| - Top::StackOverflow();
|
| + Isolate* isolate = frame_entry<Isolate*>(re_frame, kIsolate);
|
| + ASSERT(isolate == Isolate::Current());
|
| + if (isolate->stack_guard()->IsStackOverflow()) {
|
| + isolate->StackOverflow();
|
| return EXCEPTION;
|
| }
|
|
|
|
|