if (VM.VerifyAssertions) VM.assert(referentClass.isResolved());
if (VM.VerifyAssertions) VM._assert(referentClass.isResolved());
  static public boolean needsDynamicLink(VM_Member referent, VM_Class referrer)  {    VM_Class referentClass = referent.getDeclaringClass();    if (referentClass.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 (referent instanceof VM_Field && referentClass.isResolved() &&         referentClass.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 && referentClass.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 (!referentClass.isResolved()) VM.sysWrite("unresolved: \"" + referent + "\" referenced from \"" + referrer + "\"\n");      if (VM.VerifyAssertions) VM.assert(referentClass.isResolved());      return false;    }    if (referentClass == referrer) {      // 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;  }