Merge
This commit is contained in:
commit
cee9854e81
hotspot/src/share/vm
@ -742,6 +742,8 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation(
|
||||
uint gc_count = 0;
|
||||
uint full_gc_count = 0;
|
||||
|
||||
assert(!Heap_lock->owned_by_self(), "Should not be holding the Heap_lock");
|
||||
|
||||
do {
|
||||
MetaWord* result = NULL;
|
||||
if (GC_locker::is_active_and_needs_gc()) {
|
||||
@ -756,7 +758,6 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation(
|
||||
}
|
||||
JavaThread* jthr = JavaThread::current();
|
||||
if (!jthr->in_critical()) {
|
||||
MutexUnlocker mul(Heap_lock);
|
||||
// Wait for JNI critical section to be exited
|
||||
GC_locker::stall_until_clear();
|
||||
// The GC invoked by the last thread leaving the critical
|
||||
|
@ -496,9 +496,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool steal_1_random(uint queue_num, int* seed, E& t);
|
||||
bool steal_best_of_2(uint queue_num, int* seed, E& t);
|
||||
bool steal_best_of_all(uint queue_num, int* seed, E& t);
|
||||
|
||||
void register_queue(uint i, T* q);
|
||||
|
||||
@ -537,46 +535,6 @@ GenericTaskQueueSet<T, F>::steal(uint queue_num, int* seed, E& t) {
|
||||
return false;
|
||||
}
|
||||
|
||||
template<class T, MEMFLAGS F> bool
|
||||
GenericTaskQueueSet<T, F>::steal_best_of_all(uint queue_num, int* seed, E& t) {
|
||||
if (_n > 2) {
|
||||
int best_k;
|
||||
uint best_sz = 0;
|
||||
for (uint k = 0; k < _n; k++) {
|
||||
if (k == queue_num) continue;
|
||||
uint sz = _queues[k]->size();
|
||||
if (sz > best_sz) {
|
||||
best_sz = sz;
|
||||
best_k = k;
|
||||
}
|
||||
}
|
||||
return best_sz > 0 && _queues[best_k]->pop_global(t);
|
||||
} else if (_n == 2) {
|
||||
// Just try the other one.
|
||||
int k = (queue_num + 1) % 2;
|
||||
return _queues[k]->pop_global(t);
|
||||
} else {
|
||||
assert(_n == 1, "can't be zero.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
template<class T, MEMFLAGS F> bool
|
||||
GenericTaskQueueSet<T, F>::steal_1_random(uint queue_num, int* seed, E& t) {
|
||||
if (_n > 2) {
|
||||
uint k = queue_num;
|
||||
while (k == queue_num) k = TaskQueueSetSuper::randomParkAndMiller(seed) % _n;
|
||||
return _queues[2]->pop_global(t);
|
||||
} else if (_n == 2) {
|
||||
// Just try the other one.
|
||||
int k = (queue_num + 1) % 2;
|
||||
return _queues[k]->pop_global(t);
|
||||
} else {
|
||||
assert(_n == 1, "can't be zero.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
template<class T, MEMFLAGS F> bool
|
||||
GenericTaskQueueSet<T, F>::steal_best_of_2(uint queue_num, int* seed, E& t) {
|
||||
if (_n > 2) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user