210Fermer212
squalylLe 17/11/2009 à 15:20
Kevin: ne mélange pas jni et JIT

extrait de jni.h trouvé sur google codesearch

void (JNICALL *CallVoidMethod)(JNIEnv *env, jobject obj, jmethodID methodID, ...);
void (JNICALL *CallVoidMethodV)(JNIEnv *env, jobject obj, jmethodID methodID, va_list args);
void (JNICALL *CallVoidMethodA)(JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args);

on obtient un identifiant de méthode grâce à son nom et à une signature de type avec l'api:

jmethodID (JNICALL *GetMethodID)(JNIEnv *env, jclass clazz, const char *name, const char *sig);

On connait donc le type des args à pousser et on peut faire comme on veut pour s'en servir (pile controlée ou libffi)
mais c'est un autre problème, et l'api JNI utilise bien stdarg.