Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: src/compiler/instruction.cc

Issue 910753002: [turbofan] remove one level of indirection in phi inputs (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/instruction.h ('k') | src/compiler/instruction-selector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/graph.h" 6 #include "src/compiler/graph.h"
7 #include "src/compiler/instruction.h" 7 #include "src/compiler/instruction.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 case Constant::kHeapObject: 330 case Constant::kHeapObject:
331 return os << Brief(*constant.ToHeapObject()); 331 return os << Brief(*constant.ToHeapObject());
332 case Constant::kRpoNumber: 332 case Constant::kRpoNumber:
333 return os << "RPO" << constant.ToRpoNumber().ToInt(); 333 return os << "RPO" << constant.ToRpoNumber().ToInt();
334 } 334 }
335 UNREACHABLE(); 335 UNREACHABLE();
336 return os; 336 return os;
337 } 337 }
338 338
339 339
340 PhiInstruction::PhiInstruction(Zone* zone, int virtual_register,
341 size_t input_count)
342 : virtual_register_(virtual_register),
343 output_(UnallocatedOperand(UnallocatedOperand::NONE, virtual_register)),
344 operands_(input_count, zone),
345 inputs_(input_count, zone) {}
346
347
348 void PhiInstruction::SetInput(size_t offset, int virtual_register) {
349 DCHECK(inputs_[offset].IsInvalid());
350 auto input = UnallocatedOperand(UnallocatedOperand::ANY, virtual_register);
351 inputs_[offset] = input;
352 operands_[offset] = virtual_register;
353 }
354
355
340 InstructionBlock::InstructionBlock(Zone* zone, BasicBlock::Id id, 356 InstructionBlock::InstructionBlock(Zone* zone, BasicBlock::Id id,
341 BasicBlock::RpoNumber rpo_number, 357 BasicBlock::RpoNumber rpo_number,
342 BasicBlock::RpoNumber loop_header, 358 BasicBlock::RpoNumber loop_header,
343 BasicBlock::RpoNumber loop_end, 359 BasicBlock::RpoNumber loop_end,
344 bool deferred) 360 bool deferred)
345 : successors_(zone), 361 : successors_(zone),
346 predecessors_(zone), 362 predecessors_(zone),
347 phis_(zone), 363 phis_(zone),
348 id_(id), 364 id_(id),
349 ao_number_(rpo_number), 365 ao_number_(rpo_number),
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 << block->code_end() << ")\n predecessors:"; 675 << block->code_end() << ")\n predecessors:";
660 676
661 for (auto pred : block->predecessors()) { 677 for (auto pred : block->predecessors()) {
662 const InstructionBlock* pred_block = code.InstructionBlockAt(pred); 678 const InstructionBlock* pred_block = code.InstructionBlockAt(pred);
663 os << " B" << pred_block->id(); 679 os << " B" << pred_block->id();
664 } 680 }
665 os << "\n"; 681 os << "\n";
666 682
667 for (auto phi : block->phis()) { 683 for (auto phi : block->phis()) {
668 PrintableInstructionOperand printable_op = { 684 PrintableInstructionOperand printable_op = {
669 printable.register_configuration_, phi->output()}; 685 printable.register_configuration_, &phi->output()};
670 os << " phi: " << printable_op << " ="; 686 os << " phi: " << printable_op << " =";
671 for (auto input : phi->inputs()) { 687 for (auto input : phi->inputs()) {
672 printable_op.op_ = input; 688 printable_op.op_ = &input;
673 os << " " << printable_op; 689 os << " " << printable_op;
674 } 690 }
675 os << "\n"; 691 os << "\n";
676 } 692 }
677 693
678 ScopedVector<char> buf(32); 694 ScopedVector<char> buf(32);
679 PrintableInstruction printable_instr; 695 PrintableInstruction printable_instr;
680 printable_instr.register_configuration_ = printable.register_configuration_; 696 printable_instr.register_configuration_ = printable.register_configuration_;
681 for (int j = block->first_instruction_index(); 697 for (int j = block->first_instruction_index();
682 j <= block->last_instruction_index(); j++) { 698 j <= block->last_instruction_index(); j++) {
683 // TODO(svenpanne) Add some basic formatting to our streams. 699 // TODO(svenpanne) Add some basic formatting to our streams.
684 SNPrintF(buf, "%5d", j); 700 SNPrintF(buf, "%5d", j);
685 printable_instr.instr_ = code.InstructionAt(j); 701 printable_instr.instr_ = code.InstructionAt(j);
686 os << " " << buf.start() << ": " << printable_instr << "\n"; 702 os << " " << buf.start() << ": " << printable_instr << "\n";
687 } 703 }
688 704
689 for (auto succ : block->successors()) { 705 for (auto succ : block->successors()) {
690 const InstructionBlock* succ_block = code.InstructionBlockAt(succ); 706 const InstructionBlock* succ_block = code.InstructionBlockAt(succ);
691 os << " B" << succ_block->id(); 707 os << " B" << succ_block->id();
692 } 708 }
693 os << "\n"; 709 os << "\n";
694 } 710 }
695 return os; 711 return os;
696 } 712 }
697 713
698 } // namespace compiler 714 } // namespace compiler
699 } // namespace internal 715 } // namespace internal
700 } // namespace v8 716 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction.h ('k') | src/compiler/instruction-selector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698