equal
deleted
inserted
replaced
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "gc/shared/oopStorage.inline.hpp" |
26 #include "gc/shared/oopStorage.inline.hpp" |
27 #include "logging/log.hpp" |
27 #include "logging/log.hpp" |
28 #include "memory/iterator.hpp" |
28 #include "memory/iterator.hpp" |
29 #include "oops/oop.inline.hpp" |
29 #include "oops/oop.inline.hpp" |
30 #include "runtime/jniHandles.hpp" |
30 #include "runtime/jniHandles.inline.hpp" |
31 #include "runtime/mutexLocker.hpp" |
31 #include "runtime/mutexLocker.hpp" |
32 #include "runtime/thread.inline.hpp" |
32 #include "runtime/thread.inline.hpp" |
33 #include "trace/traceMacros.hpp" |
33 #include "trace/traceMacros.hpp" |
34 #include "utilities/align.hpp" |
34 #include "utilities/align.hpp" |
35 #include "utilities/debug.hpp" |
35 #include "utilities/debug.hpp" |
131 } |
131 } |
132 } else { |
132 } else { |
133 CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); |
133 CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops()); |
134 } |
134 } |
135 return res; |
135 return res; |
|
136 } |
|
137 |
|
138 // Resolve some erroneous cases to NULL, rather than treating them as |
|
139 // possibly unchecked errors. In particular, deleted handles are |
|
140 // treated as NULL (though a deleted and later reallocated handle |
|
141 // isn't detected). |
|
142 oop JNIHandles::resolve_external_guard(jobject handle) { |
|
143 oop result = NULL; |
|
144 if (handle != NULL) { |
|
145 result = resolve_impl<true /* external_guard */ >(handle); |
|
146 } |
|
147 return result; |
136 } |
148 } |
137 |
149 |
138 oop JNIHandles::resolve_jweak(jweak handle) { |
150 oop JNIHandles::resolve_jweak(jweak handle) { |
139 assert(handle != NULL, "precondition"); |
151 assert(handle != NULL, "precondition"); |
140 assert(is_jweak(handle), "precondition"); |
152 assert(is_jweak(handle), "precondition"); |