19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "memory/allocation.inline.hpp"
27 #include "oops/constantPool.hpp"
28 #include "oops/oop.inline.hpp"
29 #include "runtime/atomic.inline.hpp"
30 #include "runtime/handles.inline.hpp"
31 #include "runtime/thread.inline.hpp"
32
33 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
34
35 #ifdef ASSERT
36 oop* HandleArea::allocate_handle(oop obj) {
37 assert(_handle_mark_nesting > 1, "memory leak: allocating handle outside HandleMark");
38 assert(_no_handle_mark_nesting == 0, "allocating handle inside NoHandleMark");
39 assert(obj->is_oop(), err_msg("not an oop: " INTPTR_FORMAT, (intptr_t*) obj));
40 return real_allocate_handle(obj);
41 }
42
43 Handle::Handle(Thread* thread, oop obj) {
44 assert(thread == Thread::current(), "sanity check");
45 if (obj == NULL) {
46 _handle = NULL;
47 } else {
48 _handle = thread->handle_area()->allocate_handle(obj);
49 }
50 }
51
52 #endif
53
54 static uintx chunk_oops_do(OopClosure* f, Chunk* chunk, char* chunk_top) {
55 oop* bottom = (oop*) chunk->bottom();
56 oop* top = (oop*) chunk_top;
57 uintx handles_visited = top - bottom;
58 assert(top >= bottom && top <= (oop*) chunk->top(), "just checking");
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "memory/allocation.inline.hpp"
27 #include "oops/constantPool.hpp"
28 #include "oops/oop.inline.hpp"
29 #include "runtime/atomic.inline.hpp"
30 #include "runtime/handles.inline.hpp"
31 #include "runtime/thread.inline.hpp"
32
33 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
34
35 #ifdef ASSERT
36 oop* HandleArea::allocate_handle(oop obj) {
37 assert(_handle_mark_nesting > 1, "memory leak: allocating handle outside HandleMark");
38 assert(_no_handle_mark_nesting == 0, "allocating handle inside NoHandleMark");
39 if (ShenandoahVerifyReadsToFromSpace) {
40 obj = oopDesc::bs()->resolve_oop(obj);
41 }
42 assert(obj->is_oop(), err_msg("not an oop: " INTPTR_FORMAT, (intptr_t*) obj));
43 return real_allocate_handle(obj);
44 }
45
46 Handle::Handle(Thread* thread, oop obj) {
47 assert(thread == Thread::current(), "sanity check");
48 if (obj == NULL) {
49 _handle = NULL;
50 } else {
51 _handle = thread->handle_area()->allocate_handle(obj);
52 }
53 }
54
55 #endif
56
57 static uintx chunk_oops_do(OopClosure* f, Chunk* chunk, char* chunk_top) {
58 oop* bottom = (oop*) chunk->bottom();
59 oop* top = (oop*) chunk_top;
60 uintx handles_visited = top - bottom;
61 assert(top >= bottom && top <= (oop*) chunk->top(), "just checking");
|