Once I caught up with emails it is all self-explanatory. Please ignore, -Ivan
On Fri, Sep 26, 2008 at 15:02, Ivan Posva <[EMAIL PROTECTED]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---