Failed to apply patch for src/compiler/instruction.cc:
While running git apply --index -3 -p1;
error: patch failed: src/compiler/instruction.cc:287
Falling back to three-way merge...
Applied patch to 'src/compiler/instruction.cc' with conflicts.
U src/compiler/instruction.cc
Patch: src/compiler/instruction.cc
Index: src/compiler/instruction.cc
diff --git a/src/compiler/instruction.cc b/src/compiler/instruction.cc
index
86550d0e1d3291538029afa4152d9d94a56fd178..827cacf665107f13b0f49315c02f713a8fa5277c
100644
--- a/src/compiler/instruction.cc
+++ b/src/compiler/instruction.cc
@@ -287,7 +287,7 @@
if (instr.IsGapMoves()) {
const GapInstruction* gap = GapInstruction::cast(&instr);
- os << "gap ";
+ os << (instr.IsBlockStart() ? " block-start" : "gap ");
for (int i = GapInstruction::FIRST_INNER_POSITION;
i <= GapInstruction::LAST_INNER_POSITION; i++) {
os << "(";
@@ -443,10 +443,10 @@
}
-GapInstruction* InstructionSequence::GetBlockStart(
+BlockStartInstruction* InstructionSequence::GetBlockStart(
BasicBlock::RpoNumber rpo) const {
const InstructionBlock* block = InstructionBlockAt(rpo);
- return GapInstruction::cast(InstructionAt(block->code_start()));
+ return BlockStartInstruction::cast(InstructionAt(block->code_start()));
}
@@ -456,26 +456,26 @@
int code_start = static_cast<int>(instructions_.size());
block->set_code_start(code_start);
block_starts_.push_back(code_start);
+ BlockStartInstruction* block_start = BlockStartInstruction::New(zone());
+ AddInstruction(block_start);
}
void InstructionSequence::EndBlock(BasicBlock::RpoNumber rpo) {
int end = static_cast<int>(instructions_.size());
InstructionBlock* block = InstructionBlockAt(rpo);
- if (block->code_start() == end) { // Empty block. Insert a nop.
- AddInstruction(Instruction::New(zone(), kArchNop));
- end = static_cast<int>(instructions_.size());
- }
DCHECK(block->code_start() >= 0 && block->code_start() < end);
block->set_code_end(end);
}
int InstructionSequence::AddInstruction(Instruction* instr) {
+ // TODO(titzer): the order of these gaps is a holdover from Lithium.
GapInstruction* gap = GapInstruction::New(zone());
- instructions_.push_back(gap);
+ if (instr->IsControl()) instructions_.push_back(gap);
int index = static_cast<int>(instructions_.size());
instructions_.push_back(instr);
+ if (!instr->IsControl()) instructions_.push_back(gap);
if (instr->NeedsPointerMap()) {
DCHECK(instr->pointer_map() == NULL);
PointerMap* pointer_map = new (zone()) PointerMap(zone());
https://codereview.chromium.org/815743002/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.