Revision: 14779
Author:   [email protected]
Date:     Thu May 23 08:01:17 2013
Log:      Require smi for keyed store to smi.

[email protected]

Review URL: https://chromiumcodereview.appspot.com/15884002
http://code.google.com/p/v8/source/detail?r=14779

Modified:
 /branches/bleeding_edge/src/arm/lithium-arm.cc
 /branches/bleeding_edge/src/hydrogen-instructions.h
 /branches/bleeding_edge/src/ia32/lithium-ia32.cc
 /branches/bleeding_edge/src/x64/lithium-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/lithium-arm.cc      Thu May 23 07:38:39 2013
+++ /branches/bleeding_edge/src/arm/lithium-arm.cc      Thu May 23 08:01:17 2013
@@ -2252,7 +2252,7 @@
       val = UseTempRegister(instr->value());
       key = UseRegisterOrConstantAtStart(instr->key());
     } else {
-      ASSERT(instr->value()->representation().IsTagged());
+      ASSERT(instr->value()->representation().IsSmiOrTagged());
       object = UseTempRegister(instr->elements());
       val = needs_write_barrier ? UseTempRegister(instr->value())
           : UseRegisterAtStart(instr->value());
=======================================
--- /branches/bleeding_edge/src/hydrogen-instructions.h Thu May 23 07:38:39 2013 +++ /branches/bleeding_edge/src/hydrogen-instructions.h Thu May 23 08:01:17 2013
@@ -5723,6 +5723,9 @@
     } else if (IsFastDoubleElementsKind(elements_kind)) {
       SetGVNFlag(kChangesDoubleArrayElements);
       SetFlag(kDeoptimizeOnUndefined);
+    } else if (IsFastSmiElementsKind(elements_kind)) {
+      SetGVNFlag(kChangesArrayElements);
+      SetFlag(kDeoptimizeOnUndefined);
     } else {
       SetGVNFlag(kChangesArrayElements);
     }
@@ -5750,6 +5753,10 @@
     if (IsDoubleOrFloatElementsKind(elements_kind())) {
       return Representation::Double();
     }
+
+    if (IsFastSmiElementsKind(elements_kind())) {
+      return Representation::Smi();
+    }

     return is_external() ? Representation::Integer32()
                          : Representation::Tagged();
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Thu May 23 07:38:39 2013 +++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Thu May 23 08:01:17 2013
@@ -2344,7 +2344,7 @@
       LOperand* key = UseRegisterOrConstantAtStart(instr->key());
       return new(zone()) LStoreKeyed(object, key, val);
     } else {
-      ASSERT(instr->value()->representation().IsTagged());
+      ASSERT(instr->value()->representation().IsSmiOrTagged());
       bool needs_write_barrier = instr->NeedsWriteBarrier();

       LOperand* obj = UseRegister(instr->elements());
=======================================
--- /branches/bleeding_edge/src/x64/lithium-x64.cc      Thu May 23 07:38:39 2013
+++ /branches/bleeding_edge/src/x64/lithium-x64.cc      Thu May 23 08:01:17 2013
@@ -2172,7 +2172,7 @@
       key = clobbers_key ? UseTempRegister(instr->key())
           : UseRegisterOrConstantAtStart(instr->key());
     } else {
-      ASSERT(instr->value()->representation().IsTagged());
+      ASSERT(instr->value()->representation().IsSmiOrTagged());
       object = UseTempRegister(instr->elements());
       if (needs_write_barrier) {
         val = UseTempRegister(instr->value());

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to