Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 17496: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 | 9acbfe04b5c3 |
children | 4ca6dc0799b6 876390ee9b6f |
comparison
equal
deleted
inserted
replaced
17495:16e0c6c84a91 | 17496:12ad8db39f76 |
---|---|
36 #include "memory/barrierSet.hpp" | 36 #include "memory/barrierSet.hpp" |
37 #include "memory/cardTableModRefBS.hpp" | 37 #include "memory/cardTableModRefBS.hpp" |
38 #include "nativeInst_x86.hpp" | 38 #include "nativeInst_x86.hpp" |
39 #include "oops/objArrayKlass.hpp" | 39 #include "oops/objArrayKlass.hpp" |
40 #include "runtime/sharedRuntime.hpp" | 40 #include "runtime/sharedRuntime.hpp" |
41 #include "vmreg_x86.inline.hpp" | |
41 | 42 |
42 | 43 |
43 // These masks are used to provide 128-bit aligned bitmasks to the XMM | 44 // These masks are used to provide 128-bit aligned bitmasks to the XMM |
44 // instructions, to allow sign-masking or sign-bit flipping. They allow | 45 // instructions, to allow sign-masking or sign-bit flipping. They allow |
45 // fast versions of NegF/NegD and AbsF/AbsD. | 46 // fast versions of NegF/NegD and AbsF/AbsD. |
1004 __ verify_oop(src->as_register()); | 1005 __ verify_oop(src->as_register()); |
1005 #ifdef _LP64 | 1006 #ifdef _LP64 |
1006 if (UseCompressedOops && !wide) { | 1007 if (UseCompressedOops && !wide) { |
1007 __ movptr(compressed_src, src->as_register()); | 1008 __ movptr(compressed_src, src->as_register()); |
1008 __ encode_heap_oop(compressed_src); | 1009 __ encode_heap_oop(compressed_src); |
1010 if (patch_code != lir_patch_none) { | |
1011 info->oop_map()->set_narrowoop(compressed_src->as_VMReg()); | |
1012 } | |
1009 } | 1013 } |
1010 #endif | 1014 #endif |
1011 } | 1015 } |
1012 | 1016 |
1013 if (patch_code != lir_patch_none) { | 1017 if (patch_code != lir_patch_none) { |