VM_Array(VM_Atom descriptor, int dictionaryId, ClassLoader classloader) { if (VM.TraceClassLoading && VM.runningVM) VM.sysWrite("VM_Array: create " + descriptor + " with " + classloader + "\n"); this.descriptor     = descriptor; this.dimension      = descriptor.parseForArrayDimensionality(); this.depth          = 1; this.dictionaryId   = dictionaryId; this.tibSlot        = VM_Statics.allocateSlot(VM_Statics.TIB); this.elementType    = VM_ClassLoader.findOrCreateType(descriptor.parseForArrayElementDescriptor(), classloader); if (this.elementType.isArrayType()) { this.innermostElementType = this.elementType.asArray().getInnermostElementType(); } else { this.innermostElementType = this.elementType; }  if (VM.BuildForConcurrentGC) this.acyclic = elementType.isAcyclicReference();     Object[] tib = VM_RuntimeStructures.newTIB(1); tib[0] = this; VM_Statics.setSlotContents(tibSlot, tib); }
private VM_Array() { }
  VM_Array(VM_Atom descriptor, int dictionaryId, ClassLoader classloader) {    if (VM.TraceClassLoading && VM.runningVM) VM.sysWrite("VM_Array: create " + descriptor + " with " + classloader + "\n");    this.descriptor     = descriptor;    this.dimension      = descriptor.parseForArrayDimensionality();    this.depth          = 1;    this.dictionaryId   = dictionaryId;    this.tibSlot        = VM_Statics.allocateSlot(VM_Statics.TIB);    this.elementType    = VM_ClassLoader.findOrCreateType(descriptor.parseForArrayElementDescriptor(), classloader);    if (this.elementType.isArrayType()) {      this.innermostElementType = this.elementType.asArray().getInnermostElementType();    } else {      this.innermostElementType = this.elementType;    }    if (VM.BuildForConcurrentGC)      this.acyclic = elementType.isAcyclicReference(); // Array is acyclic if its references are acyclic    // install partial type information block (type-slot but no method-slots) for use in type checking.    // later, during instantiate(), we'll replace it with full type information block (including method-slots).    //    Object[] tib = VM_RuntimeStructures.newTIB(1);    tib[0] = this;    VM_Statics.setSlotContents(tibSlot, tib);  }