if (VM.VerifyAssertions) VM.assert(thisClass.isResolved());
if (VM.VerifyAssertions) VM._assert(thisClass.isResolved());
  public final boolean needsDynamicLink(VM_Method that) {    VM_Class thisClass = this.getDeclaringClass();        if (thisClass.isInitialized()) {      // No dynamic linking code is required to access this field or       // call this method      // because its size and offset are known and its class's static       // initializer      // has already run, thereby compiling this method or initializing       // this field.      //      return false;    }            if (this instanceof VM_Field && 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;    }    if (thisClass == that.getDeclaringClass()) {      // Intra-class references don't need to be compiled with dynamic linking      // because they execute *after* class has been loaded/resolved/compiled.      //      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;  }