8165256: ARM64: vm/gc/concurrent/lp30yp10rp30mr0st300 Crash SIGBUS
authorrbackman
Wed, 15 Feb 2017 14:00:13 +0100
changeset 43966 49d84b4ab981
parent 43964 2f5e556a6037
child 43967 b41a5abbeebc
8165256: ARM64: vm/gc/concurrent/lp30yp10rp30mr0st300 Crash SIGBUS Reviewed-by: aph
hotspot/src/cpu/arm/vm/compiledIC_arm.cpp
--- 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);
 }