diff -r 32e3c906b613 -r 586e90e84d60 hotspot/src/share/vm/gc/g1/g1EvacFailure.hpp --- a/hotspot/src/share/vm/gc/g1/g1EvacFailure.hpp Mon Oct 19 16:33:12 2015 +0200 +++ b/hotspot/src/share/vm/gc/g1/g1EvacFailure.hpp Thu Nov 26 09:50:22 2015 +0100 @@ -32,6 +32,20 @@ class G1CollectedHeap; +class OopAndMarkOop { + oop _o; + markOop _m; + public: + OopAndMarkOop(oop obj, markOop m) : _o(obj), _m(m) { + } + + void set_mark() { + _o->set_mark(_m); + } +}; + +typedef Stack OopAndMarkOopStack; + // Task to fixup self-forwarding pointers // installed as a result of an evacuation failure. class G1ParRemoveSelfForwardPtrsTask: public AbstractGangTask { @@ -45,4 +59,12 @@ void work(uint worker_id); }; +class G1RestorePreservedMarksTask : public AbstractGangTask { + OopAndMarkOopStack* _preserved_objs; + public: + G1RestorePreservedMarksTask(OopAndMarkOopStack* preserved_objs); + + void work(uint worker_id); +}; + #endif // SHARE_VM_GC_G1_G1EVACFAILURE_HPP