Soren, Contrary to your commit comment you did not change the greater to above_equal. Any reason for your change of heart?
Thanks, -Ivan On Fri, Sep 26, 2008 at 12:29, <[EMAIL PROTECTED]> wrote: > > Author: [EMAIL PROTECTED] > Date: Fri Sep 26 03:27:39 2008 > New Revision: 384 > > Modified: > branches/bleeding_edge/src/builtins-ia32.cc > > Log: > 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). > Review URL: http://codereview.chromium.org/4296 > > Modified: branches/bleeding_edge/src/builtins-ia32.cc > ============================================================================== > --- branches/bleeding_edge/src/builtins-ia32.cc (original) > +++ branches/bleeding_edge/src/builtins-ia32.cc Fri Sep 26 03:27:39 2008 > @@ -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 (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(greater, &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 v8-dev@googlegroups.com http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---