53 : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
54
55 public:
56 InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
57 // Type testing
58 bool oop_is_instanceRef() const { return true; }
59
60 // Casting from Klass*
61 static InstanceRefKlass* cast(Klass* k) {
62 assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
63 return (InstanceRefKlass*) k;
64 }
65
66 // Garbage collection
67 int oop_adjust_pointers(oop obj);
68 void oop_follow_contents(oop obj);
69
70 // Parallel Scavenge and Parallel Old
71 PARALLEL_GC_DECLS
72
73 int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
74 return oop_oop_iterate_v(obj, blk);
75 }
76 int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
77 return oop_oop_iterate_v_m(obj, blk, mr);
78 }
79
80 #define InstanceRefKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
81 int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk); \
82 int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
83
84 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
85 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
86
87 #if INCLUDE_ALL_GCS
88 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \
89 int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
90
91 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
92 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
|
53 : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
54
55 public:
56 InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
57 // Type testing
58 bool oop_is_instanceRef() const { return true; }
59
60 // Casting from Klass*
61 static InstanceRefKlass* cast(Klass* k) {
62 assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
63 return (InstanceRefKlass*) k;
64 }
65
66 // Garbage collection
67 int oop_adjust_pointers(oop obj);
68 void oop_follow_contents(oop obj);
69
70 // Parallel Scavenge and Parallel Old
71 PARALLEL_GC_DECLS
72
73 private:
74 template<class OopClosureType, class OopType, bool is_extended>
75 void do_metadata_if_applicable(oop obj, OopClosureType *cl);
76
77 public:
78 template<class OopClosureType>
79 int oop_iterate_and_dispatch(oop obj, OopClosureType *cl);
80
81 int get_linear_oop_intervals(oop obj, OopInterval* &start, int &size) { return -_instance_ref_klass; }
82
83 int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
84 return oop_oop_iterate_v(obj, blk);
85 }
86 int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
87 return oop_oop_iterate_v_m(obj, blk, mr);
88 }
89
90 #define InstanceRefKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
91 int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk); \
92 int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
93
94 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
95 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
96
97 #if INCLUDE_ALL_GCS
98 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \
99 int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
100
101 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
102 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
|