| Index: src/x64/lithium-x64.cc
|
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
|
| index b2994cd154c62c03a0f1edc27a5ca733912d6984..5b502a80c91b1ca40226c17d08e2d0786897fe1f 100644
|
| --- a/src/x64/lithium-x64.cc
|
| +++ b/src/x64/lithium-x64.cc
|
| @@ -428,6 +428,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("[");
|
| @@ -1822,6 +1831,18 @@ LInstruction* LChunkBuilder::DoLoadKeyedFastElement(
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoLoadKeyedFastDoubleElement(
|
| + HLoadKeyedFastDoubleElement* instr) {
|
| + ASSERT(instr->representation().IsDouble());
|
| + ASSERT(instr->key()->representation().IsInteger32());
|
| + LOperand* elements = UseRegisterAtStart(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();
|
| @@ -1874,6 +1895,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());
|
|
|