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
-~----------~----~----~----~------~----~------~--~---

Reply via email to