< prev index next >

src/hotspot/share/oops/instanceRefKlass.hpp

Print this page

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

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