oop memOopKlass::allocateObject() { klassOop k = as_klassOop(); int size = non_indexable_size(); // allocate memOop obj = as_memOop(Universe::allocate(size, (memOop*)&k)); // header obj->initialize_header(has_untagged_contents(), k); // instance variables obj->initialize_body(memOopDesc::header_size(), size); return obj; }
oop memOopKlass::allocateObject(bool permit_scavenge, bool tenured) { klassOop k = as_klassOop(); int size = non_indexable_size(); oop* result = basicAllocate(size, &k, permit_scavenge, tenured); if (!result) return NULL; // allocate memOop obj = as_memOop(result); // header obj->initialize_header(has_untagged_contents(), k); // instance variables obj->initialize_body(memOopDesc::header_size(), size); return obj; }
oop associationKlass::allocateObject(bool permit_scavenge, bool tenured) { klassOop k = as_klassOop(); int size = non_indexable_size(); // allocate oop* result = Universe::allocate_tenured(size, permit_scavenge); if (result == NULL && !permit_scavenge) return NULL; associationOop obj = as_associationOop(result); // header memOop(obj)->initialize_header(has_untagged_contents(), k); obj->set_key(symbolOop(nilObj)); obj->set_value(nilObj); obj->set_is_constant(false); // instance variables obj->initialize_body(associationOopDesc::header_size(), size); return obj; }
oop objArrayKlass::allocateObjectSize(int size) { klassOop k = as_klassOop(); int ni_size = non_indexable_size(); int obj_size = ni_size + 1 + size; // allocate objArrayOop obj = as_objArrayOop(Universe::allocate(obj_size, (memOop*)&k)); // header memOop(obj)->initialize_header(has_untagged_contents(), k); // instance variables memOop(obj)->initialize_body(memOopDesc::header_size(), ni_size); // indexables oop* base = (oop*) obj->addr(); oop* end = base + obj_size; // %optimized 'obj->set_length(size)' base[ni_size] = as_smiOop(size); memOop(obj)->initialize_body(ni_size+1, obj_size); return obj; }