VM_Class cls = VM_Class.forName("VM_JNIFunctions");
VM_Class cls; synchronized (VM_ClassLoader.lock) { cls = VM_Class.forName("VM_JNIFunctions"); }
  public static void boot() {    if (initialized)      return;    // fill an array of JNI names    setNames();    // create method ID for JNI transition stackframes    // XXX now have method specific JNICompilerInfos  SES 073101    // javaToCCompilerInfo = new VM_JNICompilerInfo();    // fill in the IP entries for each AIX linkage triplet    try {      VM_Class cls = VM_Class.forName("VM_JNIFunctions");      VM_Method[] mths = cls.getDeclaredMethods();      for (int i=0; i<mths.length; i++) {	String methodName = mths[i].getName().toString();	int jniIndex = indexOf(methodName);	if (jniIndex!=-1) {	  JNIFunctions[jniIndex] = mths[i].getMostRecentlyGeneratedInstructions();	  // VM.sysWrite("   " + methodName + "=" + VM.intAsHexString(JNIFunctions[jniIndex]));	}       }    } catch (VM_ResolutionException e) {      throw new InternalError("VM_JNIEnvironment fails to initialize, has the class been renamed\n");    }    // store RVM JTOC address in last (extra) entry in JNIFunctions array    // to be restored when native C invokes JNI functions implemented in java    //    // following causes exception in checkstore, so forced to setMemoryWord instead    // JNIFunctions[FUNCTIONCOUNT+1] = VM_Magic.addressAsByteArray(VM_Magic.getTocPointer());    VM_Magic.setMemoryAddress(VM_Magic.objectAsAddress(JNIFunctions).add(JNIFUNCTIONS_JTOC_OFFSET),			      VM_Magic.getTocPointer());    initialized = true;  }