src/share/vm/oops/oop.inline.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/oops/oop.inline.hpp Thu Sep 8 02:26:34 2011
--- new/src/share/vm/oops/oop.inline.hpp Thu Sep 8 02:26:34 2011
*** 319,337 ****
--- 319,347 ----
inline oop oopDesc::obj_field(int offset) const {
return UseCompressedOops ?
load_decode_heap_oop(obj_field_addr<narrowOop>(offset)) :
load_decode_heap_oop(obj_field_addr<oop>(offset));
}
+ inline volatile oop oopDesc::obj_field_volatile(int offset) const {
+ volatile oop value = obj_field(offset);
+ OrderAccess::acquire();
+ return value;
+ }
inline void oopDesc::obj_field_put(int offset, oop value) {
UseCompressedOops ? oop_store(obj_field_addr<narrowOop>(offset), value) :
oop_store(obj_field_addr<oop>(offset), value);
}
! inline void oopDesc::obj_field_raw_put(int offset, oop value) {
! inline void oopDesc::obj_field_put_raw(int offset, oop value) {
UseCompressedOops ?
encode_store_heap_oop(obj_field_addr<narrowOop>(offset), value) :
encode_store_heap_oop(obj_field_addr<oop>(offset), value);
}
+ inline void oopDesc::obj_field_put_volatile(int offset, oop value) {
+ OrderAccess::release();
+ obj_field_put(offset, value);
+ OrderAccess::fence();
+ }
inline jbyte oopDesc::byte_field(int offset) const { return (jbyte) *byte_field_addr(offset); }
inline void oopDesc::byte_field_put(int offset, jbyte contents) { *byte_field_addr(offset) = (jint) contents; }
inline jboolean oopDesc::bool_field(int offset) const { return (jboolean) *bool_field_addr(offset); }
src/share/vm/oops/oop.inline.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File