< prev index next >
src/share/vm/oops/oop.hpp
Print this page
rev 12906 : [mq]: gc_interface
*** 36,49 ****
// oopDesc is abstract.
// (see oopHierarchy for complete oop class hierarchy)
//
// no virtual functions allowed
- // store into oop with store check
- template <class T> inline void oop_store(T* p, oop v);
- template <class T> inline void oop_store(volatile T* p, oop v);
-
extern bool always_do_update_barrier;
// Forward declarations.
class OopClosure;
class ScanClosure;
--- 36,45 ----
*** 120,129 ****
--- 116,128 ----
bool is_instance_noinline() const;
bool is_array_noinline() const;
bool is_objArray_noinline() const;
bool is_typeArray_noinline() const;
+ protected:
+ inline oop oop_base() const { return const_cast<oopDesc*>(this); }
+
private:
// field addresses in oop
inline void* field_base(int offset) const;
inline jbyte* byte_field_addr(int offset) const;
*** 160,267 ****
static inline narrowOop encode_heap_oop_not_null(oop v);
static inline narrowOop encode_heap_oop(oop v);
// Load an oop out of the Java heap as is without decoding.
// Called by GC to check for null before decoding.
! static inline narrowOop load_heap_oop(narrowOop* p) { return *p; }
! static inline oop load_heap_oop(oop* p) { return *p; }
// Load an oop out of Java heap and decode it to an uncompressed oop.
static inline oop load_decode_heap_oop_not_null(narrowOop* p);
! static inline oop load_decode_heap_oop_not_null(oop* p) { return *p; }
static inline oop load_decode_heap_oop(narrowOop* p);
! static inline oop load_decode_heap_oop(oop* p) { return *p; }
// Store already encoded heap oop into the heap.
! static inline void store_heap_oop(narrowOop* p, narrowOop v) { *p = v; }
! static inline void store_heap_oop(oop* p, oop v) { *p = v; }
// Encode oop if UseCompressedOops and store into the heap.
static inline void encode_store_heap_oop_not_null(narrowOop* p, oop v);
! static inline void encode_store_heap_oop_not_null(oop* p, oop v) { *p = v; }
static inline void encode_store_heap_oop(narrowOop* p, oop v);
! static inline void encode_store_heap_oop(oop* p, oop v) { *p = v; }
!
! static inline void release_store_heap_oop(volatile narrowOop* p, narrowOop v);
! static inline void release_store_heap_oop(volatile oop* p, oop v);
!
! static inline void release_encode_store_heap_oop_not_null(volatile narrowOop* p, oop v);
! static inline void release_encode_store_heap_oop_not_null(volatile oop* p, oop v);
! static inline void release_encode_store_heap_oop(volatile narrowOop* p, oop v);
! static inline void release_encode_store_heap_oop(volatile oop* p, oop v);
! static inline oop atomic_exchange_oop(oop exchange_value, volatile HeapWord *dest);
! static inline oop atomic_compare_exchange_oop(oop exchange_value,
volatile HeapWord *dest,
! oop compare_value,
! bool prebarrier = false);
// Access to fields in a instanceOop through these methods.
! inline oop obj_field(int offset) const;
! inline void obj_field_put(int offset, oop value);
! inline void obj_field_put_raw(int offset, oop value);
! inline void obj_field_put_volatile(int offset, oop value);
! inline Metadata* metadata_field(int offset) const;
! inline void metadata_field_put(int offset, Metadata* value);
! inline jbyte byte_field(int offset) const;
! inline void byte_field_put(int offset, jbyte contents);
! inline jchar char_field(int offset) const;
! inline void char_field_put(int offset, jchar contents);
! inline jboolean bool_field(int offset) const;
! inline void bool_field_put(int offset, jboolean contents);
! inline jint int_field(int offset) const;
! inline void int_field_put(int offset, jint contents);
! inline jshort short_field(int offset) const;
! inline void short_field_put(int offset, jshort contents);
! inline jlong long_field(int offset) const;
! inline void long_field_put(int offset, jlong contents);
! inline jfloat float_field(int offset) const;
! inline void float_field_put(int offset, jfloat contents);
! inline jdouble double_field(int offset) const;
! inline void double_field_put(int offset, jdouble contents);
! inline address address_field(int offset) const;
! inline void address_field_put(int offset, address contents);
! inline oop obj_field_acquire(int offset) const;
! inline void release_obj_field_put(int offset, oop value);
! inline jbyte byte_field_acquire(int offset) const;
! inline void release_byte_field_put(int offset, jbyte contents);
! inline jchar char_field_acquire(int offset) const;
! inline void release_char_field_put(int offset, jchar contents);
! inline jboolean bool_field_acquire(int offset) const;
! inline void release_bool_field_put(int offset, jboolean contents);
! inline jint int_field_acquire(int offset) const;
! inline void release_int_field_put(int offset, jint contents);
! inline jshort short_field_acquire(int offset) const;
! inline void release_short_field_put(int offset, jshort contents);
! inline jlong long_field_acquire(int offset) const;
! inline void release_long_field_put(int offset, jlong contents);
! inline jfloat float_field_acquire(int offset) const;
! inline void release_float_field_put(int offset, jfloat contents);
! inline jdouble double_field_acquire(int offset) const;
! inline void release_double_field_put(int offset, jdouble contents);
! inline address address_field_acquire(int offset) const;
! inline void release_address_field_put(int offset, address contents);
// printing functions for VM debugging
void print_on(outputStream* st) const; // First level print
void print_value_on(outputStream* st) const; // Second level print.
void print_address_on(outputStream* st) const; // Address printing
--- 159,257 ----
static inline narrowOop encode_heap_oop_not_null(oop v);
static inline narrowOop encode_heap_oop(oop v);
// Load an oop out of the Java heap as is without decoding.
// Called by GC to check for null before decoding.
! static inline narrowOop load_heap_oop(narrowOop* p);
! static inline oop load_heap_oop(oop* p);
// Load an oop out of Java heap and decode it to an uncompressed oop.
static inline oop load_decode_heap_oop_not_null(narrowOop* p);
! static inline oop load_decode_heap_oop_not_null(oop* p);
static inline oop load_decode_heap_oop(narrowOop* p);
! static inline oop load_decode_heap_oop(oop* p);
// Store already encoded heap oop into the heap.
! static inline void store_heap_oop(narrowOop* p, narrowOop v);
! static inline void store_heap_oop(oop* p, oop v);
// Encode oop if UseCompressedOops and store into the heap.
static inline void encode_store_heap_oop_not_null(narrowOop* p, oop v);
! static inline void encode_store_heap_oop_not_null(oop* p, oop v);
static inline void encode_store_heap_oop(narrowOop* p, oop v);
! static inline void encode_store_heap_oop(oop* p, oop v);
! static oop atomic_exchange_oop(oop exchange_value, volatile HeapWord *dest);
! static oop atomic_compare_exchange_oop(oop exchange_value,
volatile HeapWord *dest,
! oop compare_value);
// Access to fields in a instanceOop through these methods.
! oop obj_field(int offset) const;
! void obj_field_put(int offset, oop value);
! void obj_field_put_raw(int offset, oop value);
! void obj_field_put_volatile(int offset, oop value);
! Metadata* metadata_field(int offset) const;
! void metadata_field_put(int offset, Metadata* value);
! jbyte byte_field(int offset) const;
! void byte_field_put(int offset, jbyte contents);
! jchar char_field(int offset) const;
! void char_field_put(int offset, jchar contents);
! jboolean bool_field(int offset) const;
! void bool_field_put(int offset, jboolean contents);
! jint int_field(int offset) const;
! void int_field_put(int offset, jint contents);
! jshort short_field(int offset) const;
! void short_field_put(int offset, jshort contents);
! jlong long_field(int offset) const;
! void long_field_put(int offset, jlong contents);
! jfloat float_field(int offset) const;
! void float_field_put(int offset, jfloat contents);
! jdouble double_field(int offset) const;
! void double_field_put(int offset, jdouble contents);
! address address_field(int offset) const;
! void address_field_put(int offset, address contents);
! oop obj_field_acquire(int offset) const;
! void release_obj_field_put(int offset, oop value);
! jbyte byte_field_acquire(int offset) const;
! void release_byte_field_put(int offset, jbyte contents);
! jchar char_field_acquire(int offset) const;
! void release_char_field_put(int offset, jchar contents);
! jboolean bool_field_acquire(int offset) const;
! void release_bool_field_put(int offset, jboolean contents);
! jint int_field_acquire(int offset) const;
! void release_int_field_put(int offset, jint contents);
! jshort short_field_acquire(int offset) const;
! void release_short_field_put(int offset, jshort contents);
! jlong long_field_acquire(int offset) const;
! void release_long_field_put(int offset, jlong contents);
! jfloat float_field_acquire(int offset) const;
! void release_float_field_put(int offset, jfloat contents);
! jdouble double_field_acquire(int offset) const;
! void release_double_field_put(int offset, jdouble contents);
! address address_field_acquire(int offset) const;
! void release_address_field_put(int offset, address contents);
// printing functions for VM debugging
void print_on(outputStream* st) const; // First level print
void print_value_on(outputStream* st) const; // Second level print.
void print_address_on(outputStream* st) const; // Address printing
< prev index next >