< prev index next >

src/hotspot/share/oops/instanceRefKlass.hpp

Print this page

109   // Do discovery while handling InstanceRefKlasses. Reference discovery
110   // is only done if the closure provides a ReferenceProcessor.
111   template <typename T, class OopClosureType, class Contains>
112   static void oop_oop_iterate_discovery(oop obj, ReferenceType type, OopClosureType* closure, Contains& contains);
113 
114   // Used for a special case in G1 where the closure needs to be applied
115   // to the discovered field. Reference discovery is also done if the
116   // closure provides a ReferenceProcessor.
117   template <typename T, class OopClosureType, class Contains>
118   static void oop_oop_iterate_discovered_and_discovery(oop obj, ReferenceType type, OopClosureType* closure, Contains& contains);
119 
120   // Apply the closure to all fields. No reference discovery is done.
121   template <typename T, class OopClosureType, class Contains>
122   static void oop_oop_iterate_fields(oop obj, OopClosureType* closure, Contains& contains);
123 
124   // Apply the closure to all fields, except the referent field. No reference discovery is done.
125   template <typename T, class OopClosureType, class Contains>
126   static void oop_oop_iterate_fields_except_referent(oop obj, OopClosureType* closure, Contains& contains);
127 
128   template <typename T>
129   static void trace_reference_gc(const char *s, oop obj) NOT_DEBUG_RETURN;
130 
131  public:
132   // Update non-static oop maps so 'referent', 'nextPending' and
133   // 'discovered' will look like non-oops
134   static void update_nonstatic_oop_maps(Klass* k);
135 
136  public:
137   // Verification
138   void oop_verify_on(oop obj, outputStream* st);
139 };
140 
141 #endif // SHARE_OOPS_INSTANCEREFKLASS_HPP

109   // Do discovery while handling InstanceRefKlasses. Reference discovery
110   // is only done if the closure provides a ReferenceProcessor.
111   template <typename T, class OopClosureType, class Contains>
112   static void oop_oop_iterate_discovery(oop obj, ReferenceType type, OopClosureType* closure, Contains& contains);
113 
114   // Used for a special case in G1 where the closure needs to be applied
115   // to the discovered field. Reference discovery is also done if the
116   // closure provides a ReferenceProcessor.
117   template <typename T, class OopClosureType, class Contains>
118   static void oop_oop_iterate_discovered_and_discovery(oop obj, ReferenceType type, OopClosureType* closure, Contains& contains);
119 
120   // Apply the closure to all fields. No reference discovery is done.
121   template <typename T, class OopClosureType, class Contains>
122   static void oop_oop_iterate_fields(oop obj, OopClosureType* closure, Contains& contains);
123 
124   // Apply the closure to all fields, except the referent field. No reference discovery is done.
125   template <typename T, class OopClosureType, class Contains>
126   static void oop_oop_iterate_fields_except_referent(oop obj, OopClosureType* closure, Contains& contains);
127 
128   template <typename T>
129   void trace_reference_gc(const char *s, oop obj) NOT_DEBUG_RETURN;
130 
131  public:
132   // Update non-static oop maps so 'referent', 'nextPending' and
133   // 'discovered' will look like non-oops
134   static void update_nonstatic_oop_maps(Klass* k);
135 
136  public:
137   // Verification
138   void oop_verify_on(oop obj, outputStream* st);
139 };
140 
141 #endif // SHARE_OOPS_INSTANCEREFKLASS_HPP
< prev index next >