/art/compiler/linker/arm/ |
H A D | relative_patcher_thumb2.h | 60 static uint32_t EncodeBakerReadBarrierGcRootData(uint32_t root_reg, bool narrow) { argument 61 CheckValidReg(root_reg); 62 DCHECK(!narrow || root_reg < 8u) << root_reg; 66 BakerReadBarrierFirstRegField::Encode(root_reg) |
|
H A D | relative_patcher_thumb2.cc | 152 // LDR (immediate), encoding T3, with correct root_reg. 153 const uint32_t root_reg = BakerReadBarrierFirstRegField::Decode(encoded_data); local 154 CHECK_EQ(prev_insn & 0xfff0f000u, 0xf8d00000u | (root_reg << 12)); 158 // LDR (immediate), encoding T1, with correct root_reg. 159 const uint32_t root_reg = BakerReadBarrierFirstRegField::Decode(encoded_data); local 160 CHECK_EQ(prev_insn & 0xf807u, 0x6800u | root_reg); 316 Register root_reg(BakerReadBarrierFirstRegField::Decode(encoded_data)); 317 CheckValidReg(root_reg.GetCode()); 323 __ CompareAndBranchIfZero(root_reg, &return_label, /* is_far_target */ false); 324 MemOperand lock_word(root_reg, mirro [all...] |
H A D | relative_patcher_thumb2_test.cc | 247 std::vector<uint8_t> CompileBakerGcRootThunk(uint32_t root_reg, bool narrow) { argument 249 0u, Thumb2RelativePatcher::EncodeBakerReadBarrierGcRootData(root_reg, narrow)); 1069 for (uint32_t root_reg : valid_regs) { 1071 uint32_t ldr = kLdrWInsn | (/* offset */ 8) | (/* base_reg */ 0 << 16) | (root_reg << 12); 1078 Thumb2RelativePatcher::EncodeBakerReadBarrierGcRootData(root_reg, /* narrow */ false)), 1087 for (uint32_t root_reg : valid_regs) { 1090 uint32_t ldr = kLdrWInsn | (/* offset */ 8) | (/* base_reg */ 0 << 16) | (root_reg << 12); 1095 std::vector<uint8_t> expected_thunk = CompileBakerGcRootThunk(root_reg, /* narrow */ false); 1105 // Verify that the fast-path null-check uses the correct register, i.e. root_reg. 1106 if (root_reg < [all...] |
/art/compiler/linker/arm64/ |
H A D | relative_patcher_arm64.h | 50 static uint32_t EncodeBakerReadBarrierGcRootData(uint32_t root_reg) { argument 51 CheckValidReg(root_reg); 53 BakerReadBarrierFirstRegField::Encode(root_reg) |
|
H A D | relative_patcher_arm64.cc | 346 // LDR (immediate) with correct root_reg. 347 const uint32_t root_reg = BakerReadBarrierFirstRegField::Decode(encoded_data); local 348 CHECK_EQ(prev_insn & 0xffc0001fu, 0xb9400000u | root_reg); 482 auto root_reg = local 484 CheckValidReg(root_reg.GetCode()); 489 __ Cbz(root_reg, &return_label); 490 MemOperand lock_word(root_reg.X(), mirror::Object::MonitorOffset().Int32Value()); 502 __ Mov(ip0.W(), root_reg); 505 __ Lsl(root_reg, ip0.W(), LockWord::kForwardingAddressShift);
|
H A D | relative_patcher_arm64_test.cc | 492 std::vector<uint8_t> CompileBakerGcRootThunk(uint32_t root_reg) { argument 494 0u, Arm64RelativePatcher::EncodeBakerReadBarrierGcRootData(root_reg)); 1242 for (uint32_t root_reg : valid_regs) { 1244 uint32_t ldr = kLdrWInsn | (/* offset */ 8 << (10 - 2)) | (/* base_reg */ 0 << 5) | root_reg; 1250 kLiteralOffset, Arm64RelativePatcher::EncodeBakerReadBarrierGcRootData(root_reg)), 1259 for (uint32_t root_reg : valid_regs) { 1263 uint32_t ldr = kLdrWInsn | (/* offset */ 8 << (10 - 2)) | (/* base_reg */ 0 << 5) | root_reg; 1268 std::vector<uint8_t> expected_thunk = CompileBakerGcRootThunk(root_reg); 1278 // Verify that the fast-path null-check CBZ uses the correct register, i.e. root_reg. 1280 ASSERT_EQ(0x34000000u | root_reg, GetOutputIns [all...] |
/art/compiler/optimizing/ |
H A D | code_generator_arm64.cc | 5916 Register root_reg = RegisterFrom(root, DataType::Type::kReference); 5934 // goto gc_root_thunk<root_reg>(lr) 5943 linker::Arm64RelativePatcher::EncodeBakerReadBarrierGcRootData(root_reg.GetCode()); 5954 __ ldr(root_reg, MemOperand(obj.X(), offset)); 5978 __ Ldr(root_reg, MemOperand(obj, offset)); 5980 codegen_->EmitLdrOffsetPlaceholder(fixup_label, root_reg, obj); 5998 __ Add(root_reg.X(), obj.X(), offset); 6000 codegen_->EmitAddPlaceholder(fixup_label, root_reg.X(), obj.X()); 6009 __ Ldr(root_reg, MemOperand(obj, offset)); 6011 codegen_->EmitLdrOffsetPlaceholder(fixup_label, root_reg, ob [all...] |
H A D | code_generator_arm_vixl.cc | 8339 vixl32::Register root_reg = RegisterFrom(root); local 8357 // goto gc_root_thunk<root_reg>(lr) 8363 bool narrow = CanEmitNarrowLdr(root_reg, obj, offset); 8365 root_reg.GetCode(), narrow); 8376 __ ldr(EncodingSize(narrow ? Narrow : Wide), root_reg, MemOperand(obj, offset)); 8401 GetAssembler()->LoadFromOffset(kLoadWord, root_reg, obj, offset); 8417 __ Add(root_reg, obj, offset); 8424 GetAssembler()->LoadFromOffset(kLoadWord, root_reg, obj, offset); 8426 // do not have to unpoison `root_reg` here.
|
H A D | code_generator_mips64.cc | 5049 GpuRegister root_reg = root.AsRegister<GpuRegister>(); 5069 // temp = &gc_root_thunk<root_reg> 5075 const int thunk_disp = GetBakerMarkGcRootThunkDisplacement(root_reg); 5095 __ LoadFromOffset(kLoadUnsignedWord, root_reg, base, offset_low); // Single instruction 5116 __ LoadFromOffset(kLoadUnsignedWord, root_reg, obj, offset); 5149 __ Daddiu64(root_reg, obj, static_cast<int32_t>(offset)); 5159 __ LoadFromOffset(kLoadUnsignedWord, root_reg, obj, offset); 5161 // do not have to unpoison `root_reg` here.
|
H A D | code_generator_x86.cc | 7150 Register root_reg = root.AsRegister<Register>(); local 7164 __ movl(root_reg, address); 7192 __ leal(root_reg, address); 7202 __ movl(root_reg, address); 7207 // do not have to unpoison `root_reg` here.
|
H A D | code_generator_x86_64.cc | 6532 CpuRegister root_reg = root.AsRegister<CpuRegister>(); local 6546 __ movl(root_reg, address); 6574 __ leaq(root_reg, address); 6584 __ movl(root_reg, address); 6589 // do not have to unpoison `root_reg` here.
|
H A D | code_generator_mips.cc | 6880 Register root_reg = root.AsRegister<Register>(); local 6900 // temp = &gc_root_thunk<root_reg> 6907 const int thunk_disp = GetBakerMarkGcRootThunkDisplacement(root_reg); 6928 __ LoadFromOffset(kLoadWord, root_reg, base, offset_low); // Single instruction 6957 __ LoadFromOffset(kLoadWord, root_reg, obj, offset); 6994 __ Addiu32(root_reg, obj, offset); 7008 __ LoadFromOffset(kLoadWord, root_reg, obj, offset); 7010 // do not have to unpoison `root_reg` here.
|