Index: src/arm/lithium-arm.cc |
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc |
index 22e7e413284ec1a0aba974981cc0fe750f5110e4..ea06064e5ebf2a0827594bc1389ee0bf7e7c9112 100644 |
--- a/src/arm/lithium-arm.cc |
+++ b/src/arm/lithium-arm.cc |
@@ -372,6 +372,15 @@ void LStoreKeyedFastElement::PrintDataTo(StringStream* stream) { |
} |
+void LStoreKeyedFastDoubleElement::PrintDataTo(StringStream* stream) { |
+ elements()->PrintTo(stream); |
+ stream->Add("["); |
+ key()->PrintTo(stream); |
+ stream->Add("] <- "); |
+ value()->PrintTo(stream); |
+} |
+ |
+ |
void LStoreKeyedGeneric::PrintDataTo(StringStream* stream) { |
object()->PrintTo(stream); |
stream->Add("["); |
@@ -1844,6 +1853,18 @@ LInstruction* LChunkBuilder::DoLoadKeyedFastElement( |
} |
+LInstruction* LChunkBuilder::DoLoadKeyedFastDoubleElement( |
+ HLoadKeyedFastDoubleElement* instr) { |
+ ASSERT(instr->representation().IsDouble()); |
+ ASSERT(instr->key()->representation().IsInteger32()); |
+ LOperand* elements = UseTempRegister(instr->elements()); |
+ LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
+ LLoadKeyedFastDoubleElement* result = |
+ new LLoadKeyedFastDoubleElement(elements, key); |
+ return AssignEnvironment(DefineAsRegister(result)); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoLoadKeyedSpecializedArrayElement( |
HLoadKeyedSpecializedArrayElement* instr) { |
JSObject::ElementsKind elements_kind = instr->elements_kind(); |
@@ -1897,6 +1918,20 @@ LInstruction* LChunkBuilder::DoStoreKeyedFastElement( |
} |
+LInstruction* LChunkBuilder::DoStoreKeyedFastDoubleElement( |
+ HStoreKeyedFastDoubleElement* instr) { |
+ ASSERT(instr->value()->representation().IsDouble()); |
+ ASSERT(instr->elements()->representation().IsTagged()); |
+ ASSERT(instr->key()->representation().IsInteger32()); |
+ |
+ LOperand* elements = UseRegisterAtStart(instr->elements()); |
+ LOperand* val = UseTempRegister(instr->value()); |
+ LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
+ |
+ return new LStoreKeyedFastDoubleElement(elements, key, val); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoStoreKeyedSpecializedArrayElement( |
HStoreKeyedSpecializedArrayElement* instr) { |
Representation representation(instr->value()->representation()); |