int slot = field.getOffset() >>> 2; Object it = VM_Statics.getSlotContentsAsObject(slot); if (VM.VerifyAssertions) VM.assert(it != null); return VM_Magic.getObjectType(it);
return VM_Magic.getObjectType(o);
  static final VM_Type getTypeFromStaticField (VM_Field field)     throws NoSuchFieldException {    if (VM.runningVM) {      int slot = field.getOffset() >>> 2;      Object it = VM_Statics.getSlotContentsAsObject(slot);      if (VM.VerifyAssertions) VM.assert(it != null);      return VM_Magic.getObjectType(it);    } else {      try {	Object o = getJDKField(field).get(null);	if (o == null) {	  return OPT_ClassLoaderProxy.NULL_TYPE;	} else {	  Class rc = o.getClass();	  String className = rc.getName();	  if (className.startsWith("[")) {	    // an array	    return VM_ClassLoader.findOrCreateType(VM_Atom.findOrCreateAsciiAtom(className));	  } else {	    // a class	    VM_Atom classDescriptor = 	      VM_Atom.findOrCreateAsciiAtom(className.replace('.','/')).descriptorFromClassName();	    return VM_ClassLoader.findOrCreateType(classDescriptor);	  }	}      } catch (IllegalAccessException e) {	throw new OPT_OptimizingCompilerException("Accessing "+field+" caused "+e);      } catch (IllegalArgumentException e) {	throw new OPT_OptimizingCompilerException("Accessing "+field+" caused "+e);      }    }  }