# HG changeset patch # User roland # Date 1389689085 -3600 # Node ID 12ad8db39f76884d0c4fbbad2739b0042d11d2b7 # Parent 16e0c6c84a9104dfe84520aa8c00189b73d33c5e 8028764: dtrace/hotspot_jni/ALL/ALL001 crashes the vm on Solaris-amd64, SIGSEGV in MarkSweep::follow_stack()+0x8a Summary: C1 generates code to encode compressed oop into tmp register before runtime call for patching where GC may happen Reviewed-by: iveresov, twisti, kvn Contributed-by: mgerdin diff -r 16e0c6c84a91 -r 12ad8db39f76 src/cpu/x86/vm/c1_LIRAssembler_x86.cpp --- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Mon Jan 13 16:00:46 2014 -0800 +++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Tue Jan 14 09:44:45 2014 +0100 @@ -38,6 +38,7 @@ #include "nativeInst_x86.hpp" #include "oops/objArrayKlass.hpp" #include "runtime/sharedRuntime.hpp" +#include "vmreg_x86.inline.hpp" // These masks are used to provide 128-bit aligned bitmasks to the XMM @@ -1006,6 +1007,9 @@ if (UseCompressedOops && !wide) { __ movptr(compressed_src, src->as_register()); __ encode_heap_oop(compressed_src); + if (patch_code != lir_patch_none) { + info->oop_map()->set_narrowoop(compressed_src->as_VMReg()); + } } #endif }