< prev index next >

src/hotspot/share/oops/oop.hpp

Print this page
*** 99,28 ***
    static int header_size() { return sizeof(oopDesc)/HeapWordSize; }
  
    // Returns whether this is an instance of k or an instance of a subclass of k
    inline bool is_a(Klass* k) const;
  
!   // Returns the actual oop size of the object
    inline int size();
  
    // Sometimes (for complicated concurrency-related reasons), it is useful
    // to be able to figure out the size of an object knowing its klass.
    inline int size_given_klass(Klass* klass);
  
    // type test operations (inlined in oop.inline.hpp)
    inline bool is_instance()            const;
    inline bool is_array()               const;
    inline bool is_objArray()            const;
    inline bool is_typeArray()           const;
  
    // type test operations that don't require inclusion of oop.inline.hpp.
    bool is_instance_noinline()          const;
    bool is_array_noinline()             const;
    bool is_objArray_noinline()          const;
    bool is_typeArray_noinline()         const;
  
   protected:
    inline oop        as_oop() const { return const_cast<oopDesc*>(this); }
  
   public:
--- 99,48 ---
    static int header_size() { return sizeof(oopDesc)/HeapWordSize; }
  
    // Returns whether this is an instance of k or an instance of a subclass of k
    inline bool is_a(Klass* k) const;
  
!   // Returns the actual oop size of the object in machine words
    inline int size();
+   // Returns the size of the object after possible compression during GC promotion/compaction
+   inline int compact_size();
+   // Returns the given size in the common case where there is no special compact size
+   inline int compact_size(int size);
  
    // Sometimes (for complicated concurrency-related reasons), it is useful
    // to be able to figure out the size of an object knowing its klass.
    inline int size_given_klass(Klass* klass);
+   // Returns the size of the object after possible compression during GC promotion/compaction
+   inline int compact_size_given_klass(Klass* klass);
+   // Returns the given size in the common case where there is no special compact size
+   inline int compact_size_given_klass(Klass* klass, int size);
+ 
+   // Copies the object
+   inline size_t copy_disjoint(HeapWord* to);
+   inline size_t copy_conjoint(HeapWord* to);
+   inline size_t copy_disjoint_compact(HeapWord* to);
+   inline size_t copy_conjoint_compact(HeapWord* to);
+   inline size_t copy_disjoint(HeapWord* to, size_t word_size);
+   inline size_t copy_disjoint_compact(HeapWord* to, size_t word_size);
+   inline size_t copy_conjoint(HeapWord* to, size_t word_size);
+   inline size_t copy_conjoint_compact(HeapWord* to, size_t word_size);
  
    // type test operations (inlined in oop.inline.hpp)
    inline bool is_instance()            const;
    inline bool is_array()               const;
    inline bool is_objArray()            const;
    inline bool is_typeArray()           const;
+   inline bool is_stackChunk()          const;
  
    // type test operations that don't require inclusion of oop.inline.hpp.
    bool is_instance_noinline()          const;
    bool is_array_noinline()             const;
    bool is_objArray_noinline()          const;
    bool is_typeArray_noinline()         const;
+   bool is_stackChunk_noinline()        const;
  
   protected:
    inline oop        as_oop() const { return const_cast<oopDesc*>(this); }
  
   public:

*** 310,13 ***
  
    // for error reporting
    static void* load_klass_raw(oop obj);
    static void* load_oop_raw(oop obj, int offset);
  
!   // Avoid include gc_globals.hpp in oop.inline.hpp
-   DEBUG_ONLY(bool get_UseParallelGC();)
-   DEBUG_ONLY(bool get_UseG1GC();)
  };
  
  // An oopDesc is not initialized via a constructor.  Space is allocated in
  // the Java heap, and static functions provided here on HeapWord* are used
  // to fill in certain parts of that memory.  The allocated memory is then
--- 330,11 ---
  
    // for error reporting
    static void* load_klass_raw(oop obj);
    static void* load_oop_raw(oop obj, int offset);
  
!   DEBUG_ONLY(bool size_might_change();)
  };
  
  // An oopDesc is not initialized via a constructor.  Space is allocated in
  // the Java heap, and static functions provided here on HeapWord* are used
  // to fill in certain parts of that memory.  The allocated memory is then
< prev index next >