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()->read_barrier(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"); |