Mercurial > hg > graal-jvmci-8
diff src/share/vm/gc_implementation/shared/markSweep.hpp @ 1311:2a1472c30599
4396719: Mark Sweep stack overflow on deeply nested Object arrays
Summary: Use an explicit stack for object arrays and process them in chunks.
Reviewed-by: iveresov, apetrusenko
author | jcoomes |
---|---|
date | Wed, 03 Mar 2010 14:48:26 -0800 |
parents | a1423fe86a18 |
children | c18cbe5936b8 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/shared/markSweep.hpp Wed Mar 03 08:10:41 2010 -0800 +++ b/src/share/vm/gc_implementation/shared/markSweep.hpp Wed Mar 03 14:48:26 2010 -0800 @@ -110,8 +110,9 @@ // Vars // protected: - // Traversal stack used during phase1 + // Traversal stacks used during phase1 static GrowableArray<oop>* _marking_stack; + static GrowableArray<ObjArrayTask>* _objarray_stack; // Stack for live klasses to revisit at end of marking phase static GrowableArray<Klass*>* _revisit_klass_stack; // Set (stack) of MDO's to revisit at end of marking phase @@ -188,6 +189,7 @@ template <class T> static inline void mark_and_follow(T* p); // Check mark and maybe push on marking stack template <class T> static inline void mark_and_push(T* p); + static inline void push_objarray(oop obj, size_t index); static void follow_stack(); // Empty marking stack.