< prev index next >
src/cpu/aarch32/vm/nativeInst_aarch32.cpp
Print this page
rev 8069 : 8164652: aarch32: C1 port
*** 90,103 ****
// patching should be not only safe (i.e. this call could be executed by some thread),
// but it also should be atomic (some other thread could call NativeCall::destination()
// and see valid destination value)
if (NativeImmCall::is_at(addr())) {
! assert(false, "could be patched mt_safe way, but should not be requested to. "
! "Known mt_safe requests have arbitrary destination offset. "
! "Use trampoline_call for this.");
! ShouldNotCallThis();
} else if (NativeTrampolineCall::is_at(addr())) {
NativeTrampolineCall::from(addr())->set_destination_mt_safe(dest);
} else {
ShouldNotReachHere();
}
--- 90,101 ----
// patching should be not only safe (i.e. this call could be executed by some thread),
// but it also should be atomic (some other thread could call NativeCall::destination()
// and see valid destination value)
if (NativeImmCall::is_at(addr())) {
! NativeImmCall::from(addr())->set_destination(dest);
! ICache::invalidate_word(addr());
} else if (NativeTrampolineCall::is_at(addr())) {
NativeTrampolineCall::from(addr())->set_destination_mt_safe(dest);
} else {
ShouldNotReachHere();
}
< prev index next >