VM_Magic.setMemoryAddress(VM_Magic.objectAsAddress(JNIFunctions).add(JNIFUNCTIONS_JTOC_OFFSET), VM_Magic.getTocPointer());
  public static void boot() {    if (initialized)      return;    // fill an array of JNI names    setNames();    // fill in the TOC entries for each AIX linkage triplet    for (int i=0; i<JNIFunctions.length; i++) {      JNIFunctions[i] = new int[3][];      JNIFunctions[i][TOC] = VM_Statics.getSlots();   // the JTOC value: address of TOC    }    // fill in the IP entries for each AIX linkage triplet    try {      VM_Class cls = VM_Class.forName("com.ibm.JikesRVM.VM_JNIFunctions");      VM_Method[] mths = cls.getDeclaredMethods();      // VM.sysWrite("VM_JNIEnvironment:  scanning " + mths.length + " methods\n");      for (int i=0; i<mths.length; i++) {	String methodName = mths[i].getName().toString();	int jniIndex = indexOf(methodName);	if (jniIndex!=-1) {	  JNIFunctions[jniIndex][IP] = mths[i].getCurrentInstructions();	  // VM.sysWrite("   " + methodName + "=" + VM.intAsHexString(JNIFunctions[jniIndex][IP]));	} 	// else {	//   VM.sysWrite("   " + methodName + " skipped\n");	// }      }      VM_Address functionAddress = VM_Magic.objectAsAddress(JNIFunctions[NEWINTARRAY][IP]);      // VM.sysWrite("   NewIntArray is at " + VM.intAsHexString(functionAddress) + "\n");      functionAddress = VM_Magic.objectAsAddress(JNIFunctions[NEWINTARRAY][TOC]);      // VM.sysWrite("   TOC is stored at " + VM.intAsHexString(functionAddress) + "\n");    } catch (VM_ResolutionException e) {      throw new InternalError("VM_JNIEnvironment fails to initialize, has the class been renamed\n");    }    initialized = true;  }