Lines Matching refs:inst
77 void CompileReturnVoid(Instruction* inst, uint32_t dex_pc);
82 Instruction* CompileCheckCast(Instruction* inst, uint32_t dex_pc);
90 void CompileInstanceFieldAccess(Instruction* inst, uint32_t dex_pc,
99 void CompileInvokeVirtual(Instruction* inst, uint32_t dex_pc,
106 uint16_t GetIndexForInstruction(const Instruction* inst, uint32_t index);
195 uint16_t DexToDexCompiler::CompilationState::GetIndexForInstruction(const Instruction* inst, in GetIndexForInstruction() argument
198 return inst->IsQuickened() ? NextIndex() : index; in GetIndexForInstruction()
200 DCHECK(!inst->IsQuickened()); in GetIndexForInstruction()
216 Instruction* inst = const_cast<Instruction*>(&it.Inst()); in Compile() local
219 DCHECK(!inst->IsQuickened()); in Compile()
222 switch (inst->Opcode()) { in Compile()
224 CompileReturnVoid(inst, dex_pc); in Compile()
228 inst = CompileCheckCast(inst, dex_pc); in Compile()
229 if (inst->Opcode() == Instruction::NOP) { in Compile()
238 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_QUICK, false); in Compile()
243 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_WIDE_QUICK, false); in Compile()
248 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_OBJECT_QUICK, false); in Compile()
253 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_BOOLEAN_QUICK, false); in Compile()
258 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_BYTE_QUICK, false); in Compile()
263 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_CHAR_QUICK, false); in Compile()
268 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IGET_SHORT_QUICK, false); in Compile()
273 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_QUICK, true); in Compile()
278 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_BOOLEAN_QUICK, true); in Compile()
283 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_BYTE_QUICK, true); in Compile()
288 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_CHAR_QUICK, true); in Compile()
293 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_SHORT_QUICK, true); in Compile()
298 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_WIDE_QUICK, true); in Compile()
303 CompileInstanceFieldAccess(inst, dex_pc, Instruction::IPUT_OBJECT_QUICK, true); in Compile()
308 CompileInvokeVirtual(inst, dex_pc, Instruction::INVOKE_VIRTUAL_QUICK, false); in Compile()
313 CompileInvokeVirtual(inst, dex_pc, Instruction::INVOKE_VIRTUAL_RANGE_QUICK, true); in Compile()
367 const Instruction& inst = instructions.InstructionAt(info.dex_pc); in Compile() local
368 CHECK(QuickenInfoTable::NeedsIndexForInstruction(&inst)) << inst.Opcode(); in Compile()
375 void DexToDexCompiler::CompilationState::CompileReturnVoid(Instruction* inst, uint32_t dex_pc) { in CompileReturnVoid() argument
376 DCHECK_EQ(inst->Opcode(), Instruction::RETURN_VOID); in CompileReturnVoid()
384 VLOG(compiler) << "Replacing " << Instruction::Name(inst->Opcode()) in CompileReturnVoid()
388 inst->SetOpcode(Instruction::RETURN_VOID_NO_BARRIER); in CompileReturnVoid()
392 Instruction* DexToDexCompiler::CompilationState::CompileCheckCast(Instruction* inst, in CompileCheckCast() argument
395 return inst; in CompileCheckCast()
398 return inst; in CompileCheckCast()
406 VLOG(compiler) << "Removing " << Instruction::Name(inst->Opcode()) in CompileCheckCast()
411 quickened_info_.push_back(QuickenedInfo(dex_pc, inst->VRegA_21c())); in CompileCheckCast()
412 quickened_info_.push_back(QuickenedInfo(dex_pc, inst->VRegB_21c())); in CompileCheckCast()
415 inst->SetOpcode(Instruction::NOP); in CompileCheckCast()
416 inst->SetVRegA_10x(0u); // keep compliant with verifier. in CompileCheckCast()
419 inst = const_cast<Instruction*>(inst->Next()); in CompileCheckCast()
420 inst->SetOpcode(Instruction::NOP); in CompileCheckCast()
421 inst->SetVRegA_10x(0u); // keep compliant with verifier. in CompileCheckCast()
423 return inst; in CompileCheckCast()
426 void DexToDexCompiler::CompilationState::CompileInstanceFieldAccess(Instruction* inst, in CompileInstanceFieldAccess() argument
433 uint32_t field_idx = GetIndexForInstruction(inst, inst->VRegC_22c()); in CompileInstanceFieldAccess()
439 VLOG(compiler) << "Quickening " << Instruction::Name(inst->Opcode()) in CompileInstanceFieldAccess()
447 inst->SetOpcode(new_opcode); in CompileInstanceFieldAccess()
449 inst->SetVRegC_22c(static_cast<uint16_t>(field_offset.Int32Value())); in CompileInstanceFieldAccess()
459 void DexToDexCompiler::CompilationState::CompileInvokeVirtual(Instruction* inst, in CompileInvokeVirtual() argument
466 uint32_t method_idx = GetIndexForInstruction(inst, in CompileInvokeVirtual()
467 is_range ? inst->VRegB_3rc() : inst->VRegB_35c()); in CompileInvokeVirtual()
487 VLOG(compiler) << "Quickening " << Instruction::Name(inst->Opcode()) in CompileInvokeVirtual()
496 inst->SetOpcode(new_opcode); in CompileInvokeVirtual()
499 inst->SetVRegB_3rc(static_cast<uint16_t>(vtable_idx)); in CompileInvokeVirtual()
501 inst->SetVRegB_35c(static_cast<uint16_t>(vtable_idx)); in CompileInvokeVirtual()