VM_TypeReference[] argTypes = mth.getParameterTypes(); Class[]   argClasses = new Class[argTypes.length]; for (int i=0; i<argClasses.length; i++) { argClasses[i] = argTypes[i].resolve().getClassForType(); }
  static Object invokeInitializer(Class cls, int methodID, VM_Address argAddress,                                   boolean isJvalue, boolean isDotDotStyle) throws Exception {    // get the parameter list as Java class    VM_Method mth = VM_MemberReference.getMemberRef(methodID).asMethodReference().resolve();    VM_TypeReference[] argTypes = mth.getParameterTypes();    Class[]   argClasses = new Class[argTypes.length];    for (int i=0; i<argClasses.length; i++) {      argClasses[i] = argTypes[i].resolve().getClassForType();    }    Constructor constMethod = java.lang.reflect.JikesRVMSupport.createConstructor(mth);    if (!mth.isPublic()) {      constMethod.setAccessible(true);    }        // Package the parameters for the constructor    VM_Address varargAddress;    if (isDotDotStyle)       // flag is false because this JNI function has 3 args before the var args      varargAddress = getVarArgAddress(false);        else      varargAddress = argAddress;    Object argObjs[];    if (isJvalue)      argObjs = packageParameterFromJValue(mth, argAddress);    else      argObjs = packageParameterFromVarArg(mth, varargAddress);    // construct the new object    return constMethod.newInstance(argObjs);  }