< prev index next >

src/hotspot/share/oops/oop.hpp

Print this page




  64 
  65  public:
  66   markOop  mark()      const { return _mark; }
  67   markOop* mark_addr() const { return (markOop*) &_mark; }
  68 
  69   void set_mark(volatile markOop m) { _mark = m; }
  70 
  71   inline void release_set_mark(markOop m);
  72   inline markOop cas_set_mark(markOop new_mark, markOop old_mark);
  73 
  74   // Used only to re-initialize the mark word (e.g., of promoted
  75   // objects during a GC) -- requires a valid klass pointer
  76   inline void init_mark();
  77 
  78   inline Klass* klass() const;
  79   inline Klass* klass_or_null() const volatile;
  80   inline Klass* klass_or_null_acquire() const volatile;
  81   inline Klass** klass_addr();
  82   inline narrowKlass* compressed_klass_addr();
  83 



  84   inline void set_klass(Klass* k);
  85   inline void release_set_klass(Klass* k);
  86 
  87   // For klass field compression
  88   inline int klass_gap() const;
  89   inline void set_klass_gap(int z);
  90   // For when the klass pointer is being used as a linked list "next" field.
  91   inline void set_klass_to_list_ptr(oop k);
  92   inline oop list_ptr_from_klass();
  93 
  94   // size of object header, aligned to platform wordSize
  95   static int header_size() { return sizeof(oopDesc)/HeapWordSize; }
  96 
  97   // Returns whether this is an instance of k or an instance of a subclass of k
  98   inline bool is_a(Klass* k) const;
  99 
 100   // Returns the actual oop size of the object
 101   inline int size();
 102 
 103   // Sometimes (for complicated concurrency-related reasons), it is useful




  64 
  65  public:
  66   markOop  mark()      const { return _mark; }
  67   markOop* mark_addr() const { return (markOop*) &_mark; }
  68 
  69   void set_mark(volatile markOop m) { _mark = m; }
  70 
  71   inline void release_set_mark(markOop m);
  72   inline markOop cas_set_mark(markOop new_mark, markOop old_mark);
  73 
  74   // Used only to re-initialize the mark word (e.g., of promoted
  75   // objects during a GC) -- requires a valid klass pointer
  76   inline void init_mark();
  77 
  78   inline Klass* klass() const;
  79   inline Klass* klass_or_null() const volatile;
  80   inline Klass* klass_or_null_acquire() const volatile;
  81   inline Klass** klass_addr();
  82   inline narrowKlass* compressed_klass_addr();
  83 
  84   // oop only test (does not load klass)
  85   inline bool klass_is_value_type();
  86 
  87   inline void set_klass(Klass* k);
  88   inline void release_set_klass(Klass* k);
  89 
  90   // For klass field compression
  91   inline int klass_gap() const;
  92   inline void set_klass_gap(int z);
  93   // For when the klass pointer is being used as a linked list "next" field.
  94   inline void set_klass_to_list_ptr(oop k);
  95   inline oop list_ptr_from_klass();
  96 
  97   // size of object header, aligned to platform wordSize
  98   static int header_size() { return sizeof(oopDesc)/HeapWordSize; }
  99 
 100   // Returns whether this is an instance of k or an instance of a subclass of k
 101   inline bool is_a(Klass* k) const;
 102 
 103   // Returns the actual oop size of the object
 104   inline int size();
 105 
 106   // Sometimes (for complicated concurrency-related reasons), it is useful


< prev index next >