mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8151539
: Remove duplicate AlwaysTrueClosures
Reviewed-by: tschatzl, mgerdin, kbarrett, drwhite
This commit is contained in:
parent
3fa2f0cd11
commit
673bfac8ba
9 changed files with 27 additions and 52 deletions
|
@ -220,12 +220,6 @@ class G1AdjustPointersClosure: public HeapRegionClosure {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class G1AlwaysTrueClosure: public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
bool do_object_b(oop p) { return true; }
|
|
||||||
};
|
|
||||||
static G1AlwaysTrueClosure always_true;
|
|
||||||
|
|
||||||
void G1MarkSweep::mark_sweep_phase3() {
|
void G1MarkSweep::mark_sweep_phase3() {
|
||||||
G1CollectedHeap* g1h = G1CollectedHeap::heap();
|
G1CollectedHeap* g1h = G1CollectedHeap::heap();
|
||||||
|
|
||||||
|
@ -248,7 +242,7 @@ void G1MarkSweep::mark_sweep_phase3() {
|
||||||
|
|
||||||
// Now adjust pointers in remaining weak roots. (All of which should
|
// Now adjust pointers in remaining weak roots. (All of which should
|
||||||
// have been cleared if they pointed to non-surviving objects.)
|
// have been cleared if they pointed to non-surviving objects.)
|
||||||
JNIHandles::weak_oops_do(&always_true, &GenMarkSweep::adjust_pointer_closure);
|
JNIHandles::weak_oops_do(&GenMarkSweep::adjust_pointer_closure);
|
||||||
|
|
||||||
if (G1StringDedup::is_enabled()) {
|
if (G1StringDedup::is_enabled()) {
|
||||||
G1StringDedup::oops_do(&GenMarkSweep::adjust_pointer_closure);
|
G1StringDedup::oops_do(&GenMarkSweep::adjust_pointer_closure);
|
||||||
|
|
|
@ -570,13 +570,6 @@ void PSMarkSweep::mark_sweep_phase2() {
|
||||||
old_gen->precompact();
|
old_gen->precompact();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This should be moved to the shared markSweep code!
|
|
||||||
class PSAlwaysTrueClosure: public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
bool do_object_b(oop p) { return true; }
|
|
||||||
};
|
|
||||||
static PSAlwaysTrueClosure always_true;
|
|
||||||
|
|
||||||
void PSMarkSweep::mark_sweep_phase3() {
|
void PSMarkSweep::mark_sweep_phase3() {
|
||||||
// Adjust the pointers to reflect the new locations
|
// Adjust the pointers to reflect the new locations
|
||||||
GCTraceTime(Trace, gc) tm("Phase 3: Adjust pointers", _gc_timer);
|
GCTraceTime(Trace, gc) tm("Phase 3: Adjust pointers", _gc_timer);
|
||||||
|
@ -603,7 +596,7 @@ void PSMarkSweep::mark_sweep_phase3() {
|
||||||
// Now adjust pointers in remaining weak roots. (All of which should
|
// Now adjust pointers in remaining weak roots. (All of which should
|
||||||
// have been cleared if they pointed to non-surviving objects.)
|
// have been cleared if they pointed to non-surviving objects.)
|
||||||
// Global (weak) JNI handles
|
// Global (weak) JNI handles
|
||||||
JNIHandles::weak_oops_do(&always_true, adjust_pointer_closure());
|
JNIHandles::weak_oops_do(adjust_pointer_closure());
|
||||||
|
|
||||||
CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations);
|
CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations);
|
||||||
CodeCache::blobs_do(&adjust_from_blobs);
|
CodeCache::blobs_do(&adjust_from_blobs);
|
||||||
|
|
|
@ -2125,13 +2125,6 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm,
|
||||||
_gc_tracer.report_object_count_after_gc(is_alive_closure());
|
_gc_tracer.report_object_count_after_gc(is_alive_closure());
|
||||||
}
|
}
|
||||||
|
|
||||||
// This should be moved to the shared markSweep code!
|
|
||||||
class PSAlwaysTrueClosure: public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
bool do_object_b(oop p) { return true; }
|
|
||||||
};
|
|
||||||
static PSAlwaysTrueClosure always_true;
|
|
||||||
|
|
||||||
void PSParallelCompact::adjust_roots(ParCompactionManager* cm) {
|
void PSParallelCompact::adjust_roots(ParCompactionManager* cm) {
|
||||||
// Adjust the pointers to reflect the new locations
|
// Adjust the pointers to reflect the new locations
|
||||||
GCTraceTime(Trace, gc, phases) tm("Adjust Roots", &_gc_timer);
|
GCTraceTime(Trace, gc, phases) tm("Adjust Roots", &_gc_timer);
|
||||||
|
@ -2157,7 +2150,7 @@ void PSParallelCompact::adjust_roots(ParCompactionManager* cm) {
|
||||||
// Now adjust pointers in remaining weak roots. (All of which should
|
// Now adjust pointers in remaining weak roots. (All of which should
|
||||||
// have been cleared if they pointed to non-surviving objects.)
|
// have been cleared if they pointed to non-surviving objects.)
|
||||||
// Global (weak) JNI handles
|
// Global (weak) JNI handles
|
||||||
JNIHandles::weak_oops_do(&always_true, &oop_closure);
|
JNIHandles::weak_oops_do(&oop_closure);
|
||||||
|
|
||||||
CodeBlobToOopClosure adjust_from_blobs(&oop_closure, CodeBlobToOopClosure::FixRelocations);
|
CodeBlobToOopClosure adjust_from_blobs(&oop_closure, CodeBlobToOopClosure::FixRelocations);
|
||||||
CodeCache::blobs_do(&adjust_from_blobs);
|
CodeCache::blobs_do(&adjust_from_blobs);
|
||||||
|
|
|
@ -684,15 +684,8 @@ void GenCollectedHeap::gen_process_roots(StrongRootsScope* scope,
|
||||||
_process_strong_tasks->all_tasks_completed(scope->n_threads());
|
_process_strong_tasks->all_tasks_completed(scope->n_threads());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class AlwaysTrueClosure: public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
bool do_object_b(oop p) { return true; }
|
|
||||||
};
|
|
||||||
static AlwaysTrueClosure always_true;
|
|
||||||
|
|
||||||
void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) {
|
void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) {
|
||||||
JNIHandles::weak_oops_do(&always_true, root_closure);
|
JNIHandles::weak_oops_do(root_closure);
|
||||||
_young_gen->ref_processor()->weak_oops_do(root_closure);
|
_young_gen->ref_processor()->weak_oops_do(root_closure);
|
||||||
_old_gen->ref_processor()->weak_oops_do(root_closure);
|
_old_gen->ref_processor()->weak_oops_do(root_closure);
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,11 +266,6 @@ ReferenceProcessorStats ReferenceProcessor::process_discovered_references(
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
// Calculate the number of jni handles.
|
// Calculate the number of jni handles.
|
||||||
size_t ReferenceProcessor::count_jni_refs() {
|
size_t ReferenceProcessor::count_jni_refs() {
|
||||||
class AlwaysAliveClosure: public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
virtual bool do_object_b(oop obj) { return true; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class CountHandleClosure: public OopClosure {
|
class CountHandleClosure: public OopClosure {
|
||||||
private:
|
private:
|
||||||
size_t _count;
|
size_t _count;
|
||||||
|
@ -281,8 +276,7 @@ size_t ReferenceProcessor::count_jni_refs() {
|
||||||
size_t count() { return _count; }
|
size_t count() { return _count; }
|
||||||
};
|
};
|
||||||
CountHandleClosure global_handle_count;
|
CountHandleClosure global_handle_count;
|
||||||
AlwaysAliveClosure always_alive;
|
JNIHandles::weak_oops_do(&global_handle_count);
|
||||||
JNIHandles::weak_oops_do(&always_alive, &global_handle_count);
|
|
||||||
return global_handle_count.count();
|
return global_handle_count.count();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -213,6 +213,16 @@ class BoolObjectClosure : public Closure {
|
||||||
virtual bool do_object_b(oop obj) = 0;
|
virtual bool do_object_b(oop obj) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class AlwaysTrueClosure: public BoolObjectClosure {
|
||||||
|
public:
|
||||||
|
bool do_object_b(oop p) { return true; }
|
||||||
|
};
|
||||||
|
|
||||||
|
class AlwaysFalseClosure : public BoolObjectClosure {
|
||||||
|
public:
|
||||||
|
bool do_object_b(oop p) { return false; }
|
||||||
|
};
|
||||||
|
|
||||||
// Applies an oop closure to all ref fields in objects iterated over in an
|
// Applies an oop closure to all ref fields in objects iterated over in an
|
||||||
// object iteration.
|
// object iteration.
|
||||||
class ObjectToOopClosure: public ObjectClosure {
|
class ObjectToOopClosure: public ObjectClosure {
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "jvmtifiles/jvmtiEnv.hpp"
|
#include "jvmtifiles/jvmtiEnv.hpp"
|
||||||
#include "memory/metadataFactory.hpp"
|
#include "memory/metadataFactory.hpp"
|
||||||
#include "memory/metaspaceShared.hpp"
|
#include "memory/metaspaceShared.hpp"
|
||||||
|
#include "memory/iterator.hpp"
|
||||||
#include "memory/universe.hpp"
|
#include "memory/universe.hpp"
|
||||||
#include "oops/constantPool.hpp"
|
#include "oops/constantPool.hpp"
|
||||||
#include "oops/oop.inline.hpp"
|
#include "oops/oop.inline.hpp"
|
||||||
|
@ -711,11 +712,6 @@ WB_ENTRY(jint, WB_MatchesMethod(JNIEnv* env, jobject o, jobject method, jstring
|
||||||
return result;
|
return result;
|
||||||
WB_END
|
WB_END
|
||||||
|
|
||||||
class AlwaysFalseClosure : public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
bool do_object_b(oop p) { return false; }
|
|
||||||
};
|
|
||||||
|
|
||||||
static AlwaysFalseClosure always_false;
|
static AlwaysFalseClosure always_false;
|
||||||
|
|
||||||
WB_ENTRY(void, WB_ClearMethodState(JNIEnv* env, jobject o, jobject method))
|
WB_ENTRY(void, WB_ClearMethodState(JNIEnv* env, jobject o, jobject method))
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "precompiled.hpp"
|
#include "precompiled.hpp"
|
||||||
#include "classfile/systemDictionary.hpp"
|
#include "classfile/systemDictionary.hpp"
|
||||||
#include "logging/log.hpp"
|
#include "logging/log.hpp"
|
||||||
|
#include "memory/iterator.hpp"
|
||||||
#include "oops/oop.inline.hpp"
|
#include "oops/oop.inline.hpp"
|
||||||
#include "prims/jvmtiExport.hpp"
|
#include "prims/jvmtiExport.hpp"
|
||||||
#include "runtime/jniHandles.hpp"
|
#include "runtime/jniHandles.hpp"
|
||||||
|
@ -128,6 +129,12 @@ void JNIHandles::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void JNIHandles::weak_oops_do(OopClosure* f) {
|
||||||
|
AlwaysTrueClosure always_true;
|
||||||
|
weak_oops_do(&always_true, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void JNIHandles::initialize() {
|
void JNIHandles::initialize() {
|
||||||
_global_handles = JNIHandleBlock::allocate_block();
|
_global_handles = JNIHandleBlock::allocate_block();
|
||||||
_weak_global_handles = JNIHandleBlock::allocate_block();
|
_weak_global_handles = JNIHandleBlock::allocate_block();
|
||||||
|
@ -185,11 +192,6 @@ long JNIHandles::weak_global_handle_memory_usage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class AlwaysAliveClosure: public BoolObjectClosure {
|
|
||||||
public:
|
|
||||||
bool do_object_b(oop obj) { return true; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class CountHandleClosure: public OopClosure {
|
class CountHandleClosure: public OopClosure {
|
||||||
private:
|
private:
|
||||||
int _count;
|
int _count;
|
||||||
|
@ -211,9 +213,8 @@ void JNIHandles::print_on(outputStream* st) {
|
||||||
"JNIHandles not initialized");
|
"JNIHandles not initialized");
|
||||||
|
|
||||||
CountHandleClosure global_handle_count;
|
CountHandleClosure global_handle_count;
|
||||||
AlwaysAliveClosure always_alive;
|
|
||||||
oops_do(&global_handle_count);
|
oops_do(&global_handle_count);
|
||||||
weak_oops_do(&always_alive, &global_handle_count);
|
weak_oops_do(&global_handle_count);
|
||||||
|
|
||||||
st->print_cr("JNI global references: %d", global_handle_count.count());
|
st->print_cr("JNI global references: %d", global_handle_count.count());
|
||||||
st->cr();
|
st->cr();
|
||||||
|
@ -230,10 +231,9 @@ public:
|
||||||
|
|
||||||
void JNIHandles::verify() {
|
void JNIHandles::verify() {
|
||||||
VerifyHandleClosure verify_handle;
|
VerifyHandleClosure verify_handle;
|
||||||
AlwaysAliveClosure always_alive;
|
|
||||||
|
|
||||||
oops_do(&verify_handle);
|
oops_do(&verify_handle);
|
||||||
weak_oops_do(&always_alive, &verify_handle);
|
weak_oops_do(&verify_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,8 @@ class JNIHandles : AllStatic {
|
||||||
static void oops_do(OopClosure* f);
|
static void oops_do(OopClosure* f);
|
||||||
// Traversal of weak global handles. Unreachable oops are cleared.
|
// Traversal of weak global handles. Unreachable oops are cleared.
|
||||||
static void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f);
|
static void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f);
|
||||||
|
// Traversal of weak global handles.
|
||||||
|
static void weak_oops_do(OopClosure* f);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue