Reviewers: Vyacheslav Egorov,

Description:
ARM: Fix a crash bug in code for %_IsStringWrapperSafeForDefaultValueOf

Turned out out that the setting of bit Map::kStringWrapperSafeForDefaultValueOf in Map::kStringWrapperSafeForDefaultValueOf was not done on the map but in some
other memory location causing crashes.

[email protected]

BUG=none
TEST=mozilla/data/js1_2/String/slice.js (crashed only on ARM hardware)


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

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

Affected files:
  M src/arm/full-codegen-arm.cc


Index: src/arm/full-codegen-arm.cc
diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
index d1356fa74efb76fca9edb337f83f28a4f327543d..fe0471f5bdf89aee087a8b69734af1fba663b581 100644
--- a/src/arm/full-codegen-arm.cc
+++ b/src/arm/full-codegen-arm.cc
@@ -2595,9 +2595,9 @@ void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(

   // Set the bit in the map to indicate that it has been checked safe for
   // default valueOf and set true result.
-  __ ldrb(r2, FieldMemOperand(r4, Map::kBitField2Offset));
+  __ ldrb(r2, FieldMemOperand(r1, Map::kBitField2Offset));
   __ orr(r2, r2, Operand(1 << Map::kStringWrapperSafeForDefaultValueOf));
-  __ strb(r2, FieldMemOperand(r4, Map::kBitField2Offset));
+  __ strb(r2, FieldMemOperand(r1, Map::kBitField2Offset));
   __ jmp(if_true);

   PrepareForBailoutBeforeSplit(TOS_REG, true, if_true, if_false);


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

Reply via email to