OpenJDK / jdk8 / jdk8 / hotspot
changeset 5791:12ad8db39f76
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 <mikael.gerdin@oracle.com>
author | roland |
---|---|
date | Tue, 14 Jan 2014 09:44:45 +0100 |
parents | 16e0c6c84a91 |
children | 8b81451dc7f7 |
files | src/cpu/x86/vm/c1_LIRAssembler_x86.cpp |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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 }