mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +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
|
@ -31,10 +31,6 @@ uint ParallelTaskTerminator::_total_spins = 0;
|
|||
uint ParallelTaskTerminator::_total_peeks = 0;
|
||||
#endif
|
||||
|
||||
bool TaskQueueSuper::peek() {
|
||||
return _bottom != _age.top();
|
||||
}
|
||||
|
||||
int TaskQueueSetSuper::randomParkAndMiller(int *seed0) {
|
||||
const int a = 16807;
|
||||
const int m = 2147483647;
|
||||
|
@ -180,6 +176,13 @@ void ParallelTaskTerminator::reset_for_reuse() {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef ASSERT
|
||||
bool ObjArrayTask::is_valid() const {
|
||||
return _obj != NULL && _obj->is_objArray() && _index > 0 &&
|
||||
_index < objArrayOop(_obj)->length();
|
||||
}
|
||||
#endif // ASSERT
|
||||
|
||||
bool RegionTaskQueueWithOverflow::is_empty() {
|
||||
return (_region_queue.size() == 0) &&
|
||||
(_overflow_stack->length() == 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue