Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @ 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 | 54b3b351d6f9 |
children | 0bfd3fb24150 |
comparison
equal
deleted
inserted
replaced
1289:d47555d7aca8 | 1311:2a1472c30599 |
---|---|
99 GenMarkSweep::_preserved_mark_stack = NULL; | 99 GenMarkSweep::_preserved_mark_stack = NULL; |
100 GenMarkSweep::_preserved_oop_stack = NULL; | 100 GenMarkSweep::_preserved_oop_stack = NULL; |
101 | 101 |
102 GenMarkSweep::_marking_stack = | 102 GenMarkSweep::_marking_stack = |
103 new (ResourceObj::C_HEAP) GrowableArray<oop>(4000, true); | 103 new (ResourceObj::C_HEAP) GrowableArray<oop>(4000, true); |
104 GenMarkSweep::_objarray_stack = | |
105 new (ResourceObj::C_HEAP) GrowableArray<ObjArrayTask>(50, true); | |
104 | 106 |
105 int size = SystemDictionary::number_of_classes() * 2; | 107 int size = SystemDictionary::number_of_classes() * 2; |
106 GenMarkSweep::_revisit_klass_stack = | 108 GenMarkSweep::_revisit_klass_stack = |
107 new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); | 109 new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); |
108 // (#klass/k)^2 for k ~ 10 appears a better fit, but this will have to do | 110 // (#klass/k)^2 for k ~ 10 appears a better fit, but this will have to do |