mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 03:54:33 +02:00
8129417: Oop iteration clean-up to remove oop_ms_follow_contents
Reviewed-by: pliden, ehelin
This commit is contained in:
parent
72c1fe89b2
commit
dada9bc32c
39 changed files with 362 additions and 454 deletions
|
@ -61,7 +61,7 @@ class ExtendedOopClosure : public OopClosure {
|
|||
//
|
||||
// 1) do_klass on the header klass pointer.
|
||||
// 2) do_klass on the klass pointer in the mirrors.
|
||||
// 3) do_class_loader_data on the class loader data in class loaders.
|
||||
// 3) do_cld on the class loader data in class loaders.
|
||||
//
|
||||
// The virtual (without suffix) and the non-virtual (with _nv suffix) need
|
||||
// to be updated together, or else the devirtualization will break.
|
||||
|
@ -71,13 +71,14 @@ class ExtendedOopClosure : public OopClosure {
|
|||
// ExtendedOopClosures that don't need to walk the metadata.
|
||||
// Currently, only CMS and G1 need these.
|
||||
|
||||
virtual bool do_metadata() { return do_metadata_nv(); }
|
||||
bool do_metadata_nv() { return false; }
|
||||
virtual bool do_metadata() { return do_metadata_nv(); }
|
||||
|
||||
virtual void do_klass(Klass* k) { do_klass_nv(k); }
|
||||
void do_klass_nv(Klass* k) { ShouldNotReachHere(); }
|
||||
void do_klass_nv(Klass* k) { ShouldNotReachHere(); }
|
||||
virtual void do_klass(Klass* k) { do_klass_nv(k); }
|
||||
|
||||
virtual void do_class_loader_data(ClassLoaderData* cld) { ShouldNotReachHere(); }
|
||||
void do_cld_nv(ClassLoaderData* cld) { ShouldNotReachHere(); }
|
||||
virtual void do_cld(ClassLoaderData* cld) { do_cld_nv(cld); }
|
||||
|
||||
// True iff this closure may be safely applied more than once to an oop
|
||||
// location without an intervening "major reset" (like the end of a GC).
|
||||
|
@ -180,13 +181,14 @@ class MetadataAwareOopClosure: public ExtendedOopClosure {
|
|||
_klass_closure.initialize(this);
|
||||
}
|
||||
|
||||
virtual bool do_metadata() { return do_metadata_nv(); }
|
||||
inline bool do_metadata_nv() { return true; }
|
||||
bool do_metadata_nv() { return true; }
|
||||
virtual bool do_metadata() { return do_metadata_nv(); }
|
||||
|
||||
virtual void do_klass(Klass* k);
|
||||
void do_klass_nv(Klass* k);
|
||||
virtual void do_klass(Klass* k) { do_klass_nv(k); }
|
||||
|
||||
virtual void do_class_loader_data(ClassLoaderData* cld);
|
||||
void do_cld_nv(ClassLoaderData* cld);
|
||||
virtual void do_cld(ClassLoaderData* cld) { do_cld_nv(cld); }
|
||||
};
|
||||
|
||||
// ObjectClosure is used for iterating through an object space
|
||||
|
@ -370,6 +372,7 @@ template <> class Devirtualizer<true> {
|
|||
public:
|
||||
template <class OopClosureType, typename T> static void do_oop(OopClosureType* closure, T* p);
|
||||
template <class OopClosureType> static void do_klass(OopClosureType* closure, Klass* k);
|
||||
template <class OopClosureType> static void do_cld(OopClosureType* closure, ClassLoaderData* cld);
|
||||
template <class OopClosureType> static bool do_metadata(OopClosureType* closure);
|
||||
};
|
||||
|
||||
|
@ -378,6 +381,7 @@ template <> class Devirtualizer<false> {
|
|||
public:
|
||||
template <class OopClosureType, typename T> static void do_oop(OopClosureType* closure, T* p);
|
||||
template <class OopClosureType> static void do_klass(OopClosureType* closure, Klass* k);
|
||||
template <class OopClosureType> static void do_cld(OopClosureType* closure, ClassLoaderData* cld);
|
||||
template <class OopClosureType> static bool do_metadata(OopClosureType* closure);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue