# HG changeset patch # User rbackman # Date 1487163613 -3600 # Node ID 49d84b4ab981d321af45589dbbcc5d820fe353b9 # Parent 2f5e556a603792379180654b6e8dbe0d3bcee41d 8165256: ARM64: vm/gc/concurrent/lp30yp10rp30mr0st300 Crash SIGBUS Reviewed-by: aph diff -r 2f5e556a6037 -r 49d84b4ab981 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); }