8211446: Replace oop_pc_follow_contents with oop_iterate and closure

Reviewed-by: sjohanss, tschatzl
This commit is contained in:
Leo Korinth 2018-10-12 12:13:06 +02:00
parent 4bc903d17a
commit 78fe66c3bb
14 changed files with 94 additions and 173 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -171,24 +171,10 @@ private:
void drain_region_stacks();
void follow_contents(oop obj);
void follow_contents(objArrayOop array, int index);
void follow_array(objArrayOop array, int index);
void update_contents(oop obj);
class MarkAndPushClosure: public BasicOopIterateClosure {
private:
ParCompactionManager* _compaction_manager;
public:
MarkAndPushClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
template <typename T> void do_oop_work(T* p);
virtual void do_oop(oop* p);
virtual void do_oop(narrowOop* p);
// This closure provides its own oop verification code.
debug_only(virtual bool should_verify_oops() { return false; })
};
class FollowStackClosure: public VoidClosure {
private:
ParCompactionManager* _compaction_manager;