/art/libdexfile/dex/ |
H A D | dex_instruction_utils.h | 92 constexpr bool IsInstructionIGet(Instruction::Code code) { argument 93 return Instruction::IGET <= code && code <= Instruction::IGET_SHORT; 96 constexpr bool IsInstructionIPut(Instruction::Code code) { argument 97 return Instruction::IPUT <= code && code <= Instruction::IPUT_SHORT; 100 constexpr bool IsInstructionSGet(Instruction::Code code) { argument 101 return Instruction::SGET <= code && code <= Instruction::SGET_SHORT; 104 constexpr bool IsInstructionSPut(Instruction::Code code) { argument 108 IsInstructionAGet(Instruction::Code code) argument 112 IsInstructionAPut(Instruction::Code code) argument 116 IsInstructionIGetOrIPut(Instruction::Code code) argument 120 IsInstructionIGetQuickOrIPutQuick(Instruction::Code code) argument 125 IsInstructionSGetOrSPut(Instruction::Code code) argument 129 IsInstructionAGetOrAPut(Instruction::Code code) argument 133 IsInstructionBinOp2Addr(Instruction::Code code) argument 149 IGetMemAccessType(Instruction::Code code) argument 154 IPutMemAccessType(Instruction::Code code) argument 159 SGetMemAccessType(Instruction::Code code) argument 164 SPutMemAccessType(Instruction::Code code) argument 169 AGetMemAccessType(Instruction::Code code) argument 174 APutMemAccessType(Instruction::Code code) argument 179 IGetOrIPutMemAccessType(Instruction::Code code) argument 184 IGetQuickOrIPutQuickMemAccessType(Instruction::Code code) argument 207 SGetOrSPutMemAccessType(Instruction::Code code) argument 212 AGetOrAPutMemAccessType(Instruction::Code code) argument [all...] |
/art/compiler/linker/x86/ |
H A D | relative_patcher_x86.cc | 25 void X86RelativePatcher::PatchPcRelativeReference(std::vector<uint8_t>* code, argument 34 DCHECK_LT(anchor_literal_offset, code->size()); 35 DCHECK_EQ((*code)[anchor_literal_offset - 5u], 0xe8u); 36 DCHECK_EQ((*code)[anchor_literal_offset - 4u], 0x00u); 37 DCHECK_EQ((*code)[anchor_literal_offset - 3u], 0x00u); 38 DCHECK_EQ((*code)[anchor_literal_offset - 2u], 0x00u); 39 DCHECK_EQ((*code)[anchor_literal_offset - 1u], 0x00u); 40 DCHECK_EQ((*code)[anchor_literal_offset] & 0xf8u, 0x58u); 45 DCHECK_LE(literal_offset, code->size()); 46 DCHECK_EQ((*code)[literal_offse [all...] |
H A D | relative_patcher_x86.h | 29 void PatchPcRelativeReference(std::vector<uint8_t>* code, 33 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code,
|
H A D | relative_patcher_x86_base.cc | 44 void X86BaseRelativePatcher::PatchCall(std::vector<uint8_t>* code, argument 48 DCHECK_LE(literal_offset + 4u, code->size()); 54 reinterpret_cast<unaligned_int32_t*>(&(*code)[literal_offset])[0] = displacement;
|
/art/test/674-hotness-compiled/ |
H A D | run | 17 ${RUN} "$@" -Xcompiler-option --count-hotness-in-compiled-code
|
/art/compiler/linker/mips/ |
H A D | relative_patcher_mips.cc | 41 void MipsRelativePatcher::PatchCall(std::vector<uint8_t>* code ATTRIBUTE_UNUSED, 48 void MipsRelativePatcher::PatchPcRelativeReference(std::vector<uint8_t>* code, argument 54 bool high_patch = ((*code)[literal_offset + 0] == 0x34) && ((*code)[literal_offset + 1] == 0x12); 60 DCHECK_EQ(((*code)[literal_offset + 2] & 0x1F), 0x1E); 61 DCHECK_EQ(((*code)[literal_offset + 3] & 0xFC), 0xEC); 64 DCHECK_EQ(((*code)[literal_offset + 2] & 0xE0), 0x00); 65 DCHECK_EQ((*code)[literal_offset + 3], 0x3C); 69 CHECK_EQ((*code)[literal_offset + 0], 0x78); 70 CHECK_EQ((*code)[literal_offse [all...] |
H A D | relative_patcher_mips.h | 36 void PatchCall(std::vector<uint8_t>* code, 40 void PatchPcRelativeReference(std::vector<uint8_t>* code, 44 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code,
|
/art/runtime/ |
H A D | oat_file-inl.h | 26 const void* code = EntryPointToCodePointer(GetOatPointer<const void*>(code_offset_)); local 27 if (code == nullptr) { 30 // Return a pointer to the packed struct before the code. 31 return reinterpret_cast<const OatQuickMethodHeader*>(code) - 1; 51 const void* code = EntryPointToCodePointer(GetQuickCode()); local 52 if (code == nullptr) { 55 return reinterpret_cast<const OatQuickMethodHeader*>(code)[-1].GetFrameInfo().FrameSizeInBytes(); 59 const void* code = EntryPointToCodePointer(GetQuickCode()); local 60 if (code == nullptr) { 63 return reinterpret_cast<const OatQuickMethodHeader*>(code)[ 67 const void* code = EntryPointToCodePointer(GetQuickCode()); local 88 const void* code = EntryPointToCodePointer(GetOatPointer<const void*>(code_offset_)); local 100 const void* code = EntryPointToCodePointer(GetOatPointer<const void*>(code_offset_)); local [all...] |
/art/compiler/linker/mips64/ |
H A D | relative_patcher_mips64.cc | 41 void Mips64RelativePatcher::PatchCall(std::vector<uint8_t>* code ATTRIBUTE_UNUSED, 48 void Mips64RelativePatcher::PatchPcRelativeReference(std::vector<uint8_t>* code, argument 54 bool high_patch = ((*code)[literal_offset + 0] == 0x34) && ((*code)[literal_offset + 1] == 0x12); 59 DCHECK_EQ(((*code)[literal_offset + 2] & 0x1F), 0x1E); 60 DCHECK_EQ(((*code)[literal_offset + 3] & 0xFC), 0xEC); 63 CHECK_EQ((*code)[literal_offset + 0], 0x78); 64 CHECK_EQ((*code)[literal_offset + 1], 0x56); 78 (*code)[literal_offset + 0] = static_cast<uint8_t>(diff >> 16); 79 (*code)[literal_offse [all...] |
H A D | relative_patcher_mips64.h | 34 void PatchCall(std::vector<uint8_t>* code, 38 void PatchPcRelativeReference(std::vector<uint8_t>* code, 42 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code,
|
/art/compiler/utils/arm64/ |
H A D | assembler_arm64.h | 72 // Finalize the code. 75 // Size of generated code. 103 // Emit code checking the status of the Marking Register, and aborting 107 // Argument `temp` is used as a temporary register to generate code. 108 // Argument `code` is used to identify the different occurrences of 110 void GenerateMarkingRegisterCheck(vixl::aarch64::Register temp, int code = 0); 119 static vixl::aarch64::Register reg_x(int code) { argument 120 CHECK(code < kNumberOfXRegisters) << code; 121 if (code [all...] |
/art/compiler/linker/x86_64/ |
H A D | relative_patcher_x86_64.cc | 25 void X86_64RelativePatcher::PatchPcRelativeReference(std::vector<uint8_t>* code, argument 29 DCHECK_LE(patch.LiteralOffset() + 4u, code->size()); 35 reinterpret_cast<unaligned_int32_t*>(&(*code)[patch.LiteralOffset()])[0] = displacement; 38 void X86_64RelativePatcher::PatchBakerReadBarrierBranch(std::vector<uint8_t>* code ATTRIBUTE_UNUSED,
|
H A D | relative_patcher_x86_64.h | 29 void PatchPcRelativeReference(std::vector<uint8_t>* code, 33 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code,
|
/art/runtime/arch/x86_64/ |
H A D | thread_x86_64.cc | 33 static void arch_prctl(int code, void* val) { argument 34 syscall(__NR_arch_prctl, code, val);
|
/art/dex2oat/linker/ |
H A D | image_test.cc | 96 // Test that pointer to quick code is the same in 112 // Test the pointer to quick code is the same in origin method 120 const void* code = origin->GetEntryPointFromQuickCompiledCodePtrSize(pointer_size); local 121 // The origin method should have a pointer to quick code 122 ASSERT_NE(nullptr, code); 123 ASSERT_FALSE(class_linker_->IsQuickToInterpreterBridge(code)); 129 // the copied method should have pointer to the same quick code as the origin method 130 ASSERT_EQ(code, copied->GetEntryPointFromQuickCompiledCodePtrSize(pointer_size)); 132 // Test the origin method has pointer to quick code 143 code [all...] |
H A D | multi_oat_relative_patcher.h | 34 // any number of oat files. It provides storage for method code offsets 49 // It must must never point directly to a method's code to avoid relative offsets 95 void PatchCall(std::vector<uint8_t>* code, argument 101 relative_patcher_->PatchCall(code, literal_offset, patch_offset, target_offset); 105 void PatchPcRelativeReference(std::vector<uint8_t>* code, argument 111 relative_patcher_->PatchPcRelativeReference(code, patch, patch_offset, target_offset); 114 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code, argument 118 relative_patcher_->PatchBakerReadBarrierBranch(code, patch, patch_offset);
|
/art/compiler/linker/arm/ |
H A D | relative_patcher_thumb2.cc | 55 void Thumb2RelativePatcher::PatchCall(std::vector<uint8_t>* code, argument 59 DCHECK_LE(literal_offset + 4u, code->size()); 78 DCHECK_EQ(GetInsn32(code, literal_offset) & 0xf800d000, 0xf000d000); 80 SetInsn32(code, literal_offset, value); 83 void Thumb2RelativePatcher::PatchPcRelativeReference(std::vector<uint8_t>* code, argument 92 uint32_t insn = GetInsn32(code, literal_offset); 100 SetInsn32(code, literal_offset, insn); 103 void Thumb2RelativePatcher::PatchBakerReadBarrierBranch(std::vector<uint8_t>* code, argument 109 DCHECK_LT(literal_offset, code->size()); 110 uint32_t insn = GetInsn32(code, literal_offse 443 SetInsn32(std::vector<uint8_t>* code, uint32_t offset, uint32_t value) argument 453 GetInsn32(ArrayRef<const uint8_t> code, uint32_t offset) argument 465 GetInsn32(Vector* code, uint32_t offset) argument 470 GetInsn16(ArrayRef<const uint8_t> code, uint32_t offset) argument 478 GetInsn16(Vector* code, uint32_t offset) argument [all...] |
H A D | relative_patcher_thumb2.h | 73 void PatchCall(std::vector<uint8_t>* code, 77 void PatchPcRelativeReference(std::vector<uint8_t>* code, 81 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code, 128 void SetInsn32(std::vector<uint8_t>* code, uint32_t offset, uint32_t value); 129 static uint32_t GetInsn32(ArrayRef<const uint8_t> code, uint32_t offset); 132 static uint32_t GetInsn32(Vector* code, uint32_t offset); 134 static uint32_t GetInsn16(ArrayRef<const uint8_t> code, uint32_t offset); 137 static uint32_t GetInsn16(Vector* code, uint32_t offset);
|
/art/dexlayout/ |
H A D | dexlayout.h | 136 void DumpBytecodes(uint32_t idx, const dex_ir::CodeItem* code, uint32_t code_offset); 137 void DumpCatches(const dex_ir::CodeItem* code); 142 const dex_ir::CodeItem* code, 152 void DumpInstruction(const dex_ir::CodeItem* code, 158 void DumpLocalInfo(const dex_ir::CodeItem* code); 159 void DumpMethod(uint32_t idx, uint32_t flags, const dex_ir::CodeItem* code, int i); 160 void DumpPositionInfo(const dex_ir::CodeItem* code); 177 void DumpCFG(const DexFile* dex_file, uint32_t dex_method_idx, const DexFile::CodeItem* code);
|
/art/compiler/linker/arm64/ |
H A D | relative_patcher_arm64.h | 65 void PatchCall(std::vector<uint8_t>* code, 69 void PatchPcRelativeReference(std::vector<uint8_t>* code, 73 void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code, 111 static bool NeedsErratum843419Thunk(ArrayRef<const uint8_t> code, uint32_t literal_offset, 113 void SetInsn(std::vector<uint8_t>* code, uint32_t offset, uint32_t value); 114 static uint32_t GetInsn(ArrayRef<const uint8_t> code, uint32_t offset); 117 static uint32_t GetInsn(std::vector<uint8_t, Alloc>* code, uint32_t offset);
|
H A D | relative_patcher_arm64.cc | 123 ArrayRef<const uint8_t> code = compiled_method->GetQuickCode(); local 124 uint32_t max_extra_space = MaxExtraSpace(num_adrp, code.size()); 130 // Now that we have the actual offset where the code will be placed, locate the ADRP insns 133 uint32_t thunk_offset = compiled_method->AlignCode(quick_code_offset + code.size()); 138 if (NeedsErratum843419Thunk(code, patch.LiteralOffset(), patch_offset)) { 189 void Arm64RelativePatcher::PatchCall(std::vector<uint8_t>* code, argument 193 DCHECK_LE(literal_offset + 4u, code->size()); 204 DCHECK_EQ(GetInsn(code, literal_offset) & 0xfc000000u, 0x94000000u); 206 SetInsn(code, literal_offset, insn); 209 void Arm64RelativePatcher::PatchPcRelativeReference(std::vector<uint8_t>* code, argument 308 PatchBakerReadBarrierBranch(std::vector<uint8_t>* code, const LinkerPatch& patch, uint32_t patch_offset) argument 606 NeedsErratum843419Thunk(ArrayRef<const uint8_t> code, uint32_t literal_offset, uint32_t patch_offset) argument 656 SetInsn(std::vector<uint8_t>* code, uint32_t offset, uint32_t value) argument 666 GetInsn(ArrayRef<const uint8_t> code, uint32_t offset) argument 678 GetInsn(std::vector<uint8_t, Alloc>* code, uint32_t offset) argument [all...] |
/art/compiler/linker/ |
H A D | relative_patcher.h | 104 // Patch method code. The input displacement is relative to the patched location, 106 virtual void PatchCall(std::vector<uint8_t>* code, 112 virtual void PatchPcRelativeReference(std::vector<uint8_t>* code, 118 virtual void PatchBakerReadBarrierBranch(std::vector<uint8_t>* code,
|
H A D | relative_patcher_test.h | 79 const ArrayRef<const uint8_t>& code, 85 code, 96 // We want to align the code rather than the preheader. 116 const auto code = compiled_method->GetQuickCode(); local 117 offset += code.size(); 147 ArrayRef<const uint8_t> code = compiled_method->GetQuickCode(); local 149 patched_code_.assign(code.begin(), code.end()); 150 code = ArrayRef<const uint8_t>(patched_code_); 182 out_.WriteFully(&code[ 77 AddCompiledMethod( MethodReference method_ref, const ArrayRef<const uint8_t>& code, const ArrayRef<const LinkerPatch>& patches = ArrayRef<const LinkerPatch>()) argument [all...] |
/art/compiler/trampolines/ |
H A D | trampoline_compiler.cc | 87 MemoryRegion code(entry_stub->data(), entry_stub->size()); 88 __ FinalizeInstructions(code); 129 MemoryRegion code(entry_stub->data(), entry_stub->size()); 130 __ FinalizeInstructions(code); 161 MemoryRegion code(entry_stub->data(), entry_stub->size()); 162 __ FinalizeInstructions(code); 193 MemoryRegion code(entry_stub->data(), entry_stub->size()); 194 __ FinalizeInstructions(code); 214 MemoryRegion code(entry_stub->data(), entry_stub->size()); 215 __ FinalizeInstructions(code); [all...] |
/art/compiler/jni/quick/ |
H A D | jni_compiler.h | 34 std::vector<uint8_t>&& code, 40 code_(std::move(code)), 33 JniCompiledMethod(InstructionSet instruction_set, std::vector<uint8_t>&& code, uint32_t frame_size, uint32_t core_spill_mask, uint32_t fp_spill_mask, ArrayRef<const uint8_t> cfi) argument
|