super(tr);
super(tr, null, null);
  VM_Primitive(VM_TypeReference tr) {    super(tr);    depth = 0;    acyclic = true;     // All primitives are inherently acyclic    switch (getDescriptor().parseForTypeCode()) {    case VoidTypeCode:      stackWords = 0;      name = VM_Atom.findOrCreateAsciiAtom("void");      break;    case BooleanTypeCode:      stackWords = 1;      name = VM_Atom.findOrCreateAsciiAtom("boolean");      break;    case ByteTypeCode:      stackWords = 1;      name = VM_Atom.findOrCreateAsciiAtom("byte");      break;    case CharTypeCode:      stackWords = 1;      name = VM_Atom.findOrCreateAsciiAtom("char");      break;    case ShortTypeCode:      stackWords = 1;      name = VM_Atom.findOrCreateAsciiAtom("short");      break;    case IntTypeCode:      stackWords = 1;      name = VM_Atom.findOrCreateAsciiAtom("int");      break;    case LongTypeCode:      stackWords = 2;      name = VM_Atom.findOrCreateAsciiAtom("long");      break;    case FloatTypeCode:      stackWords = 1;      name = VM_Atom.findOrCreateAsciiAtom("float");      break;    case DoubleTypeCode:      stackWords = 2;      name = VM_Atom.findOrCreateAsciiAtom("double");      break;    default:      if (tr == VM_TypeReference.Address ||          tr == VM_TypeReference.Word ||          tr == VM_TypeReference.Offset ||          tr == VM_TypeReference.Extent ||          tr == VM_TypeReference.Code) {        stackWords = 1;        name = tr.getName();      } else {        if (VM.VerifyAssertions) VM._assert(false);        stackWords = -1;        name = null;      }    }    state = CLASS_INITIALIZED; // primitives have no-op "resolve, instantiate, initialize" phases  }