Index: src/x64/lithium-x64.cc |
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc |
index 2dd5cf7337c1b7486540a044ee93d3708270d191..bf5547c87f1e18abf036bd19de0edc4f33a2f782 100644 |
--- a/src/x64/lithium-x64.cc |
+++ b/src/x64/lithium-x64.cc |
@@ -1079,8 +1079,8 @@ LInstruction* LChunkBuilder::DoCallKeyed(HCallKeyed* instr) { |
LInstruction* LChunkBuilder::DoCallNamed(HCallNamed* instr) { |
- Abort("Unimplemented: %s", "DoCallNamed"); |
- return NULL; |
+ argument_count_ -= instr->argument_count(); |
+ return MarkAsCall(DefineFixed(new LCallNamed, rax), instr); |
} |
@@ -1091,8 +1091,8 @@ LInstruction* LChunkBuilder::DoCallGlobal(HCallGlobal* instr) { |
LInstruction* LChunkBuilder::DoCallKnownGlobal(HCallKnownGlobal* instr) { |
- Abort("Unimplemented: %s", "DoCallKnownGlobal"); |
- return NULL; |
+ argument_count_ -= instr->argument_count(); |
+ return MarkAsCall(DefineFixed(new LCallKnownGlobal, rax), instr); |
} |
@@ -1305,8 +1305,8 @@ LInstruction* LChunkBuilder::DoClassOfTest(HClassOfTest* instr) { |
LInstruction* LChunkBuilder::DoJSArrayLength(HJSArrayLength* instr) { |
- Abort("Unimplemented: %s", "DoJSArrayLength"); |
- return NULL; |
+ LOperand* array = UseRegisterAtStart(instr->value()); |
+ return DefineAsRegister(new LJSArrayLength(array)); |
} |
@@ -1402,8 +1402,9 @@ LInstruction* LChunkBuilder::DoCheckNonSmi(HCheckNonSmi* instr) { |
LInstruction* LChunkBuilder::DoCheckInstanceType(HCheckInstanceType* instr) { |
- Abort("Unimplemented: %s", "DoCheckInstanceType"); |
- return NULL; |
+ LOperand* value = UseRegisterAtStart(instr->value()); |
+ LCheckInstanceType* result = new LCheckInstanceType(value); |
+ return AssignEnvironment(result); |
} |
@@ -1465,7 +1466,10 @@ LInstruction* LChunkBuilder::DoLoadGlobal(HLoadGlobal* instr) { |
LInstruction* LChunkBuilder::DoStoreGlobal(HStoreGlobal* instr) { |
- return new LStoreGlobal(UseRegisterAtStart(instr->value()));} |
+ LStoreGlobal* result = new LStoreGlobal(UseRegister(instr->value()), |
+ TempRegister()); |
+ return instr->check_hole_value() ? AssignEnvironment(result) : result; |
+} |
LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { |