mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
4396719: Mark Sweep stack overflow on deeply nested Object arrays
Use an explicit stack for object arrays and process them in chunks. Reviewed-by: iveresov, apetrusenko
This commit is contained in:
parent
5fdec09798
commit
4f82340476
26 changed files with 419 additions and 182 deletions
|
@ -91,10 +91,18 @@ class objArrayKlass : public arrayKlass {
|
|||
|
||||
// Garbage collection
|
||||
void oop_follow_contents(oop obj);
|
||||
inline void oop_follow_contents(oop obj, int index);
|
||||
template <class T> inline void objarray_follow_contents(oop obj, int index);
|
||||
|
||||
int oop_adjust_pointers(oop obj);
|
||||
|
||||
// Parallel Scavenge and Parallel Old
|
||||
PARALLEL_GC_DECLS
|
||||
#ifndef SERIALGC
|
||||
inline void oop_follow_contents(ParCompactionManager* cm, oop obj, int index);
|
||||
template <class T> inline void
|
||||
objarray_follow_contents(ParCompactionManager* cm, oop obj, int index);
|
||||
#endif // !SERIALGC
|
||||
|
||||
// Iterators
|
||||
int oop_oop_iterate(oop obj, OopClosure* blk) {
|
||||
|
@ -131,5 +139,4 @@ class objArrayKlass : public arrayKlass {
|
|||
void oop_verify_on(oop obj, outputStream* st);
|
||||
void oop_verify_old_oop(oop obj, oop* p, bool allow_dirty);
|
||||
void oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty);
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue