| 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) {
|
|
|