Index: src/x64/lithium-x64.cc |
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc |
index a6afbf722efeab935983a1c7dc6108ba8a054b3d..d83ff1d4fe5d16f67d86b3305f641a56c490dd4c 100644 |
--- a/src/x64/lithium-x64.cc |
+++ b/src/x64/lithium-x64.cc |
@@ -1106,14 +1106,12 @@ LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { |
LInstruction* LChunkBuilder::DoArgumentsLength(HArgumentsLength* length) { |
- Abort("Unimplemented: %s", "DoArgumentsLength"); |
- return NULL; |
+ return DefineAsRegister(new LArgumentsLength(Use(length->value()))); |
} |
LInstruction* LChunkBuilder::DoArgumentsElements(HArgumentsElements* elems) { |
- Abort("Unimplemented: %s", "DoArgumentsElements"); |
- return NULL; |
+ return DefineAsRegister(new LArgumentsElements); |
} |
@@ -1335,7 +1333,7 @@ LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { |
} |
return result; |
} else if (instr->representation().IsDouble()) { |
- Abort("Unimplemented: %s", "DoAdd on Doubles"); |
+ return DoArithmeticD(Token::ADD, instr); |
} else { |
ASSERT(instr->representation().IsTagged()); |
return DoArithmeticT(Token::ADD, instr); |
@@ -1742,8 +1740,8 @@ LInstruction* LChunkBuilder::DoStringCharCodeAt(HStringCharCodeAt* instr) { |
LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { |
- Abort("Unimplemented: %s", "DoStringLength"); |
- return NULL; |
+ LOperand* string = UseRegisterAtStart(instr->value()); |
+ return DefineAsRegister(new LStringLength(string)); |
} |
@@ -1805,8 +1803,11 @@ LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) { |
LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { |
- Abort("Unimplemented: %s", "DoAccessArgumentsAt"); |
- return NULL; |
+ LOperand* arguments = UseRegister(instr->arguments()); |
+ LOperand* length = UseTempRegister(instr->length()); |
+ LOperand* index = Use(instr->index()); |
+ LAccessArgumentsAt* result = new LAccessArgumentsAt(arguments, length, index); |
+ return AssignEnvironment(DefineAsRegister(result)); |
} |