Mercurial > hg > truffle
comparison src/share/vm/prims/unsafe.cpp @ 845:df6caf649ff7
6700789: G1: Enable use of compressed oops with G1 heaps
Summary: Modifications to G1 so as to allow the use of compressed oops.
Reviewed-by: apetrusenko, coleenp, jmasa, kvn, never, phh, tonyp
author | ysr |
---|---|
date | Tue, 14 Jul 2009 15:40:39 -0700 |
parents | a45484ea312d |
children | e392695de029 |
comparison
equal
deleted
inserted
replaced
839:bb18957ad21e | 845:df6caf649ff7 |
---|---|
1046 UnsafeWrapper("Unsafe_CompareAndSwapObject"); | 1046 UnsafeWrapper("Unsafe_CompareAndSwapObject"); |
1047 oop x = JNIHandles::resolve(x_h); | 1047 oop x = JNIHandles::resolve(x_h); |
1048 oop e = JNIHandles::resolve(e_h); | 1048 oop e = JNIHandles::resolve(e_h); |
1049 oop p = JNIHandles::resolve(obj); | 1049 oop p = JNIHandles::resolve(obj); |
1050 HeapWord* addr = (HeapWord *)index_oop_from_field_offset_long(p, offset); | 1050 HeapWord* addr = (HeapWord *)index_oop_from_field_offset_long(p, offset); |
1051 update_barrier_set_pre((void*)addr, e); | 1051 if (UseCompressedOops) { |
1052 update_barrier_set_pre((narrowOop*)addr, e); | |
1053 } else { | |
1054 update_barrier_set_pre((oop*)addr, e); | |
1055 } | |
1052 oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e); | 1056 oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e); |
1053 jboolean success = (res == e); | 1057 jboolean success = (res == e); |
1054 if (success) | 1058 if (success) |
1055 update_barrier_set((void*)addr, x); | 1059 update_barrier_set((void*)addr, x); |
1056 return success; | 1060 return success; |