[v8] r12623 committed - Fix ARM bug introduced in r12604 that caused crashes on ARM...

6 views
Skip to first unread message

codesite...@google.com

unread,
Sep 27, 2012, 3:46:05 AM9/27/12
to v8-...@googlegroups.com
Revision: 12623
Author: erik....@gmail.com
Date: Thu Sep 27 00:45:49 2012
Log: Fix ARM bug introduced in r12604 that caused crashes on ARM
on crypto-md5 from SunSpider. Bug=152402
Review URL: https://chromiumcodereview.appspot.com/10991045
http://code.google.com/p/v8/source/detail?r=12623

Modified:
/branches/bleeding_edge/src/arm/code-stubs-arm.cc
/branches/bleeding_edge/src/arm/ic-arm.cc
/branches/bleeding_edge/src/arm/macro-assembler-arm.cc
/branches/bleeding_edge/src/arm/macro-assembler-arm.h
/branches/bleeding_edge/src/arm/stub-cache-arm.cc

=======================================
--- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Wed Sep 26 04:35:42
2012
+++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Thu Sep 27 00:45:49
2012
@@ -7561,7 +7561,9 @@
// Array literal has ElementsKind of FAST_DOUBLE_ELEMENTS.
__ bind(&double_elements);
__ ldr(r5, FieldMemOperand(r1, JSObject::kElementsOffset));
- __ StoreNumberToDoubleElements(r0, r3, r1, r5, r6, r7, r9, r2,
+ __ StoreNumberToDoubleElements(r0, r3, r1,
+ // Overwrites all regs after this.
+ r5, r6, r7, r9, r2,
&slow_elements);
__ Ret();
}
=======================================
--- /branches/bleeding_edge/src/arm/ic-arm.cc Tue Sep 25 06:35:42 2012
+++ /branches/bleeding_edge/src/arm/ic-arm.cc Thu Sep 27 00:45:49 2012
@@ -1380,8 +1380,8 @@
__ StoreNumberToDoubleElements(value,
key,
receiver,
- elements,
- r3,
+ elements, // Overwritten.
+ r3, // Scratch regs...
r4,
r5,
r6,
=======================================
--- /branches/bleeding_edge/src/arm/macro-assembler-arm.cc Tue Sep 25
07:32:07 2012
+++ /branches/bleeding_edge/src/arm/macro-assembler-arm.cc Thu Sep 27
00:45:49 2012
@@ -1988,7 +1988,7 @@
destination = FloatingPointHelper::kCoreRegisters;
}

- Register untagged_value = receiver_reg;
+ Register untagged_value = elements_reg;
SmiUntag(untagged_value, value_reg);
FloatingPointHelper::ConvertIntToDouble(this,
untagged_value,
=======================================
--- /branches/bleeding_edge/src/arm/macro-assembler-arm.h Tue Sep 25
07:32:07 2012
+++ /branches/bleeding_edge/src/arm/macro-assembler-arm.h Thu Sep 27
00:45:49 2012
@@ -816,6 +816,7 @@
void StoreNumberToDoubleElements(Register value_reg,
Register key_reg,
Register receiver_reg,
+ // All regs below here overwritten.
Register elements_reg,
Register scratch1,
Register scratch2,
=======================================
--- /branches/bleeding_edge/src/arm/stub-cache-arm.cc Fri Sep 7 02:01:54
2012
+++ /branches/bleeding_edge/src/arm/stub-cache-arm.cc Thu Sep 27 00:45:49
2012
@@ -4686,6 +4686,7 @@
__ StoreNumberToDoubleElements(value_reg,
key_reg,
receiver_reg,
+ // All registers after this are
overwritten.
elements_reg,
scratch1,
scratch2,
Reply all
Reply to author
Forward
0 new messages