| Index: src/a64/macro-assembler-a64.cc
|
| diff --git a/src/a64/macro-assembler-a64.cc b/src/a64/macro-assembler-a64.cc
|
| index 3c1a6e8a33098e5ca33ecf8a22d049fd14d8f16c..a2ead104bcb64f06a844c680e2ad37b466ac10fb 100644
|
| --- a/src/a64/macro-assembler-a64.cc
|
| +++ b/src/a64/macro-assembler-a64.cc
|
| @@ -4089,6 +4089,24 @@ void MacroAssembler::JumpIfBlack(Register object,
|
| }
|
|
|
|
|
| +void MacroAssembler::GetRelocatedValueLocation(Register ldr_location,
|
| + Register result) {
|
| + ASSERT(!result.Is(ldr_location));
|
| + const uint32_t kLdrLitOffset_lsb = 5;
|
| + const uint32_t kLdrLitOffset_width = 19;
|
| + Ldr(result, MemOperand(ldr_location));
|
| + if (emit_debug_code()) {
|
| + And(result, result, LoadLiteralFMask);
|
| + Cmp(result, LoadLiteralFixed);
|
| + Check(eq, "The instruction to patch should be a load literal.");
|
| + // The instruction was clobbered. Reload it.
|
| + Ldr(result, MemOperand(ldr_location));
|
| + }
|
| + Sbfx(result, result, kLdrLitOffset_lsb, kLdrLitOffset_width);
|
| + Add(result, ldr_location, Operand(result, LSL, kWordSizeInBytesLog2));
|
| +}
|
| +
|
| +
|
| void MacroAssembler::EnsureNotWhite(
|
| Register value,
|
| Register bitmap_scratch,
|
|
|