Lines Matching defs:Chunk
175 Chunk* _first; // first cached Chunk; its first word points to next chunk
187 Chunk* c = _first;
217 void free(Chunk* chunk) {
218 assert(chunk->length() + Chunk::aligned_overhead_size() == _size, "bad size");
230 Chunk* cur = NULL;
231 Chunk* next;
265 _large_pool = new ChunkPool(Chunk::size + Chunk::aligned_overhead_size());
266 _medium_pool = new ChunkPool(Chunk::medium_size + Chunk::aligned_overhead_size());
267 _small_pool = new ChunkPool(Chunk::init_size + Chunk::aligned_overhead_size());
287 Chunk::clean_chunk_pool() {
307 // Chunk implementation
309 void* Chunk::operator new(size_t requested_size, AllocFailType alloc_failmode, size_t length) {
310 // requested_size is equal to sizeof(Chunk) but in order for the arena
313 // expect requested_size but if sizeof(Chunk) doesn't match isn't proper size we must align it.
317 case Chunk::size: return ChunkPool::large_pool()->allocate(bytes, alloc_failmode);
318 case Chunk::medium_size: return ChunkPool::medium_pool()->allocate(bytes, alloc_failmode);
319 case Chunk::init_size: return ChunkPool::small_pool()->allocate(bytes, alloc_failmode);
323 vm_exit_out_of_memory(bytes, "Chunk::new");
330 void Chunk::operator delete(void* p) {
331 Chunk* c = (Chunk*)p;
333 case Chunk::size: ChunkPool::large_pool()->free(c); break;
334 case Chunk::medium_size: ChunkPool::medium_pool()->free(c); break;
335 case Chunk::init_size: ChunkPool::small_pool()->free(c); break;
340 Chunk::Chunk(size_t length) : _len(length) {
345 void Chunk::chop() {
346 Chunk *k = this;
348 Chunk *tmp = k->next();
356 void Chunk::next_chop() {
362 void Chunk::start_chunk_pool_cleaner_task() {
378 _first = _chunk = new (AllocFailStrategy::EXIT_OOM, init_size) Chunk(init_size);
386 _first = _chunk = new (AllocFailStrategy::EXIT_OOM, Chunk::init_size) Chunk(Chunk::init_size);
389 set_size_in_bytes(Chunk::init_size);
474 size_t sum = _chunk->length() - (_max-_hwm); // Size leftover in this Chunk
475 register Chunk *k = _first;
477 sum += k->length(); // Total size of this Chunk
478 k = k->next(); // Bump along to next Chunk
487 // Grow a new Chunk
490 size_t len = MAX2(x, (size_t) Chunk::size);
492 Chunk *k = _chunk; // Get filled-up chunk address
493 _chunk = new (alloc_failmode, len) Chunk(len);
566 for (Chunk *c = _first; c != NULL; c = c->next()) {
578 for (Chunk *c = _first; c; c = c->next()) {
584 return false; // Not in any Chunk, so not in Arena
673 void Arena::free_malloced_objects(Chunk* chunk, char* hwm, char* max, char* hwm2) {
679 for (Chunk* c = chunk->next(); c != NULL; c = c->next()) {