if (verboseJNI) VM.sysWrite("JNI called: ThrowNew  \n");
if (traceJNI) VM.sysWrite("JNI called: ThrowNew  \n");
  private static int ThrowNew(int envJREF, int throwableClassJREF, VM_Address exceptionNameAddress) {    if (verboseJNI) VM.sysWrite("JNI called: ThrowNew  \n");    VM_JNIEnvironment env;    try {      env = VM_Thread.getCurrentThread().getJNIEnv();      Class cls = (Class) env.getJNIRef(throwableClassJREF);      // find the constructor that has a string as a parameter      Class[] argClasses = new Class[1];      argClasses[0] = Class.forName("java.lang.String");      Constructor constMethod = cls.getConstructor(argClasses);      // prepare the parameter list for reflective invocation      Object[] argObjs = new Object[1];      argObjs[0] = VM_JNIEnvironment.createStringFromC(exceptionNameAddress);      // invoke the constructor to obtain a new Throwable object      env.recordException((Throwable) constMethod.newInstance(argObjs));      return 0;    } catch (Throwable unexpected) {      env = VM_Thread.getCurrentThread().getJNIEnv();      env.recordException(unexpected);      return -1;    }  }