Reviewers: bak, Description: Stack checks in generated code for function apply is now controlled by the check-stack flag. Changed the condition code from greater to above_equal as the SP should be unsigned (this matches the stack check in function entry).
Please review this at http://codereview.chromium.org/4296 Affected files: M src/builtins-ia32.cc Index: src/builtins-ia32.cc =================================================================== --- src/builtins-ia32.cc (revision 380) +++ src/builtins-ia32.cc (working copy) @@ -517,21 +517,23 @@ // Eagerly check for stack-overflow before pushing all the arguments // to the stack. - Label okay; - __ lea(ecx, Operand(esp, -3 * kPointerSize)); // receiver, limit, index - __ mov(edx, Operand(eax)); - __ shl(edx, kPointerSizeLog2 - kSmiTagSize); - __ sub(ecx, Operand(edx)); - ExternalReference stack_guard_limit_address = - ExternalReference::address_of_stack_guard_limit(); - __ cmp(ecx, Operand::StaticVariable(stack_guard_limit_address)); - __ j(greater, &okay, taken); + if (true && FLAG_check_stack) { + Label okay; + __ lea(ecx, Operand(esp, -3 * kPointerSize)); // receiver, limit, index + __ mov(edx, Operand(eax)); + __ shl(edx, kPointerSizeLog2 - kSmiTagSize); + __ sub(ecx, Operand(edx)); + ExternalReference stack_guard_limit_address = + ExternalReference::address_of_stack_guard_limit(); + __ cmp(ecx, Operand::StaticVariable(stack_guard_limit_address)); + __ j(above_equal, &okay, taken); - // Too bad: Out of stack space. - __ push(Operand(ebp, 4 * kPointerSize)); // push this - __ push(eax); - __ InvokeBuiltin(Builtins::APPLY_OVERFLOW, CALL_FUNCTION); - __ bind(&okay); + // Too bad: Out of stack space. + __ push(Operand(ebp, 4 * kPointerSize)); // push this + __ push(eax); + __ InvokeBuiltin(Builtins::APPLY_OVERFLOW, CALL_FUNCTION); + __ bind(&okay); + } // Push current index and limit. const int kLimitOffset = --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
