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.