Exemple #1
0
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;
}