8165256: ARM64: vm/gc/concurrent/lp30yp10rp30mr0st300 Crash SIGBUS
Reviewed-by: aph
--- a/hotspot/src/cpu/arm/vm/compiledIC_arm.cpp Wed Feb 15 22:19:13 2017 -0500
+++ b/hotspot/src/cpu/arm/vm/compiledIC_arm.cpp Wed Feb 15 14:00:13 2017 +0100
@@ -85,17 +85,17 @@
}
#undef __
-// size of C2 call stub, compiled java to interpretor
-int CompiledStaticCall::to_interp_stub_size() {
- return 8 * NativeInstruction::instruction_size;
-}
-
// Relocation entries for call stub, compiled java to interpreter.
int CompiledStaticCall::reloc_to_interp_stub() {
return 10; // 4 in emit_to_interp_stub + 1 in Java_Static_Call
}
#endif // COMPILER2 || JVMCI
+// size of C2 call stub, compiled java to interpretor
+int CompiledStaticCall::to_interp_stub_size() {
+ return 8 * NativeInstruction::instruction_size;
+}
+
void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, address entry) {
address stub = find_stub(/*is_aot*/ false);
guarantee(stub != NULL, "stub not found");
@@ -125,6 +125,8 @@
method_holder->set_data((intptr_t)callee());
jump->set_jump_destination(entry);
+ ICache::invalidate_range(stub, to_interp_stub_size());
+
// Update jump to call.
set_destination_mt_safe(stub);
}