Reviewers: ager,

http://codereview.chromium.org/6085010/diff/1/src/arm/code-stubs-arm.cc
File src/arm/code-stubs-arm.cc (right):

http://codereview.chromium.org/6085010/diff/1/src/arm/code-stubs-arm.cc#newcode3019
src/arm/code-stubs-arm.cc:3019: __ b(hs, &slow);
hs and cs are the same - I find hs more readable in this case.

Description:
ARM: Fix a bug in the lithium arguments support

Got the comparison wrong and fortot to actually set the flags.

Please review this at http://codereview.chromium.org/6085010/

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
  M     src/arm/code-stubs-arm.cc
  M     src/arm/lithium-codegen-arm.cc


Index: src/arm/code-stubs-arm.cc
===================================================================
--- src/arm/code-stubs-arm.cc   (revision 6189)
+++ src/arm/code-stubs-arm.cc   (working copy)
@@ -3016,7 +3016,7 @@
   // through register r0. Use unsigned comparison to get negative
   // check for free.
   __ cmp(r1, r0);
-  __ b(cs, &slow);
+  __ b(hs, &slow);

   // Read the argument from the stack and return it.
   __ sub(r3, r0, r1);
Index: src/arm/lithium-codegen-arm.cc
===================================================================
--- src/arm/lithium-codegen-arm.cc      (revision 6189)
+++ src/arm/lithium-codegen-arm.cc      (working copy)
@@ -1593,8 +1593,10 @@
   Operand index = ToOperand(instr->index());
   Register result = ToRegister(instr->result());

-  __ sub(length, length, index);
-  DeoptimizeIf(hi, instr->environment());
+  // Bailout index is not a valid argument index. Use unsigned check to get
+  // negative check for free.
+  __ sub(length, length, index, SetCC);
+  DeoptimizeIf(ls, instr->environment());

   // There are two words between the frame pointer and the last argument.
   // Subtracting from length accounts for one of them add one more.


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to