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; |
} |