Index: src/x64/lithium-x64.cc |
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc |
index b9bc6e0f0327f03a8f8fba70bb79c449417b098e..54097a5174a7d8cd0d3ca2e0ffdb447d3c715bf2 100644 |
--- a/src/x64/lithium-x64.cc |
+++ b/src/x64/lithium-x64.cc |
@@ -1092,8 +1092,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); |
} |
@@ -1104,8 +1104,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); |
} |
@@ -1318,8 +1318,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)); |
} |
@@ -1422,8 +1422,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); |
} |
@@ -1485,7 +1486,9 @@ 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; |
} |