Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_interface/collectedHeap.inline.hpp @ 113:ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv
Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author | coleenp |
---|---|
date | Sun, 13 Apr 2008 17:43:42 -0400 |
parents | a61af66fc99e |
children | feeb96a45707 37f87013dfd8 |
comparison
equal
deleted
inserted
replaced
110:a49a647afe9a | 113:ba764ed4b6f2 |
---|---|
59 assert(klass() == NULL || klass()->klass_part() != NULL, "not a klass"); | 59 assert(klass() == NULL || klass()->klass_part() != NULL, "not a klass"); |
60 assert(obj != NULL, "NULL object pointer"); | 60 assert(obj != NULL, "NULL object pointer"); |
61 obj->set_klass(klass()); | 61 obj->set_klass(klass()); |
62 assert(!Universe::is_fully_initialized() || obj->blueprint() != NULL, | 62 assert(!Universe::is_fully_initialized() || obj->blueprint() != NULL, |
63 "missing blueprint"); | 63 "missing blueprint"); |
64 | 64 } |
65 | |
66 // Support for jvmti and dtrace | |
67 inline void post_allocation_notify(KlassHandle klass, oop obj) { | |
65 // support for JVMTI VMObjectAlloc event (no-op if not enabled) | 68 // support for JVMTI VMObjectAlloc event (no-op if not enabled) |
66 JvmtiExport::vm_object_alloc_event_collector(obj); | 69 JvmtiExport::vm_object_alloc_event_collector(obj); |
67 | 70 |
68 if (DTraceAllocProbes) { | 71 if (DTraceAllocProbes) { |
69 // support for Dtrace object alloc event (no-op most of the time) | 72 // support for Dtrace object alloc event (no-op most of the time) |
77 HeapWord* obj, | 80 HeapWord* obj, |
78 size_t size) { | 81 size_t size) { |
79 post_allocation_setup_common(klass, obj, size); | 82 post_allocation_setup_common(klass, obj, size); |
80 assert(Universe::is_bootstrapping() || | 83 assert(Universe::is_bootstrapping() || |
81 !((oop)obj)->blueprint()->oop_is_array(), "must not be an array"); | 84 !((oop)obj)->blueprint()->oop_is_array(), "must not be an array"); |
85 // notify jvmti and dtrace | |
86 post_allocation_notify(klass, (oop)obj); | |
82 } | 87 } |
83 | 88 |
84 void CollectedHeap::post_allocation_setup_array(KlassHandle klass, | 89 void CollectedHeap::post_allocation_setup_array(KlassHandle klass, |
85 HeapWord* obj, | 90 HeapWord* obj, |
86 size_t size, | 91 size_t size, |
87 int length) { | 92 int length) { |
88 // Set array length before posting jvmti object alloc event | |
89 // in post_allocation_setup_common() | |
90 assert(length >= 0, "length should be non-negative"); | 93 assert(length >= 0, "length should be non-negative"); |
94 post_allocation_setup_common(klass, obj, size); | |
95 // Must set length after installing klass as set_klass zeros the length | |
96 // field in UseCompressedOops | |
91 ((arrayOop)obj)->set_length(length); | 97 ((arrayOop)obj)->set_length(length); |
92 post_allocation_setup_common(klass, obj, size); | |
93 assert(((oop)obj)->blueprint()->oop_is_array(), "must be an array"); | 98 assert(((oop)obj)->blueprint()->oop_is_array(), "must be an array"); |
99 // notify jvmti and dtrace (must be after length is set for dtrace) | |
100 post_allocation_notify(klass, (oop)obj); | |
94 } | 101 } |
95 | 102 |
96 HeapWord* CollectedHeap::common_mem_allocate_noinit(size_t size, bool is_noref, TRAPS) { | 103 HeapWord* CollectedHeap::common_mem_allocate_noinit(size_t size, bool is_noref, TRAPS) { |
97 | 104 |
98 // Clear unhandled oops for memory allocation. Memory allocation might | 105 // Clear unhandled oops for memory allocation. Memory allocation might |