50 friend class InstanceKlass;
51
52 // Constructor
53 InstanceRefKlass(int vtable_len, int itable_len, int static_field_size, int nonstatic_oop_map_size, ReferenceType rt, AccessFlags access_flags, bool is_anonymous)
54 : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
55
56 public:
57 InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
58 // Type testing
59 bool oop_is_instanceRef() const { return true; }
60
61 // Casting from Klass*
62 static InstanceRefKlass* cast(Klass* k) {
63 assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
64 return (InstanceRefKlass*) k;
65 }
66
67 // GC specific object visitors
68 //
69 // Mark Sweep
70 void oop_ms_follow_contents(oop obj);
71 int oop_ms_adjust_pointers(oop obj);
72 #if INCLUDE_ALL_GCS
73 // Parallel Scavenge
74 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
75 // Parallel Compact
76 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
77 void oop_pc_update_pointers(oop obj);
78 #endif
79
80 // Oop fields (and metadata) iterators
81 // [nv = true] Use non-virtual calls to do_oop_nv.
82 // [nv = false] Use virtual calls to do_oop.
83 //
84 // The InstanceRefKlass iterators also support reference processing.
85
86
87 // Forward iteration
88 private:
89 // Iterate over all oop fields and metadata.
90 template <bool nv, class OopClosureType>
|
50 friend class InstanceKlass;
51
52 // Constructor
53 InstanceRefKlass(int vtable_len, int itable_len, int static_field_size, int nonstatic_oop_map_size, ReferenceType rt, AccessFlags access_flags, bool is_anonymous)
54 : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
55
56 public:
57 InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
58 // Type testing
59 bool oop_is_instanceRef() const { return true; }
60
61 // Casting from Klass*
62 static InstanceRefKlass* cast(Klass* k) {
63 assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
64 return (InstanceRefKlass*) k;
65 }
66
67 // GC specific object visitors
68 //
69 // Mark Sweep
70 int oop_ms_adjust_pointers(oop obj);
71 #if INCLUDE_ALL_GCS
72 // Parallel Scavenge
73 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
74 // Parallel Compact
75 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
76 void oop_pc_update_pointers(oop obj);
77 #endif
78
79 // Oop fields (and metadata) iterators
80 // [nv = true] Use non-virtual calls to do_oop_nv.
81 // [nv = false] Use virtual calls to do_oop.
82 //
83 // The InstanceRefKlass iterators also support reference processing.
84
85
86 // Forward iteration
87 private:
88 // Iterate over all oop fields and metadata.
89 template <bool nv, class OopClosureType>
|