| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/compiler/common-operator.h" | 5 #include "src/compiler/common-operator.h" |
| 6 #include "src/compiler/generic-node-inl.h" | 6 #include "src/compiler/generic-node-inl.h" |
| 7 #include "src/compiler/graph.h" | 7 #include "src/compiler/graph.h" |
| 8 #include "src/compiler/instruction.h" | 8 #include "src/compiler/instruction.h" |
| 9 #include "src/macro-assembler.h" | 9 #include "src/macro-assembler.h" |
| 10 | 10 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 for (BasicBlockVector::const_iterator it = schedule->rpo_order()->begin(); | 380 for (BasicBlockVector::const_iterator it = schedule->rpo_order()->begin(); |
| 381 it != schedule->rpo_order()->end(); ++it, ++rpo_number) { | 381 it != schedule->rpo_order()->end(); ++it, ++rpo_number) { |
| 382 DCHECK_EQ(NULL, (*blocks)[rpo_number]); | 382 DCHECK_EQ(NULL, (*blocks)[rpo_number]); |
| 383 DCHECK((*it)->GetRpoNumber().ToSize() == rpo_number); | 383 DCHECK((*it)->GetRpoNumber().ToSize() == rpo_number); |
| 384 (*blocks)[rpo_number] = new (zone) InstructionBlock(zone, *it); | 384 (*blocks)[rpo_number] = new (zone) InstructionBlock(zone, *it); |
| 385 } | 385 } |
| 386 } | 386 } |
| 387 | 387 |
| 388 | 388 |
| 389 InstructionSequence::InstructionSequence(Zone* instruction_zone, | 389 InstructionSequence::InstructionSequence(Zone* instruction_zone, |
| 390 const Graph* graph, | |
| 391 const Schedule* schedule) | 390 const Schedule* schedule) |
| 392 : zone_(instruction_zone), | 391 : zone_(instruction_zone), |
| 393 node_map_(graph->NodeCount(), kNodeUnmapped, zone()), | |
| 394 instruction_blocks_(static_cast<int>(schedule->rpo_order()->size()), NULL, | 392 instruction_blocks_(static_cast<int>(schedule->rpo_order()->size()), NULL, |
| 395 zone()), | 393 zone()), |
| 396 constants_(ConstantMap::key_compare(), | 394 constants_(ConstantMap::key_compare(), |
| 397 ConstantMap::allocator_type(zone())), | 395 ConstantMap::allocator_type(zone())), |
| 398 immediates_(zone()), | 396 immediates_(zone()), |
| 399 instructions_(zone()), | 397 instructions_(zone()), |
| 400 next_virtual_register_(0), | 398 next_virtual_register_(0), |
| 401 pointer_maps_(zone()), | 399 pointer_maps_(zone()), |
| 402 doubles_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())), | 400 doubles_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())), |
| 403 references_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())), | 401 references_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())), |
| 404 deoptimization_entries_(zone()) { | 402 deoptimization_entries_(zone()) { |
| 405 InitializeInstructionBlocks(zone(), schedule, &instruction_blocks_); | 403 InitializeInstructionBlocks(zone(), schedule, &instruction_blocks_); |
| 406 } | 404 } |
| 407 | 405 |
| 408 | 406 |
| 409 int InstructionSequence::GetVirtualRegister(const Node* node) { | |
| 410 if (node_map_[node->id()] == kNodeUnmapped) { | |
| 411 node_map_[node->id()] = NextVirtualRegister(); | |
| 412 } | |
| 413 return node_map_[node->id()]; | |
| 414 } | |
| 415 | |
| 416 | |
| 417 Label* InstructionSequence::GetLabel(BasicBlock::RpoNumber rpo) { | 407 Label* InstructionSequence::GetLabel(BasicBlock::RpoNumber rpo) { |
| 418 return GetBlockStart(rpo)->label(); | 408 return GetBlockStart(rpo)->label(); |
| 419 } | 409 } |
| 420 | 410 |
| 421 | 411 |
| 422 BlockStartInstruction* InstructionSequence::GetBlockStart( | 412 BlockStartInstruction* InstructionSequence::GetBlockStart( |
| 423 BasicBlock::RpoNumber rpo) { | 413 BasicBlock::RpoNumber rpo) { |
| 424 InstructionBlock* block = InstructionBlockAt(rpo); | 414 InstructionBlock* block = InstructionBlockAt(rpo); |
| 425 BlockStartInstruction* block_start = | 415 BlockStartInstruction* block_start = |
| 426 BlockStartInstruction::cast(InstructionAt(block->code_start())); | 416 BlockStartInstruction::cast(InstructionAt(block->code_start())); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 655 os << " B" << succ_block->id(); | 645 os << " B" << succ_block->id(); |
| 656 } | 646 } |
| 657 os << "\n"; | 647 os << "\n"; |
| 658 } | 648 } |
| 659 return os; | 649 return os; |
| 660 } | 650 } |
| 661 | 651 |
| 662 } // namespace compiler | 652 } // namespace compiler |
| 663 } // namespace internal | 653 } // namespace internal |
| 664 } // namespace v8 | 654 } // namespace v8 |
| OLD | NEW |