| Index: src/x64/lithium-x64.cc
|
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
|
| index 5b7169b7e9db08b39178c3fac7c10a27698ef419..f0610d4b443e8e25916d40f7f8e5e1bf8a4bc453 100644
|
| --- a/src/x64/lithium-x64.cc
|
| +++ b/src/x64/lithium-x64.cc
|
| @@ -1027,8 +1027,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);
|
| }
|
|
|
|
|
| @@ -1081,8 +1082,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);
|
| }
|
|
|
|
|
| @@ -1378,8 +1381,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));
|
| }
|
|
|
|
|
| @@ -1396,8 +1399,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));
|
| }
|
|
|
|
|
| @@ -1408,8 +1411,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);
|
| }
|
|
|
|
|
| @@ -1437,8 +1441,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);
|
| }
|
|
|
|
|
|
|