| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 | 6 |
| 7 #include "src/compiler/code-generator-impl.h" | 7 #include "src/compiler/code-generator-impl.h" |
| 8 #include "src/compiler/linkage.h" | 8 #include "src/compiler/linkage.h" |
| 9 #include "src/compiler/pipeline.h" | 9 #include "src/compiler/pipeline.h" |
| 10 | 10 |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 AssembleSourcePosition(SourcePositionInstruction::cast(instr)); | 192 AssembleSourcePosition(SourcePositionInstruction::cast(instr)); |
| 193 } else { | 193 } else { |
| 194 // Assemble architecture-specific code for the instruction. | 194 // Assemble architecture-specific code for the instruction. |
| 195 AssembleArchInstruction(instr); | 195 AssembleArchInstruction(instr); |
| 196 | 196 |
| 197 FlagsMode mode = FlagsModeField::decode(instr->opcode()); | 197 FlagsMode mode = FlagsModeField::decode(instr->opcode()); |
| 198 FlagsCondition condition = FlagsConditionField::decode(instr->opcode()); | 198 FlagsCondition condition = FlagsConditionField::decode(instr->opcode()); |
| 199 if (mode == kFlags_branch) { | 199 if (mode == kFlags_branch) { |
| 200 // Assemble a branch after this instruction. | 200 // Assemble a branch after this instruction. |
| 201 InstructionOperandConverter i(this, instr); | 201 InstructionOperandConverter i(this, instr); |
| 202 BasicBlock::RpoNumber true_rpo = | 202 BasicBlock::RpoNumber true_rpo = i.InputRpo(instr->InputCount() - 2); |
| 203 i.InputRpo(static_cast<int>(instr->InputCount()) - 2); | 203 BasicBlock::RpoNumber false_rpo = i.InputRpo(instr->InputCount() - 1); |
| 204 BasicBlock::RpoNumber false_rpo = | |
| 205 i.InputRpo(static_cast<int>(instr->InputCount()) - 1); | |
| 206 | 204 |
| 207 if (true_rpo == false_rpo) { | 205 if (true_rpo == false_rpo) { |
| 208 // redundant branch. | 206 // redundant branch. |
| 209 if (!IsNextInAssemblyOrder(true_rpo)) { | 207 if (!IsNextInAssemblyOrder(true_rpo)) { |
| 210 AssembleArchJump(true_rpo); | 208 AssembleArchJump(true_rpo); |
| 211 } | 209 } |
| 212 return; | 210 return; |
| 213 } | 211 } |
| 214 if (IsNextInAssemblyOrder(true_rpo)) { | 212 if (IsNextInAssemblyOrder(true_rpo)) { |
| 215 // true block is next, can fall through if condition negated. | 213 // true block is next, can fall through if condition negated. |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 if (deoptimization_literals_[i].is_identical_to(literal)) return i; | 392 if (deoptimization_literals_[i].is_identical_to(literal)) return i; |
| 395 } | 393 } |
| 396 deoptimization_literals_.push_back(literal); | 394 deoptimization_literals_.push_back(literal); |
| 397 return result; | 395 return result; |
| 398 } | 396 } |
| 399 | 397 |
| 400 | 398 |
| 401 FrameStateDescriptor* CodeGenerator::GetFrameStateDescriptor( | 399 FrameStateDescriptor* CodeGenerator::GetFrameStateDescriptor( |
| 402 Instruction* instr, size_t frame_state_offset) { | 400 Instruction* instr, size_t frame_state_offset) { |
| 403 InstructionOperandConverter i(this, instr); | 401 InstructionOperandConverter i(this, instr); |
| 404 InstructionSequence::StateId state_id = InstructionSequence::StateId::FromInt( | 402 InstructionSequence::StateId state_id = |
| 405 i.InputInt32(static_cast<int>(frame_state_offset))); | 403 InstructionSequence::StateId::FromInt(i.InputInt32(frame_state_offset)); |
| 406 return code()->GetFrameStateDescriptor(state_id); | 404 return code()->GetFrameStateDescriptor(state_id); |
| 407 } | 405 } |
| 408 | 406 |
| 409 struct OperandAndType { | 407 struct OperandAndType { |
| 410 OperandAndType(InstructionOperand* operand, MachineType type) | 408 OperandAndType(InstructionOperand* operand, MachineType type) |
| 411 : operand_(operand), type_(type) {} | 409 : operand_(operand), type_(type) {} |
| 412 | 410 |
| 413 InstructionOperand* operand_; | 411 InstructionOperand* operand_; |
| 414 MachineType type_; | 412 MachineType type_; |
| 415 }; | 413 }; |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 : masm_(gen->masm()), next_(gen->ools_) { | 634 : masm_(gen->masm()), next_(gen->ools_) { |
| 637 gen->ools_ = this; | 635 gen->ools_ = this; |
| 638 } | 636 } |
| 639 | 637 |
| 640 | 638 |
| 641 OutOfLineCode::~OutOfLineCode() {} | 639 OutOfLineCode::~OutOfLineCode() {} |
| 642 | 640 |
| 643 } // namespace compiler | 641 } // namespace compiler |
| 644 } // namespace internal | 642 } // namespace internal |
| 645 } // namespace v8 | 643 } // namespace v8 |
| OLD | NEW |