Lines Matching refs:instr
250 Instruction* instr = nullptr; in DissasembleBytecode() local
253 instr = DecodePackedSwitch(ptr, offset); in DissasembleBytecode()
257 instr = DecodeSparseSwitch(ptr, offset); in DissasembleBytecode()
261 instr = DecodeArrayData(ptr, offset); in DissasembleBytecode()
265 instr = DecodeBytecode(ptr, offset); in DissasembleBytecode()
269 instr->offset = offset; in DissasembleBytecode()
270 instructions.push_back(instr); in DissasembleBytecode()
281 FixupPackedSwitch(fixup.second.instr, fixup.second.base_offset, in FixupSwitches()
287 FixupSparseSwitch(fixup.second.instr, fixup.second.base_offset, in FixupSwitches()
364 auto& instr = packed_switches_[offset].instr; in DecodePackedSwitch() local
365 SLICER_CHECK(instr == nullptr); in DecodePackedSwitch()
366 instr = Alloc<PackedSwitchPayload>(); in DecodePackedSwitch()
367 return instr; in DecodePackedSwitch()
370 void CodeIr::FixupPackedSwitch(PackedSwitchPayload* instr, dex::u4 base_offset, in FixupPackedSwitch() argument
372 SLICER_CHECK(instr->targets.empty()); in FixupPackedSwitch()
377 instr->first_key = dex_packed_switch->first_key; in FixupPackedSwitch()
379 instr->targets.push_back( in FixupPackedSwitch()
390 auto& instr = sparse_switches_[offset].instr; in DecodeSparseSwitch() local
391 SLICER_CHECK(instr == nullptr); in DecodeSparseSwitch()
392 instr = Alloc<SparseSwitchPayload>(); in DecodeSparseSwitch()
393 return instr; in DecodeSparseSwitch()
396 void CodeIr::FixupSparseSwitch(SparseSwitchPayload* instr, dex::u4 base_offset, in FixupSparseSwitch() argument
398 SLICER_CHECK(instr->switch_cases.empty()); in FixupSparseSwitch()
410 instr->switch_cases.push_back(switch_case); in FixupSparseSwitch()
419 auto instr = Alloc<ArrayData>(); in DecodeArrayData() local
420 instr->data = slicer::MemView(ptr, dex::GetWidthFromBytecode(ptr) * 2); in DecodeArrayData()
421 return instr; in DecodeArrayData()
454 auto instr = Alloc<Bytecode>(); in DecodeBytecode() local
455 instr->opcode = dex_instr.opcode; in DecodeBytecode()
466 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
467 instr->operands.push_back(GetRegB(dex_instr)); in DecodeBytecode()
473 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
474 instr->operands.push_back(Alloc<Const32>(dex_instr.vB)); in DecodeBytecode()
478 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
486 instr->operands.push_back(Alloc<CodeLocation>(label)); in DecodeBytecode()
493 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
495 instr->operands.push_back(Alloc<CodeLocation>(label)); in DecodeBytecode()
513 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
514 instr->operands.push_back(GetRegB(dex_instr)); in DecodeBytecode()
515 instr->operands.push_back(GetRegC(dex_instr)); in DecodeBytecode()
520 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
521 instr->operands.push_back(GetRegB(dex_instr)); in DecodeBytecode()
523 instr->operands.push_back(Alloc<CodeLocation>(label)); in DecodeBytecode()
528 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
529 instr->operands.push_back(GetRegB(dex_instr)); in DecodeBytecode()
530 instr->operands.push_back(Alloc<Const32>(dex_instr.vC)); in DecodeBytecode()
534 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
535 instr->operands.push_back(GetRegB(dex_instr)); in DecodeBytecode()
536 instr->operands.push_back(GetIndexedOperand(index_type, dex_instr.vC)); in DecodeBytecode()
541 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
542 instr->operands.push_back(GetIndexedOperand(index_type, dex_instr.vB)); in DecodeBytecode()
552 instr->operands.push_back(vreg_list); in DecodeBytecode()
553 instr->operands.push_back(GetIndexedOperand(index_type, dex_instr.vB)); in DecodeBytecode()
559 instr->operands.push_back(vreg_range); in DecodeBytecode()
560 instr->operands.push_back(GetIndexedOperand(index_type, dex_instr.vB)); in DecodeBytecode()
566 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
567 instr->operands.push_back(Alloc<Const32>(dex_instr.vB << 16)); in DecodeBytecode()
571 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
572 instr->operands.push_back(Alloc<Const64>(dex::u8(dex_instr.vB) << 48)); in DecodeBytecode()
581 instr->operands.push_back(GetRegA(dex_instr)); in DecodeBytecode()
582 instr->operands.push_back(Alloc<Const64>(dex_instr.vB_wide)); in DecodeBytecode()
589 return instr; in DecodeBytecode()