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,
|