diff options
Diffstat (limited to 'compiler/optimizing/builder.cc')
| -rw-r--r-- | compiler/optimizing/builder.cc | 26 | 
1 files changed, 4 insertions, 22 deletions
diff --git a/compiler/optimizing/builder.cc b/compiler/optimizing/builder.cc index 71e71f79d4..ecd6802ca4 100644 --- a/compiler/optimizing/builder.cc +++ b/compiler/optimizing/builder.cc @@ -138,15 +138,13 @@ static bool CanHandleCodeItem(const DexFile::CodeItem& code_item) {  template<typename T>  void HGraphBuilder::If_22t(const Instruction& instruction, uint32_t dex_offset) { -  int32_t target_offset = instruction.GetTargetOffset(); -  PotentiallyAddSuspendCheck(target_offset, dex_offset);    HInstruction* first = LoadLocal(instruction.VRegA(), Primitive::kPrimInt);    HInstruction* second = LoadLocal(instruction.VRegB(), Primitive::kPrimInt);    T* comparison = new (arena_) T(first, second);    current_block_->AddInstruction(comparison);    HInstruction* ifinst = new (arena_) HIf(comparison);    current_block_->AddInstruction(ifinst); -  HBasicBlock* target = FindBlockStartingAt(dex_offset + target_offset); +  HBasicBlock* target = FindBlockStartingAt(dex_offset + instruction.GetTargetOffset());    DCHECK(target != nullptr);    current_block_->AddSuccessor(target);    target = FindBlockStartingAt(dex_offset + instruction.SizeInCodeUnits()); @@ -157,15 +155,12 @@ void HGraphBuilder::If_22t(const Instruction& instruction, uint32_t dex_offset)  template<typename T>  void HGraphBuilder::If_21t(const Instruction& instruction, uint32_t dex_offset) { -  int32_t target_offset = instruction.GetTargetOffset(); -  PotentiallyAddSuspendCheck(target_offset, dex_offset);    HInstruction* value = LoadLocal(instruction.VRegA(), Primitive::kPrimInt);    T* comparison = new (arena_) T(value, GetIntConstant(0));    current_block_->AddInstruction(comparison);    HInstruction* ifinst = new (arena_) HIf(comparison);    current_block_->AddInstruction(ifinst); -  fprintf(stderr, "%d and %d\n", dex_offset, target_offset); -  HBasicBlock* target = FindBlockStartingAt(dex_offset + target_offset); +  HBasicBlock* target = FindBlockStartingAt(dex_offset + instruction.GetTargetOffset());    DCHECK(target != nullptr);    current_block_->AddSuccessor(target);    target = FindBlockStartingAt(dex_offset + instruction.SizeInCodeUnits()); @@ -201,9 +196,6 @@ HGraph* HGraphBuilder::BuildGraph(const DexFile::CodeItem& code_item) {      return nullptr;    } -  // Add the suspend check to the entry block. -  entry_block_->AddInstruction(new (arena_) HSuspendCheck(0)); -    size_t dex_offset = 0;    while (code_ptr < code_end) {      // Update the current block if dex_offset starts a new block. @@ -470,15 +462,7 @@ void HGraphBuilder::BuildArrayAccess(const Instruction& instruction,    }  } -void HGraphBuilder::PotentiallyAddSuspendCheck(int32_t target_offset, uint32_t dex_offset) { -  if (target_offset <= 0) { -    // Unconditionnally add a suspend check to backward branches. We can remove -    // them after we recognize loops in the graph. -    current_block_->AddInstruction(new (arena_) HSuspendCheck(dex_offset)); -  } -} - -bool HGraphBuilder::AnalyzeDexInstruction(const Instruction& instruction, uint32_t dex_offset) { +bool HGraphBuilder::AnalyzeDexInstruction(const Instruction& instruction, int32_t dex_offset) {    if (current_block_ == nullptr) {      return true;  // Dead code    } @@ -596,9 +580,7 @@ bool HGraphBuilder::AnalyzeDexInstruction(const Instruction& instruction, uint32      case Instruction::GOTO:      case Instruction::GOTO_16:      case Instruction::GOTO_32: { -      int32_t offset = instruction.GetTargetOffset(); -      PotentiallyAddSuspendCheck(offset, dex_offset); -      HBasicBlock* target = FindBlockStartingAt(offset + dex_offset); +      HBasicBlock* target = FindBlockStartingAt(instruction.GetTargetOffset() + dex_offset);        DCHECK(target != nullptr);        current_block_->AddInstruction(new (arena_) HGoto());        current_block_->AddSuccessor(target);  |