< prev index next >
src/share/vm/runtime/jniHandles.cpp
Print this page
*** 126,135 ****
--- 126,146 ----
void JNIHandles::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) {
_weak_global_handles->weak_oops_do(is_alive, f);
}
+ void JNIHandles::weak_oops_do(OopClosure* f) {
+ class AlwaysTrueClosure: public BoolObjectClosure {
+ public:
+ bool do_object_b(oop p) { return true; }
+ };
+ static AlwaysTrueClosure always_true;
+
+ weak_oops_do(&always_true, f);
+ }
+
+
void JNIHandles::initialize() {
_global_handles = JNIHandleBlock::allocate_block();
_weak_global_handles = JNIHandleBlock::allocate_block();
EXCEPTION_MARK;
// We will never reach the CATCH below since Exceptions::_throw will cause
*** 183,197 ****
long JNIHandles::weak_global_handle_memory_usage() {
return _weak_global_handles->memory_usage();
}
- class AlwaysAliveClosure: public BoolObjectClosure {
- public:
- bool do_object_b(oop obj) { return true; }
- };
-
class CountHandleClosure: public OopClosure {
private:
int _count;
public:
CountHandleClosure(): _count(0) {}
--- 194,203 ----
*** 209,221 ****
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
assert(_global_handles != NULL && _weak_global_handles != NULL,
"JNIHandles not initialized");
CountHandleClosure global_handle_count;
- AlwaysAliveClosure always_alive;
oops_do(&global_handle_count);
! weak_oops_do(&always_alive, &global_handle_count);
st->print_cr("JNI global references: %d", global_handle_count.count());
st->cr();
st->flush();
}
--- 215,226 ----
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
assert(_global_handles != NULL && _weak_global_handles != NULL,
"JNIHandles not initialized");
CountHandleClosure global_handle_count;
oops_do(&global_handle_count);
! weak_oops_do(&global_handle_count);
st->print_cr("JNI global references: %d", global_handle_count.count());
st->cr();
st->flush();
}
*** 228,241 ****
virtual void do_oop(narrowOop* root) { ShouldNotReachHere(); }
};
void JNIHandles::verify() {
VerifyHandleClosure verify_handle;
- AlwaysAliveClosure always_alive;
oops_do(&verify_handle);
! weak_oops_do(&always_alive, &verify_handle);
}
void jni_handles_init() {
--- 233,245 ----
virtual void do_oop(narrowOop* root) { ShouldNotReachHere(); }
};
void JNIHandles::verify() {
VerifyHandleClosure verify_handle;
oops_do(&verify_handle);
! weak_oops_do(&verify_handle);
}
void jni_handles_init() {
< prev index next >