| Index: src/x64/lithium-x64.cc
|
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
|
| index bdda1fa12f1bce40b418c0229806570d4e030250..4535fc8ebb7596d786a9c426d0fb2def05cf1a35 100644
|
| --- a/src/x64/lithium-x64.cc
|
| +++ b/src/x64/lithium-x64.cc
|
| @@ -1043,8 +1043,9 @@ LInstruction* LChunkBuilder::DoApplyArguments(HApplyArguments* instr) {
|
|
|
|
|
| LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) {
|
| - Abort("Unimplemented: %s", "DoPushArgument");
|
| - return NULL;
|
| + ++argument_count_;
|
| + LOperand* argument = UseOrConstant(instr->argument());
|
| + return new LPushArgument(argument);
|
| }
|
|
|
|
|
| @@ -1097,8 +1098,10 @@ LInstruction* LChunkBuilder::DoCallKnownGlobal(HCallKnownGlobal* instr) {
|
|
|
|
|
| LInstruction* LChunkBuilder::DoCallNew(HCallNew* instr) {
|
| - Abort("Unimplemented: %s", "DoCallNew");
|
| - return NULL;
|
| + LOperand* constructor = UseFixed(instr->constructor(), rdi);
|
| + argument_count_ -= instr->argument_count();
|
| + LCallNew* result = new LCallNew(constructor);
|
| + return MarkAsCall(DefineFixed(result, rax), instr);
|
| }
|
|
|
|
|
| @@ -1394,8 +1397,8 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
|
|
|
|
|
| LInstruction* LChunkBuilder::DoCheckNonSmi(HCheckNonSmi* instr) {
|
| - Abort("Unimplemented: %s", "DoCheckNonSmi");
|
| - return NULL;
|
| + LOperand* value = UseRegisterAtStart(instr->value());
|
| + return AssignEnvironment(new LCheckSmi(value, zero));
|
| }
|
|
|
|
|
| @@ -1412,8 +1415,8 @@ LInstruction* LChunkBuilder::DoCheckPrototypeMaps(HCheckPrototypeMaps* instr) {
|
|
|
|
|
| LInstruction* LChunkBuilder::DoCheckSmi(HCheckSmi* instr) {
|
| - Abort("Unimplemented: %s", "DoCheckSmi");
|
| - return NULL;
|
| + LOperand* value = UseRegisterAtStart(instr->value());
|
| + return AssignEnvironment(new LCheckSmi(value, not_zero));
|
| }
|
|
|
|
|
| @@ -1424,8 +1427,9 @@ LInstruction* LChunkBuilder::DoCheckFunction(HCheckFunction* instr) {
|
|
|
|
|
| LInstruction* LChunkBuilder::DoCheckMap(HCheckMap* instr) {
|
| - Abort("Unimplemented: %s", "DoCheckMap");
|
| - return NULL;
|
| + LOperand* value = UseRegisterAtStart(instr->value());
|
| + LCheckMap* result = new LCheckMap(value);
|
| + return AssignEnvironment(result);
|
| }
|
|
|
|
|
| @@ -1453,8 +1457,10 @@ LInstruction* LChunkBuilder::DoConstant(HConstant* instr) {
|
|
|
|
|
| LInstruction* LChunkBuilder::DoLoadGlobal(HLoadGlobal* instr) {
|
| - Abort("Unimplemented: %s", "DoLoadGlobal");
|
| - return NULL;
|
| + LLoadGlobal* result = new LLoadGlobal;
|
| + return instr->check_hole_value()
|
| + ? AssignEnvironment(DefineAsRegister(result))
|
| + : DefineAsRegister(result);
|
| }
|
|
|
|
|
|
|