Index: src/compiler/instruction.cc |
diff --git a/src/compiler/instruction.cc b/src/compiler/instruction.cc |
index 316c96efe9f623cfd8f67d0e46378eb6093c0f0e..9d157a1251b14ce87de5df7301c803bfcff6eea8 100644 |
--- a/src/compiler/instruction.cc |
+++ b/src/compiler/instruction.cc |
@@ -13,7 +13,7 @@ namespace compiler { |
std::ostream& operator<<(std::ostream& os, |
const PrintableInstructionOperand& printable) { |
- const InstructionOperand& op = *printable.op_; |
+ const InstructionOperand& op = printable.op_; |
const RegisterConfiguration* conf = printable.register_configuration_; |
switch (op.kind()) { |
case InstructionOperand::UNALLOCATED: { |
@@ -82,9 +82,8 @@ std::ostream& operator<<(std::ostream& os, |
const MoveOperands& mo = *printable.move_operands_; |
PrintableInstructionOperand printable_op = {printable.register_configuration_, |
mo.destination()}; |
- |
os << printable_op; |
- if (!mo.source()->Equals(mo.destination())) { |
+ if (mo.source() != mo.destination()) { |
printable_op.op_ = mo.source(); |
os << " = " << printable_op; |
} |
@@ -93,24 +92,23 @@ std::ostream& operator<<(std::ostream& os, |
bool ParallelMove::IsRedundant() const { |
- for (int i = 0; i < move_operands_.length(); ++i) { |
- if (!move_operands_[i].IsRedundant()) return false; |
+ for (auto move : *this) { |
+ if (!move->IsRedundant()) return false; |
} |
return true; |
} |
MoveOperands* ParallelMove::PrepareInsertAfter(MoveOperands* move) const { |
- auto move_ops = move_operands(); |
MoveOperands* replacement = nullptr; |
MoveOperands* to_eliminate = nullptr; |
- for (auto curr = move_ops->begin(); curr != move_ops->end(); ++curr) { |
+ for (auto curr : *this) { |
if (curr->IsEliminated()) continue; |
- if (curr->destination()->Equals(move->source())) { |
+ if (curr->destination() == move->source()) { |
DCHECK(!replacement); |
replacement = curr; |
if (to_eliminate != nullptr) break; |
- } else if (curr->destination()->Equals(move->destination())) { |
+ } else if (curr->destination() == move->destination()) { |
DCHECK(!to_eliminate); |
to_eliminate = curr; |
if (replacement != nullptr) break; |
@@ -175,8 +173,7 @@ std::ostream& operator<<(std::ostream& os, |
const PrintableParallelMove& printable) { |
const ParallelMove& pm = *printable.parallel_move_; |
bool first = true; |
- for (ZoneList<MoveOperands>::iterator move = pm.move_operands()->begin(); |
- move != pm.move_operands()->end(); ++move) { |
+ for (auto move : pm) { |
if (move->IsEliminated()) continue; |
if (!first) os << " "; |
first = false; |
@@ -199,14 +196,14 @@ std::ostream& operator<<(std::ostream& os, const ReferenceMap& pm) { |
os << "{"; |
bool first = true; |
PrintableInstructionOperand poi = {RegisterConfiguration::ArchDefault(), |
- nullptr}; |
+ InstructionOperand()}; |
for (auto& op : pm.reference_operands_) { |
if (!first) { |
os << ";"; |
} else { |
first = false; |
} |
- poi.op_ = &op; |
+ poi.op_ = op; |
os << poi; |
} |
return os << "}"; |
@@ -295,7 +292,7 @@ std::ostream& operator<<(std::ostream& os, |
const PrintableInstruction& printable) { |
const Instruction& instr = *printable.instr_; |
PrintableInstructionOperand printable_op = {printable.register_configuration_, |
- NULL}; |
+ InstructionOperand()}; |
os << "gap "; |
for (int i = Instruction::FIRST_GAP_POSITION; |
i <= Instruction::LAST_GAP_POSITION; i++) { |
@@ -312,7 +309,7 @@ std::ostream& operator<<(std::ostream& os, |
if (instr.OutputCount() > 1) os << "("; |
for (size_t i = 0; i < instr.OutputCount(); i++) { |
if (i > 0) os << ", "; |
- printable_op.op_ = instr.OutputAt(i); |
+ printable_op.op_ = *instr.OutputAt(i); |
os << printable_op; |
} |
@@ -330,7 +327,7 @@ std::ostream& operator<<(std::ostream& os, |
} |
if (instr.InputCount() > 0) { |
for (size_t i = 0; i < instr.InputCount(); i++) { |
- printable_op.op_ = instr.InputAt(i); |
+ printable_op.op_ = *instr.InputAt(i); |
os << " " << printable_op; |
} |
} |
@@ -368,14 +365,12 @@ PhiInstruction::PhiInstruction(Zone* zone, int virtual_register, |
size_t input_count) |
: virtual_register_(virtual_register), |
output_(UnallocatedOperand(UnallocatedOperand::NONE, virtual_register)), |
- operands_(input_count, zone), |
- inputs_(input_count, zone) {} |
+ operands_(input_count, InstructionOperand::kInvalidVirtualRegister, |
+ zone) {} |
void PhiInstruction::SetInput(size_t offset, int virtual_register) { |
- DCHECK(inputs_[offset].IsInvalid()); |
- auto input = UnallocatedOperand(UnallocatedOperand::ANY, virtual_register); |
- inputs_[offset] = input; |
+ DCHECK_EQ(InstructionOperand::kInvalidVirtualRegister, operands_[offset]); |
operands_[offset] = virtual_register; |
} |
@@ -726,11 +721,10 @@ std::ostream& operator<<(std::ostream& os, |
for (auto phi : block->phis()) { |
PrintableInstructionOperand printable_op = { |
- printable.register_configuration_, &phi->output()}; |
+ printable.register_configuration_, phi->output()}; |
os << " phi: " << printable_op << " ="; |
- for (auto input : phi->inputs()) { |
- printable_op.op_ = &input; |
- os << " " << printable_op; |
+ for (auto input : phi->operands()) { |
+ os << " v" << input; |
} |
os << "\n"; |
} |