< prev index next >

src/share/vm/runtime/handles.cpp

Print this page
rev 8961 : [mq]: diff-shenandoah.patch


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


< prev index next >