Home | History | Annotate | Download | only in llvm

Lines Matching refs:dex_pc

324   llvm::Value* EmitLoadConstantClass(uint32_t dex_pc, uint32_t type_idx);
325 llvm::Value* EmitLoadStaticStorage(uint32_t dex_pc, uint32_t type_idx);
354 llvm::Value* EmitAllocNewArray(uint32_t dex_pc,
362 uint32_t dex_pc,
367 void EmitUpdateDexPC(uint32_t dex_pc);
369 void EmitGuard_DivZeroException(uint32_t dex_pc,
373 void EmitGuard_NullPointerException(uint32_t dex_pc, llvm::Value* object,
376 void EmitGuard_ArrayIndexOutOfBoundsException(uint32_t dex_pc,
383 llvm::BasicBlock* GetBasicBlock(uint32_t dex_pc);
385 llvm::BasicBlock* CreateBasicBlockWithDexPC(uint32_t dex_pc,
388 int32_t GetTryItemOffset(uint32_t dex_pc);
390 llvm::BasicBlock* GetLandingPadBasicBlock(uint32_t dex_pc);
394 void EmitGuard_ExceptionLandingPad(uint32_t dex_pc);
396 void EmitBranchExceptionLandingPad(uint32_t dex_pc);
454 uint32_t dex_pc = LV2UInt(bb_iter->begin()->getMetadata("DexOff")->getOperand(0));
455 basic_blocks_[dex_pc] = bb_iter;
834 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
848 bool is_fast_path = driver_->ComputeInvokeInfo(dex_compilation_unit_, dex_pc,
859 this_addr, dex_pc, is_fast_path);
890 dex_pc, is_fast_path);
919 EmitUpdateDexPC(dex_pc);
921 EmitGuard_ExceptionLandingPad(dex_pc);
976 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
984 llvm::BasicBlock* basic_block_suspend = CreateBasicBlockWithDexPC(dex_pc, "suspend");
985 llvm::BasicBlock* basic_block_cont = CreateBasicBlockWithDexPC(dex_pc, "suspend_cont");
990 if (dex_pc != art::DexFile::kDexNoIndex) {
991 EmitUpdateDexPC(dex_pc);
995 llvm::BasicBlock* basic_block_exception = CreateBasicBlockWithDexPC(dex_pc, "exception");
1276 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1277 EmitGuard_DivZeroException(dex_pc, divisor, op_jty);
1571 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1576 EmitGuard_NullPointerException(dex_pc, array_addr, opt_flags);
1577 EmitGuard_ArrayIndexOutOfBoundsException(dex_pc, array_addr, index_value,
1590 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1596 EmitGuard_NullPointerException(dex_pc, array_addr, opt_flags);
1597 EmitGuard_ArrayIndexOutOfBoundsException(dex_pc, array_addr, index_value,
1609 EmitGuard_ExceptionLandingPad(dex_pc);
1621 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1626 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
1650 EmitUpdateDexPC(dex_pc);
1655 EmitGuard_ExceptionLandingPad(dex_pc);
1684 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1690 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
1718 EmitUpdateDexPC(dex_pc);
1723 EmitGuard_ExceptionLandingPad(dex_pc);
1755 llvm::Value* GBCExpanderPass::EmitLoadConstantClass(uint32_t dex_pc,
1767 EmitUpdateDexPC(dex_pc);
1772 EmitGuard_ExceptionLandingPad(dex_pc);
1794 CreateBasicBlockWithDexPC(dex_pc, "cont");
1797 CreateBasicBlockWithDexPC(dex_pc, "load_class");
1812 EmitUpdateDexPC(dex_pc);
1817 EmitGuard_ExceptionLandingPad(dex_pc);
1835 llvm::Value* GBCExpanderPass::EmitLoadStaticStorage(uint32_t dex_pc,
1838 CreateBasicBlockWithDexPC(dex_pc, "load_static");
1840 llvm::BasicBlock* block_cont = CreateBasicBlockWithDexPC(dex_pc, "cont");
1867 EmitUpdateDexPC(dex_pc);
1872 EmitGuard_ExceptionLandingPad(dex_pc);
1891 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
1920 EmitUpdateDexPC(dex_pc);
1925 EmitGuard_ExceptionLandingPad(dex_pc);
1948 static_storage_addr = EmitLoadStaticStorage(dex_pc, ssb_index);
1970 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2008 EmitUpdateDexPC(dex_pc);
2013 EmitGuard_ExceptionLandingPad(dex_pc);
2033 static_storage_addr = EmitLoadStaticStorage(dex_pc, ssb_index);
2062 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2072 CreateBasicBlockWithDexPC(dex_pc, "str_exist");
2075 CreateBasicBlockWithDexPC(dex_pc, "str_resolve");
2078 CreateBasicBlockWithDexPC(dex_pc, "str_cont");
2098 EmitUpdateDexPC(dex_pc);
2103 EmitGuard_ExceptionLandingPad(dex_pc);
2124 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2127 llvm::Value* type_object_addr = EmitLoadConstantClass(dex_pc, type_idx);
2133 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2137 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
2139 EmitUpdateDexPC(dex_pc);
2147 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2151 EmitGuard_NullPointerException(dex_pc, object_addr, opt_flags);
2153 EmitUpdateDexPC(dex_pc);
2157 EmitGuard_ExceptionLandingPad(dex_pc);
2163 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2168 CreateBasicBlockWithDexPC(dex_pc, "test_class");
2171 CreateBasicBlockWithDexPC(dex_pc, "test_sub_class");
2174 CreateBasicBlockWithDexPC(dex_pc, "checkcast_cont");
2183 llvm::Value* type_object_addr = EmitLoadConstantClass(dex_pc, type_idx);
2202 EmitUpdateDexPC(dex_pc);
2207 EmitGuard_ExceptionLandingPad(dex_pc);
2217 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2222 CreateBasicBlockWithDexPC(dex_pc, "nullp");
2225 CreateBasicBlockWithDexPC(dex_pc, "test_class");
2228 CreateBasicBlockWithDexPC(dex_pc, "class_eq");
2231 CreateBasicBlockWithDexPC(dex_pc, "test_sub_class");
2234 CreateBasicBlockWithDexPC(dex_pc, "instance_of_cont");
2250 llvm::Value* type_object_addr = EmitLoadConstantClass(dex_pc, type_idx);
2288 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2306 EmitUpdateDexPC(dex_pc);
2311 EmitGuard_ExceptionLandingPad(dex_pc);
2322 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2326 EmitGuard_NullPointerException(dex_pc, this_addr, opt_flags);
2338 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2343 EmitGuard_NullPointerException(dex_pc, array_addr, opt_flags);
2350 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2354 return EmitAllocNewArray(dex_pc, length, type_idx, false);
2358 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2363 EmitAllocNewArray(dex_pc, irb_.getInt32(length), type_idx, true);
2416 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2417 int32_t payload_offset = static_cast<int32_t>(dex_pc) +
2429 EmitGuard_NullPointerException(dex_pc, array_addr, 0);
2440 EmitUpdateDexPC(dex_pc);
2443 method_object_addr, irb_.getInt32(dex_pc),
2446 EmitGuard_ExceptionLandingPad(dex_pc);
2452 llvm::Value* GBCExpanderPass::EmitAllocNewArray(uint32_t dex_pc,
2479 EmitUpdateDexPC(dex_pc);
2485 EmitGuard_ExceptionLandingPad(dex_pc);
2494 uint32_t dex_pc,
2535 EmitUpdateDexPC(dex_pc);
2544 EmitGuard_ExceptionLandingPad(dex_pc);
2554 void GBCExpanderPass::EmitUpdateDexPC(uint32_t dex_pc) {
2560 irb_.getInt32(dex_pc),
2564 void GBCExpanderPass::EmitGuard_DivZeroException(uint32_t dex_pc,
2573 llvm::BasicBlock* block_exception = CreateBasicBlockWithDexPC(dex_pc, "div0");
2575 llvm::BasicBlock* block_continue = CreateBasicBlockWithDexPC(dex_pc, "cont");
2580 EmitUpdateDexPC(dex_pc);
2582 EmitBranchExceptionLandingPad(dex_pc);
2587 void GBCExpanderPass::EmitGuard_NullPointerException(uint32_t dex_pc,
2592 llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc);
2601 CreateBasicBlockWithDexPC(dex_pc, "cont");
2611 CreateBasicBlockWithDexPC(dex_pc, "nullp");
2614 CreateBasicBlockWithDexPC(dex_pc, "cont");
2619 EmitUpdateDexPC(dex_pc);
2621 irb_.getInt32(dex_pc));
2622 EmitBranchExceptionLandingPad(dex_pc);
2629 GBCExpanderPass::EmitGuard_ArrayIndexOutOfBoundsException(uint32_t dex_pc,
2635 llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc);
2644 CreateBasicBlockWithDexPC(dex_pc, "cont");
2656 CreateBasicBlockWithDexPC(dex_pc, "overflow");
2659 CreateBasicBlockWithDexPC(dex_pc, "cont");
2665 EmitUpdateDexPC(dex_pc);
2667 EmitBranchExceptionLandingPad(dex_pc);
2702 CreateBasicBlockWithDexPC(uint32_t dex_pc, const char* postfix) {
2706 art::StringAppendF(&name, "B%04x.%s", dex_pc, postfix);
2712 llvm::BasicBlock* GBCExpanderPass::GetBasicBlock(uint32_t dex_pc) {
2713 DCHECK(dex_pc < dex_compilation_unit_->GetCodeItem()->insns_size_in_code_units_);
2714 CHECK(basic_blocks_[dex_pc] != NULL);
2715 return basic_blocks_[dex_pc];
2718 int32_t GBCExpanderPass::GetTryItemOffset(uint32_t dex_pc) {
2730 if (dex_pc < start) {
2732 } else if (dex_pc >= end) {
2742 llvm::BasicBlock* GBCExpanderPass::GetLandingPadBasicBlock(uint32_t dex_pc) {
2744 int32_t ti_offset = GetTryItemOffset(dex_pc);
2839 void GBCExpanderPass::EmitBranchExceptionLandingPad(uint32_t dex_pc) {
2840 if (llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc)) {
2849 void GBCExpanderPass::EmitGuard_ExceptionLandingPad(uint32_t dex_pc) {
2852 llvm::BasicBlock* block_cont = CreateBasicBlockWithDexPC(dex_pc, "cont");
2854 if (llvm::BasicBlock* lpad = GetLandingPadBasicBlock(dex_pc)) {
2891 uint32_t dex_pc = LV2UInt(call_inst.getMetadata("DexOff")->getOperand(0));
2893 EmitUpdateDexPC(dex_pc);
2898 EmitGuard_ExceptionLandingPad(dex_pc);