if (!thisClass.isResolved()) VM.sysWrite("unresolved: \"" + this + "\" referenced from \"" + that + "\"\n");
  public final boolean needsDynamicLink(VM_Method that) {    if (type == that.getMemberRef().getType()) {      // Intra-class references don't need to be compiled with dynamic linking      // because they execute *after* class has been loaded/resolved/compiled.      return false;    }    VM_Class thisClass = (VM_Class)type.peekResolvedType();    if (thisClass == null) return true; // thisClass isn't loaded yet.        if (thisClass.isInitialized()) {      // No dynamic linking code is required to access this member      // because its size and offset are known and its class's static       // initializer has already run.      return false;    }            if (isFieldReference() && thisClass.isResolved() &&         thisClass.getClassInitializerMethod() == null) {      // No dynamic linking code is required to access this field      // because its size and offset is known and its class has no static      // initializer, therefore its value need not be specially initialized      // (its default value of zero or null is sufficient).      return false;    }            if (VM.writingBootImage && thisClass.isInBootImage()) {      // Loads, stores, and calls within boot image are compiled without dynamic      // linking code because all boot image classes are explicitly       // loaded/resolved/compiled and have had their static initializers       // run by the boot image writer.      if (!thisClass.isResolved()) VM.sysWrite("unresolved: \"" + this + "\" referenced from \"" + that + "\"\n");      if (VM.VerifyAssertions) VM._assert(thisClass.isResolved());      return false;    }    // This member needs size and offset to be computed, or its class's static    // initializer needs to be run when the member is first "touched", so    // dynamic linking code is required to access the member.    return true;  }