| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 | 805 |
| 806 | 806 |
| 807 LInstruction* LChunkBuilder::DoBoundsCheckBaseIndexInformation( | 807 LInstruction* LChunkBuilder::DoBoundsCheckBaseIndexInformation( |
| 808 HBoundsCheckBaseIndexInformation* instr) { | 808 HBoundsCheckBaseIndexInformation* instr) { |
| 809 UNREACHABLE(); | 809 UNREACHABLE(); |
| 810 return NULL; | 810 return NULL; |
| 811 } | 811 } |
| 812 | 812 |
| 813 | 813 |
| 814 LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { | 814 LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { |
| 815 // TODO(all): Try to improve this, like ARM r17925. | |
| 816 info()->MarkAsRequiresFrame(); | 815 info()->MarkAsRequiresFrame(); |
| 817 LOperand* args = NULL; | 816 LOperand* args = NULL; |
| 818 LOperand* length = NULL; | 817 LOperand* length = NULL; |
| 819 LOperand* index = NULL; | 818 LOperand* index = NULL; |
| 820 LOperand* temp = NULL; | |
| 821 | 819 |
| 822 if (instr->length()->IsConstant() && instr->index()->IsConstant()) { | 820 if (instr->length()->IsConstant() && instr->index()->IsConstant()) { |
| 823 args = UseRegisterAtStart(instr->arguments()); | 821 args = UseRegisterAtStart(instr->arguments()); |
| 824 length = UseConstant(instr->length()); | 822 length = UseConstant(instr->length()); |
| 825 index = UseConstant(instr->index()); | 823 index = UseConstant(instr->index()); |
| 826 } else { | 824 } else { |
| 827 args = UseRegister(instr->arguments()); | 825 args = UseRegister(instr->arguments()); |
| 828 length = UseRegisterAtStart(instr->length()); | 826 length = UseRegisterAtStart(instr->length()); |
| 829 index = UseRegisterOrConstantAtStart(instr->index()); | 827 index = UseRegisterOrConstantAtStart(instr->index()); |
| 830 temp = TempRegister(); | |
| 831 } | 828 } |
| 832 | 829 |
| 833 return DefineAsRegister( | 830 return DefineAsRegister(new(zone()) LAccessArgumentsAt(args, length, index)); |
| 834 new(zone()) LAccessArgumentsAt(args, length, index, temp)); | |
| 835 } | 831 } |
| 836 | 832 |
| 837 | 833 |
| 838 LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { | 834 LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { |
| 839 if (instr->representation().IsSmiOrInteger32()) { | 835 if (instr->representation().IsSmiOrInteger32()) { |
| 840 ASSERT(instr->left()->representation().Equals(instr->representation())); | 836 ASSERT(instr->left()->representation().Equals(instr->representation())); |
| 841 ASSERT(instr->right()->representation().Equals(instr->representation())); | 837 ASSERT(instr->right()->representation().Equals(instr->representation())); |
| 842 LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand()); | 838 LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand()); |
| 843 LOperand* right = | 839 LOperand* right = |
| 844 UseRegisterOrConstantAtStart(instr->BetterRightOperand()); | 840 UseRegisterOrConstantAtStart(instr->BetterRightOperand()); |
| (...skipping 1601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2446 | 2442 |
| 2447 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { | 2443 LInstruction* LChunkBuilder::DoWrapReceiver(HWrapReceiver* instr) { |
| 2448 LOperand* receiver = UseRegister(instr->receiver()); | 2444 LOperand* receiver = UseRegister(instr->receiver()); |
| 2449 LOperand* function = UseRegister(instr->function()); | 2445 LOperand* function = UseRegister(instr->function()); |
| 2450 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); | 2446 LWrapReceiver* result = new(zone()) LWrapReceiver(receiver, function); |
| 2451 return AssignEnvironment(DefineAsRegister(result)); | 2447 return AssignEnvironment(DefineAsRegister(result)); |
| 2452 } | 2448 } |
| 2453 | 2449 |
| 2454 | 2450 |
| 2455 } } // namespace v8::internal | 2451 } } // namespace v8::internal |
| OLD | NEW |