| 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());
|
|
|