mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-08 17:38:38 +00:00
8281035: Serial: Move RemoveForwardedPointerClosure to local scope
Reviewed-by: kbarrett, tschatzl
This commit is contained in:
parent
ae2504b469
commit
4ea6037ea5
@ -669,9 +669,21 @@ void DefNewGeneration::init_assuming_no_promotion_failure() {
|
||||
}
|
||||
|
||||
void DefNewGeneration::remove_forwarding_pointers() {
|
||||
RemoveForwardedPointerClosure rspc;
|
||||
eden()->object_iterate(&rspc);
|
||||
from()->object_iterate(&rspc);
|
||||
assert(_promotion_failed, "precondition");
|
||||
|
||||
// Will enter Full GC soon due to failed promotion. Must reset the mark word
|
||||
// of objs in young-gen so that no objs are marked (forwarded) when Full GC
|
||||
// starts. (The mark word is overloaded: `is_marked()` == `is_forwarded()`.)
|
||||
struct ResetForwardedMarkWord : ObjectClosure {
|
||||
void do_object(oop obj) override {
|
||||
if (obj->is_forwarded()) {
|
||||
obj->init_mark();
|
||||
}
|
||||
}
|
||||
} cl;
|
||||
eden()->object_iterate(&cl);
|
||||
from()->object_iterate(&cl);
|
||||
|
||||
restore_preserved_marks();
|
||||
}
|
||||
|
||||
|
||||
@ -71,12 +71,6 @@ void PreservedMarks::assert_empty() {
|
||||
}
|
||||
#endif // ndef PRODUCT
|
||||
|
||||
void RemoveForwardedPointerClosure::do_object(oop obj) {
|
||||
if (obj->is_forwarded()) {
|
||||
PreservedMarks::init_forwarded_mark(obj);
|
||||
}
|
||||
}
|
||||
|
||||
void PreservedMarksSet::init(uint num) {
|
||||
assert(_stacks == nullptr && _num == 0, "do not re-initialize");
|
||||
assert(num > 0, "pre-condition");
|
||||
|
||||
@ -75,11 +75,6 @@ public:
|
||||
~PreservedMarks() { assert_empty(); }
|
||||
};
|
||||
|
||||
class RemoveForwardedPointerClosure: public ObjectClosure {
|
||||
public:
|
||||
virtual void do_object(oop obj);
|
||||
};
|
||||
|
||||
class PreservedMarksSet : public CHeapObj<mtGC> {
|
||||
private:
|
||||
// true -> _stacks will be allocated in the C heap
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user