Index: src/ia32/regexp-macro-assembler-ia32.cc |
=================================================================== |
--- src/ia32/regexp-macro-assembler-ia32.cc (revision 2523) |
+++ src/ia32/regexp-macro-assembler-ia32.cc (working copy) |
@@ -634,11 +634,9 @@ |
__ push(Immediate(0)); // Make room for "input start - 1" constant. |
// Check if we have space on the stack for registers. |
- Label retry_stack_check; |
Label stack_limit_hit; |
Label stack_ok; |
- __ bind(&retry_stack_check); |
ExternalReference stack_guard_limit = |
ExternalReference::address_of_stack_guard_limit(); |
__ mov(ecx, esp); |
@@ -658,10 +656,7 @@ |
CallCheckStackGuardState(ebx); |
__ or_(eax, Operand(eax)); |
// If returned value is non-zero, we exit with the returned value as result. |
- // Otherwise it was a preemption and we just check the limit again. |
- __ j(equal, &retry_stack_check); |
- // Return value was non-zero. Exit with exception or retry. |
- __ jmp(&exit_label_); |
+ __ j(not_zero, &exit_label_); |
__ bind(&stack_ok); |
@@ -762,19 +757,11 @@ |
__ push(backtrack_stackpointer()); |
__ push(edi); |
- Label retry; |
- |
- __ bind(&retry); |
CallCheckStackGuardState(ebx); |
__ or_(eax, Operand(eax)); |
// If returning non-zero, we should end execution with the given |
// result as return value. |
__ j(not_zero, &exit_label_); |
- // Check if we are still preempted. |
- ExternalReference stack_guard_limit = |
- ExternalReference::address_of_stack_guard_limit(); |
- __ cmp(esp, Operand::StaticVariable(stack_guard_limit)); |
- __ j(below_equal, &retry); |
__ pop(edi); |
__ pop(backtrack_stackpointer()); |