Try to fix aarch64 thread problem

This commit is contained in:
khanhduytran0 2020-09-24 09:57:39 +07:00
parent 7e5ed048df
commit cea2aa48ec

View File

@ -5270,20 +5270,22 @@ void MacroAssembler::char_array_compress(Register src, Register dst, Register le
// call to Thread::current or, indeed, the call setup code. // call to Thread::current or, indeed, the call setup code.
// x86 appears to save C arg registers. // x86 appears to save C arg registers.
void MacroAssembler::get_thread(Register dst) { void MacroAssembler::get_thread(Register dst) {
// Save all call-clobbered regs except dst, plus r19 and r20. // - Save all call-clobbered regs except dst, plus r19 and r20.
RegSet saved_regs = RegSet::range(r0, r20) + lr - dst; RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
// - RegSet saved_regs = RegSet::range(r0, r20) + lr - dst;
// + RegSet saved_regs = RegSet::range(r0, r1) + lr - dst; // + RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
push(saved_regs, sp); push(saved_regs, sp);
// FIX-ME: implement // - FIX-ME: implement
// return Thread::current() // - return Thread::current()
// + mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper)); // + mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));
// + blrt(lr, 1, 0, 1); mov(lr, CAST_FROM_FN_PTR(address, Thread::current));
blrt(lr, 1, 0, 1);
if (dst != c_rarg0) { if (dst != c_rarg0) {
mov(dst, c_rarg0); mov(dst, c_rarg0);
} }
// restore pushed registers // - restore pushed registers
pop(saved_regs, sp); pop(saved_regs, sp);
} }