| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 HEnvironment* hydrogen_env = current_block_->last_environment(); | 648 HEnvironment* hydrogen_env = current_block_->last_environment(); |
| 649 instr->set_environment(CreateEnvironment(hydrogen_env)); | 649 instr->set_environment(CreateEnvironment(hydrogen_env)); |
| 650 return instr; | 650 return instr; |
| 651 } | 651 } |
| 652 | 652 |
| 653 | 653 |
| 654 LInstruction* LChunkBuilder::SetInstructionPendingDeoptimizationEnvironment( | 654 LInstruction* LChunkBuilder::SetInstructionPendingDeoptimizationEnvironment( |
| 655 LInstruction* instr, int ast_id) { | 655 LInstruction* instr, int ast_id) { |
| 656 ASSERT(instructions_pending_deoptimization_environment_ == NULL); | 656 ASSERT(instructions_pending_deoptimization_environment_ == NULL); |
| 657 ASSERT(pending_deoptimization_ast_id_ == AstNode::kNoNumber); | 657 ASSERT(pending_deoptimization_ast_id_ == AstNode::kNoNumber); |
| 658 instructions_pending_deoptimization_environment_ = instr; | 658 instruction_pending_deoptimization_environment_ = instr; |
| 659 pending_deoptimization_ast_id_ = ast_id; | 659 pending_deoptimization_ast_id_ = ast_id; |
| 660 return instr; | 660 return instr; |
| 661 } | 661 } |
| 662 | 662 |
| 663 | 663 |
| 664 void LChunkBuilder::ClearInstructionPendingDeoptimizationEnvironment() { | 664 void LChunkBuilder::ClearInstructionPendingDeoptimizationEnvironment() { |
| 665 instructions_pending_deoptimization_environment_ = NULL; | 665 instruction_pending_deoptimization_environment_ = NULL; |
| 666 pending_deoptimization_ast_id_ = AstNode::kNoNumber; | 666 pending_deoptimization_ast_id_ = AstNode::kNoNumber; |
| 667 } | 667 } |
| 668 | 668 |
| 669 | 669 |
| 670 LInstruction* LChunkBuilder::MarkAsCall(LInstruction* instr, | 670 LInstruction* LChunkBuilder::MarkAsCall(LInstruction* instr, |
| 671 HInstruction* hinstr, | 671 HInstruction* hinstr, |
| 672 CanDeoptimize can_deoptimize) { | 672 CanDeoptimize can_deoptimize) { |
| 673 allocator_->MarkAsCall(); | 673 allocator_->MarkAsCall(); |
| 674 instr = AssignPointerMap(instr); | 674 instr = AssignPointerMap(instr); |
| 675 | 675 |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1321 return NULL; | 1321 return NULL; |
| 1322 } | 1322 } |
| 1323 | 1323 |
| 1324 | 1324 |
| 1325 LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) { | 1325 LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) { |
| 1326 Abort("Unimplemented: %s", "DoBoundsCheck"); | 1326 Abort("Unimplemented: %s", "DoBoundsCheck"); |
| 1327 return NULL; | 1327 return NULL; |
| 1328 } | 1328 } |
| 1329 | 1329 |
| 1330 | 1330 |
| 1331 LInstruction* LChunkBuilder::DoAbnormalExit(HAbnormalExit* instr) { |
| 1332 // The control instruction marking the end of a block that completed |
| 1333 // abruptly (e.g., threw an exception). There is nothing specific to do. |
| 1334 return NULL; |
| 1335 } |
| 1336 |
| 1337 |
| 1331 LInstruction* LChunkBuilder::DoThrow(HThrow* instr) { | 1338 LInstruction* LChunkBuilder::DoThrow(HThrow* instr) { |
| 1332 Abort("Unimplemented: %s", "DoThrow"); | 1339 Abort("Unimplemented: %s", "DoThrow"); |
| 1333 return NULL; | 1340 return NULL; |
| 1334 } | 1341 } |
| 1335 | 1342 |
| 1336 | 1343 |
| 1337 LInstruction* LChunkBuilder::DoChange(HChange* instr) { | 1344 LInstruction* LChunkBuilder::DoChange(HChange* instr) { |
| 1338 Representation from = instr->from(); | 1345 Representation from = instr->from(); |
| 1339 Representation to = instr->to(); | 1346 Representation to = instr->to(); |
| 1340 if (from.IsTagged()) { | 1347 if (from.IsTagged()) { |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1656 env->Push(value); | 1663 env->Push(value); |
| 1657 } | 1664 } |
| 1658 } | 1665 } |
| 1659 ASSERT(env->length() == instr->environment_length()); | 1666 ASSERT(env->length() == instr->environment_length()); |
| 1660 | 1667 |
| 1661 // If there is an instruction pending deoptimization environment create a | 1668 // If there is an instruction pending deoptimization environment create a |
| 1662 // lazy bailout instruction to capture the environment. | 1669 // lazy bailout instruction to capture the environment. |
| 1663 if (pending_deoptimization_ast_id_ == instr->ast_id()) { | 1670 if (pending_deoptimization_ast_id_ == instr->ast_id()) { |
| 1664 LLazyBailout* lazy_bailout = new LLazyBailout; | 1671 LLazyBailout* lazy_bailout = new LLazyBailout; |
| 1665 LInstruction* result = AssignEnvironment(lazy_bailout); | 1672 LInstruction* result = AssignEnvironment(lazy_bailout); |
| 1666 instructions_pending_deoptimization_environment_-> | 1673 instruction_pending_deoptimization_environment_-> |
| 1667 set_deoptimization_environment(result->environment()); | 1674 set_deoptimization_environment(result->environment()); |
| 1668 ClearInstructionPendingDeoptimizationEnvironment(); | 1675 ClearInstructionPendingDeoptimizationEnvironment(); |
| 1669 return result; | 1676 return result; |
| 1670 } | 1677 } |
| 1671 | 1678 |
| 1672 return NULL; | 1679 return NULL; |
| 1673 } | 1680 } |
| 1674 | 1681 |
| 1675 | 1682 |
| 1676 LInstruction* LChunkBuilder::DoStackCheck(HStackCheck* instr) { | 1683 LInstruction* LChunkBuilder::DoStackCheck(HStackCheck* instr) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1692 | 1699 |
| 1693 | 1700 |
| 1694 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { | 1701 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { |
| 1695 Abort("Unimplemented: %s", "DoLeaveInlined"); | 1702 Abort("Unimplemented: %s", "DoLeaveInlined"); |
| 1696 return NULL; | 1703 return NULL; |
| 1697 } | 1704 } |
| 1698 | 1705 |
| 1699 } } // namespace v8::internal | 1706 } } // namespace v8::internal |
| 1700 | 1707 |
| 1701 #endif // V8_TARGET_ARCH_X64 | 1708 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |