提交 95e2d83f 编写于 作者: J jcoomes

Merge

...@@ -742,6 +742,8 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation( ...@@ -742,6 +742,8 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation(
uint gc_count = 0; uint gc_count = 0;
uint full_gc_count = 0; uint full_gc_count = 0;
assert(!Heap_lock->owned_by_self(), "Should not be holding the Heap_lock");
do { do {
MetaWord* result = NULL; MetaWord* result = NULL;
if (GC_locker::is_active_and_needs_gc()) { if (GC_locker::is_active_and_needs_gc()) {
...@@ -756,7 +758,6 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation( ...@@ -756,7 +758,6 @@ MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation(
} }
JavaThread* jthr = JavaThread::current(); JavaThread* jthr = JavaThread::current();
if (!jthr->in_critical()) { if (!jthr->in_critical()) {
MutexUnlocker mul(Heap_lock);
// Wait for JNI critical section to be exited // Wait for JNI critical section to be exited
GC_locker::stall_until_clear(); GC_locker::stall_until_clear();
// The GC invoked by the last thread leaving the critical // The GC invoked by the last thread leaving the critical
......
...@@ -496,9 +496,7 @@ public: ...@@ -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_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); void register_queue(uint i, T* q);
...@@ -537,46 +535,6 @@ GenericTaskQueueSet<T, F>::steal(uint queue_num, int* seed, E& t) { ...@@ -537,46 +535,6 @@ GenericTaskQueueSet<T, F>::steal(uint queue_num, int* seed, E& t) {
return false; 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 template<class T, MEMFLAGS F> bool
GenericTaskQueueSet<T, F>::steal_best_of_2(uint queue_num, int* seed, E& t) { GenericTaskQueueSet<T, F>::steal_best_of_2(uint queue_num, int* seed, E& t) {
if (_n > 2) { if (_n > 2) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册