Lines Matching defs:dex_pc
321 llvm::Value* EmitLoadConstantClass(uint32_t dex_pc, uint32_t type_idx);
322 llvm::Value* EmitLoadStaticStorage(uint32_t dex_pc, uint32_t type_idx);
351 llvm::Value* EmitAllocNewArray(uint32_t dex_pc,
359 uint32_t dex_pc,
364 void EmitUpdateDexPC(uint32_t dex_pc);
366 void EmitGuard_DivZeroException(uint32_t dex_pc,
370 void EmitGuard_NullPointerException(uint32_t dex_pc, llvm::Value* object,
373 void EmitGuard_ArrayIndexOutOfBoundsException(uint32_t dex_pc,
380 llvm::BasicBlock* GetBasicBlock(uint32_t dex_pc);
382 llvm::BasicBlock* CreateBasicBlockWithDexPC(uint32_t dex_pc,
385 int32_t GetTryItemOffset(uint32_t dex_pc);
387 llvm::BasicBlock* GetLandingPadBasicBlock(uint32_t dex_pc);
391 void EmitGuard_ExceptionLandingPad(uint32_t dex_pc);
393 void EmitBranchExceptionLandingPad(uint32_t dex_pc);
451 uint32_t dex_pc = LV2UInt(bb_iter->begin()->getMetadata("DexOff")->getOperand(0));
452 basic_blocks_[dex_pc] = bb_iter;
821 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
835 bool is_fast_path = driver_->ComputeInvokeInfo(dex_compilation_unit_, dex_pc,
846 this_addr, dex_pc, is_fast_path);
877 dex_pc, is_fast_path);
906 EmitUpdateDexPC(dex_pc);
908 EmitGuard_ExceptionLandingPad(dex_pc);
963 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
971 llvm::BasicBlock* basic_block_suspend = CreateBasicBlockWithDexPC(dex_pc, "suspend");
972 llvm::BasicBlock* basic_block_cont = CreateBasicBlockWithDexPC(dex_pc, "suspend_cont");
977 if (dex_pc != art::DexFile::kDexNoIndex) {
978 EmitUpdateDexPC(dex_pc);
982 llvm::BasicBlock* basic_block_exception = CreateBasicBlockWithDexPC(dex_pc, "exception");
1252 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1253 EmitGuard_DivZeroException(dex_pc, divisor, op_jty);
1547 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1552 EmitGuard_NullPointerException(dex_pc, array_addr, opt_flags);
1553 EmitGuard_ArrayIndexOutOfBoundsException(dex_pc, array_addr, index_value,
1566 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1572 EmitGuard_NullPointerException(dex_pc, array_addr, opt_flags);
1573 EmitGuard_ArrayIndexOutOfBoundsException(dex_pc, array_addr, index_value,
1585 EmitGuard_ExceptionLandingPad(dex_pc);
1597 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1602 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
1626 EmitUpdateDexPC(dex_pc);
1631 EmitGuard_ExceptionLandingPad(dex_pc);
1660 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1666 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
1694 EmitUpdateDexPC(dex_pc);
1699 EmitGuard_ExceptionLandingPad(dex_pc);
1731 llvm::Value* GBCExpanderPass::EmitLoadConstantClass(uint32_t dex_pc,
1743 EmitUpdateDexPC(dex_pc);
1748 EmitGuard_ExceptionLandingPad(dex_pc);
1770 CreateBasicBlockWithDexPC(dex_pc, "cont");
1773 CreateBasicBlockWithDexPC(dex_pc, "load_class");
1788 EmitUpdateDexPC(dex_pc);
1793 EmitGuard_ExceptionLandingPad(dex_pc);
1811 llvm::Value* GBCExpanderPass::EmitLoadStaticStorage(uint32_t dex_pc,
1814 CreateBasicBlockWithDexPC(dex_pc, "load_static");
1816 llvm::BasicBlock* block_check_init = CreateBasicBlockWithDexPC(dex_pc, "init");
1817 llvm::BasicBlock* block_cont = CreateBasicBlockWithDexPC(dex_pc, "cont");
1853 EmitUpdateDexPC(dex_pc);
1858 EmitGuard_ExceptionLandingPad(dex_pc);
1880 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1910 EmitUpdateDexPC(dex_pc);
1915 EmitGuard_ExceptionLandingPad(dex_pc);
1938 static_storage_addr = EmitLoadStaticStorage(dex_pc, ssb_index);
1960 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1999 EmitUpdateDexPC(dex_pc);
2004 EmitGuard_ExceptionLandingPad(dex_pc);
2024 static_storage_addr = EmitLoadStaticStorage(dex_pc, ssb_index);
2053 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2063 CreateBasicBlockWithDexPC(dex_pc, "str_exist");
2066 CreateBasicBlockWithDexPC(dex_pc, "str_resolve");
2069 CreateBasicBlockWithDexPC(dex_pc, "str_cont");
2089 EmitUpdateDexPC(dex_pc);
2094 EmitGuard_ExceptionLandingPad(dex_pc);
2115 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2118 llvm::Value* type_object_addr = EmitLoadConstantClass(dex_pc, type_idx);
2124 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2128 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
2130 EmitUpdateDexPC(dex_pc);
2138 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2142 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
2144 EmitUpdateDexPC(dex_pc);
2148 EmitGuard_ExceptionLandingPad(dex_pc);
2154 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2159 CreateBasicBlockWithDexPC(dex_pc, "test_class");
2162 CreateBasicBlockWithDexPC(dex_pc, "test_sub_class");
2165 CreateBasicBlockWithDexPC(dex_pc, "checkcast_cont");
2174 llvm::Value* type_object_addr = EmitLoadConstantClass(dex_pc, type_idx);
2193 EmitUpdateDexPC(dex_pc);
2198 EmitGuard_ExceptionLandingPad(dex_pc);
2208 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2213 CreateBasicBlockWithDexPC(dex_pc, "nullp");
2216 CreateBasicBlockWithDexPC(dex_pc, "test_class");
2219 CreateBasicBlockWithDexPC(dex_pc, "class_eq");
2222 CreateBasicBlockWithDexPC(dex_pc, "test_sub_class");
2225 CreateBasicBlockWithDexPC(dex_pc, "instance_of_cont");
2241 llvm::Value* type_object_addr = EmitLoadConstantClass(dex_pc, type_idx);
2279 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2297 EmitUpdateDexPC(dex_pc);
2302 EmitGuard_ExceptionLandingPad(dex_pc);
2313 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2317 EmitGuard_NullPointerException(dex_pc, this_addr, opt_flags);
2329 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2334 EmitGuard_NullPointerException(dex_pc, array_addr, opt_flags);
2341 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2345 return EmitAllocNewArray(dex_pc, length, type_idx, false);
2349 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2354 EmitAllocNewArray(dex_pc, irb_.getInt32(length), type_idx, true);
2407 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2408 int32_t payload_offset = static_cast<int32_t>(dex_pc) +
2420 EmitGuard_NullPointerException(dex_pc, array_addr, 0);
2431 EmitUpdateDexPC(dex_pc);
2434 method_object_addr, irb_.getInt32(dex_pc),
2437 EmitGuard_ExceptionLandingPad(dex_pc);
2443 llvm::Value* GBCExpanderPass::EmitAllocNewArray(uint32_t dex_pc,
2470 EmitUpdateDexPC(dex_pc);
2476 EmitGuard_ExceptionLandingPad(dex_pc);
2485 uint32_t dex_pc,
2526 EmitUpdateDexPC(dex_pc);
2535 EmitGuard_ExceptionLandingPad(dex_pc);
2545 void GBCExpanderPass::EmitUpdateDexPC(uint32_t dex_pc) {
2551 irb_.getInt32(dex_pc),
2555 void GBCExpanderPass::EmitGuard_DivZeroException(uint32_t dex_pc,
2564 llvm::BasicBlock* block_exception = CreateBasicBlockWithDexPC(dex_pc, "div0");
2566 llvm::BasicBlock* block_continue = CreateBasicBlockWithDexPC(dex_pc, "cont");
2571 EmitUpdateDexPC(dex_pc);
2573 EmitBranchExceptionLandingPad(dex_pc);
2578 void GBCExpanderPass::EmitGuard_NullPointerException(uint32_t dex_pc,
2583 llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc);
2592 CreateBasicBlockWithDexPC(dex_pc, "cont");
2602 CreateBasicBlockWithDexPC(dex_pc, "nullp");
2605 CreateBasicBlockWithDexPC(dex_pc, "cont");
2610 EmitUpdateDexPC(dex_pc);
2612 irb_.getInt32(dex_pc));
2613 EmitBranchExceptionLandingPad(dex_pc);
2620 GBCExpanderPass::EmitGuard_ArrayIndexOutOfBoundsException(uint32_t dex_pc,
2626 llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc);
2635 CreateBasicBlockWithDexPC(dex_pc, "cont");
2647 CreateBasicBlockWithDexPC(dex_pc, "overflow");
2650 CreateBasicBlockWithDexPC(dex_pc, "cont");
2656 EmitUpdateDexPC(dex_pc);
2658 EmitBranchExceptionLandingPad(dex_pc);
2693 CreateBasicBlockWithDexPC(uint32_t dex_pc, const char* postfix) {
2697 art::StringAppendF(&name, "B%04x.%s", dex_pc, postfix);
2703 llvm::BasicBlock* GBCExpanderPass::GetBasicBlock(uint32_t dex_pc) {
2704 DCHECK(dex_pc < dex_compilation_unit_->GetCodeItem()->insns_size_in_code_units_);
2705 CHECK(basic_blocks_[dex_pc] != NULL);
2706 return basic_blocks_[dex_pc];
2709 int32_t GBCExpanderPass::GetTryItemOffset(uint32_t dex_pc) {
2721 if (dex_pc < start) {
2723 } else if (dex_pc >= end) {
2733 llvm::BasicBlock* GBCExpanderPass::GetLandingPadBasicBlock(uint32_t dex_pc) {
2735 int32_t ti_offset = GetTryItemOffset(dex_pc);
2830 void GBCExpanderPass::EmitBranchExceptionLandingPad(uint32_t dex_pc) {
2831 if (llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc)) {
2840 void GBCExpanderPass::EmitGuard_ExceptionLandingPad(uint32_t dex_pc) {
2843 llvm::BasicBlock* block_cont = CreateBasicBlockWithDexPC(dex_pc, "cont");
2845 if (llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc)) {
2882 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2884 EmitUpdateDexPC(dex_pc);
2889 EmitGuard_ExceptionLandingPad(dex_pc);