| Index: src/arm/lithium-arm.cc
|
| diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc
|
| index 22e7e413284ec1a0aba974981cc0fe750f5110e4..cc663e11bdfb50681f9b23380375f0736cc61b68 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 = UseTempRegister(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());
|
|
|