< prev index next >

src/hotspot/share/gc/shared/collectedHeap.inline.hpp

Print this page




  43 
  44 void CollectedHeap::post_allocation_setup_common(Klass* klass,
  45                                                  HeapWord* obj_ptr) {
  46   post_allocation_setup_no_klass_install(klass, obj_ptr);
  47   oop obj = (oop)obj_ptr;
  48 #if ! INCLUDE_ALL_GCS
  49   obj->set_klass(klass);
  50 #else
  51   // Need a release store to ensure array/class length, mark word, and
  52   // object zeroing are visible before setting the klass non-NULL, for
  53   // concurrent collectors.
  54   obj->release_set_klass(klass);
  55 #endif
  56 }
  57 
  58 void CollectedHeap::post_allocation_setup_no_klass_install(Klass* klass,
  59                                                            HeapWord* obj_ptr) {
  60   oop obj = (oop)obj_ptr;
  61 
  62   assert(obj != NULL, "NULL object pointer");
  63   if (UseBiasedLocking && (klass != NULL)) {
  64     obj->set_mark(klass->prototype_header());
  65   } else {
  66     // May be bootstrapping
  67     obj->set_mark(markOopDesc::prototype());
  68   }
  69 }
  70 
  71 // Support for jvmti and dtrace
  72 inline void post_allocation_notify(Klass* klass, oop obj, int size) {
  73   // support low memory notifications (no-op if not enabled)
  74   LowMemoryDetector::detect_low_memory_for_collected_pools();
  75 
  76   // support for JVMTI VMObjectAlloc event (no-op if not enabled)
  77   JvmtiExport::vm_object_alloc_event_collector(obj);
  78 
  79   if (DTraceAllocProbes) {
  80     // support for Dtrace object alloc event (no-op most of the time)
  81     if (klass != NULL && klass->name() != NULL) {
  82       SharedRuntime::dtrace_object_alloc(obj, size);
  83     }
  84   }
  85 }
  86 
  87 void CollectedHeap::post_allocation_setup_obj(Klass* klass,
  88                                               HeapWord* obj_ptr,




  43 
  44 void CollectedHeap::post_allocation_setup_common(Klass* klass,
  45                                                  HeapWord* obj_ptr) {
  46   post_allocation_setup_no_klass_install(klass, obj_ptr);
  47   oop obj = (oop)obj_ptr;
  48 #if ! INCLUDE_ALL_GCS
  49   obj->set_klass(klass);
  50 #else
  51   // Need a release store to ensure array/class length, mark word, and
  52   // object zeroing are visible before setting the klass non-NULL, for
  53   // concurrent collectors.
  54   obj->release_set_klass(klass);
  55 #endif
  56 }
  57 
  58 void CollectedHeap::post_allocation_setup_no_klass_install(Klass* klass,
  59                                                            HeapWord* obj_ptr) {
  60   oop obj = (oop)obj_ptr;
  61 
  62   assert(obj != NULL, "NULL object pointer");
  63   obj->set_mark(Klass::default_prototype_header(klass));





  64 }
  65 
  66 // Support for jvmti and dtrace
  67 inline void post_allocation_notify(Klass* klass, oop obj, int size) {
  68   // support low memory notifications (no-op if not enabled)
  69   LowMemoryDetector::detect_low_memory_for_collected_pools();
  70 
  71   // support for JVMTI VMObjectAlloc event (no-op if not enabled)
  72   JvmtiExport::vm_object_alloc_event_collector(obj);
  73 
  74   if (DTraceAllocProbes) {
  75     // support for Dtrace object alloc event (no-op most of the time)
  76     if (klass != NULL && klass->name() != NULL) {
  77       SharedRuntime::dtrace_object_alloc(obj, size);
  78     }
  79   }
  80 }
  81 
  82 void CollectedHeap::post_allocation_setup_obj(Klass* klass,
  83                                               HeapWord* obj_ptr,


< prev index next >