Index: src/arm/regexp-macro-assembler-arm.cc |
=================================================================== |
--- src/arm/regexp-macro-assembler-arm.cc (revision 4395) |
+++ src/arm/regexp-macro-assembler-arm.cc (working copy) |
@@ -611,7 +611,6 @@ |
__ add(frame_pointer(), sp, Operand(4 * kPointerSize)); |
__ push(r0); // Make room for "position - 1" constant (value is irrelevant). |
__ push(r0); // Make room for "at start" constant (value is irrelevant). |
- |
// Check if we have space on the stack for registers. |
Label stack_limit_hit; |
Label stack_ok; |
@@ -1001,6 +1000,12 @@ |
// If not real stack overflow the stack guard was used to interrupt |
// execution for another purpose. |
+ // If this is a direct call from JavaScript retry the RegExp forcing the call |
+ // through the runtime system. Currently the direct call cannot handle a GC. |
+ if (frame_entry<int>(re_frame, kDirectCall) == 1) { |
+ return RETRY; |
+ } |
+ |
// Prepare for possible GC. |
HandleScope handles; |
Handle<Code> code_handle(re_code); |