95 _len = initial_len; |
95 _len = initial_len; |
96 _max = initial_size; |
96 _max = initial_size; |
97 assert(_len >= 0 && _len <= _max, "initial_len too big"); |
97 assert(_len >= 0 && _len <= _max, "initial_len too big"); |
98 _arena = (c_heap ? (Arena*)1 : NULL); |
98 _arena = (c_heap ? (Arena*)1 : NULL); |
99 set_nesting(); |
99 set_nesting(); |
100 assert(!c_heap || allocated_on_C_heap(), "growable array must be on C heap if elements are"); |
100 assert(!on_C_heap() || allocated_on_C_heap(), "growable array must be on C heap if elements are"); |
|
101 assert(!on_stack() || |
|
102 (allocated_on_res_area() || allocated_on_stack()), |
|
103 "growable array must be on stack if elements are not on arena and not on C heap"); |
101 } |
104 } |
102 |
105 |
103 // This GA will use the given arena for storage. |
106 // This GA will use the given arena for storage. |
104 // Consider using new(arena) GrowableArray<T> to allocate the header. |
107 // Consider using new(arena) GrowableArray<T> to allocate the header. |
105 GenericGrowableArray(Arena* arena, int initial_size, int initial_len) { |
108 GenericGrowableArray(Arena* arena, int initial_size, int initial_len) { |
106 _len = initial_len; |
109 _len = initial_len; |
107 _max = initial_size; |
110 _max = initial_size; |
108 assert(_len >= 0 && _len <= _max, "initial_len too big"); |
111 assert(_len >= 0 && _len <= _max, "initial_len too big"); |
109 _arena = arena; |
112 _arena = arena; |
110 assert(on_arena(), "arena has taken on reserved value 0 or 1"); |
113 assert(on_arena(), "arena has taken on reserved value 0 or 1"); |
|
114 // Relax next assert to allow object allocation on resource area, |
|
115 // on stack or embedded into an other object. |
|
116 assert(allocated_on_arena() || allocated_on_stack(), |
|
117 "growable array must be on arena or on stack if elements are on arena"); |
111 } |
118 } |
112 |
119 |
113 void* raw_allocate(int elementSize); |
120 void* raw_allocate(int elementSize); |
114 |
121 |
115 // some uses pass the Thread explicitly for speed (4990299 tuning) |
122 // some uses pass the Thread explicitly for speed (4990299 tuning) |