Martin Platter
Christian Thalinger
- $Id: jni.c 2408 2005-04-28 12:38:50Z jowenn $
+ $Id: jni.c 2424 2005-04-30 13:45:06Z jowenn $
*/
#include "vm/tables.h"
#include "vm/jit/asmpart.h"
#include "vm/jit/jit.h"
-
+#include "vm/statistics.h"
/* XXX TWISTI hack: define it extern so they can be found in this file */
extern const struct JNIInvokeInterface JNI_JavaVMTable;
static jclass ihmclass = NULL;
static jmethodID removemid = NULL;
+#define JWCLINITDEBUG(x)
+
/********************* accessing instance-fields **********************************/
fill_callblock(obj, methodID->parseddesc, blk, args, TYPE_ADR);
/* printf("parameter: obj: %p",blk[0].item); */
+ STATS(jnicallXmethodnvokation();)
ret = asm_calljavafunction2(methodID,
argcount + 1,
(argcount + 1) * sizeof(jni_callblock),
jni_callblock *blk;
jint ret;
+ STATS(jniinvokation();)
+
/*
log_text("JNI-Call: CallObjectMethodV");
utf_display(methodID->name);
fill_callblock(obj, methodID->parseddesc, blk, args, retType);
/* printf("parameter: obj: %p",blk[0].item); */
+ STATS(jnicallXmethodnvokation();)
ret = asm_calljavafunction2int(methodID,
argcount + 1,
(argcount + 1) * sizeof(jni_callblock),
jni_callblock *blk;
jlong ret;
+ STATS(jniinvokation();)
+
/*
log_text("JNI-Call: CallObjectMethodV");
utf_display(methodID->name);
fill_callblock(obj, methodID->parseddesc, blk, args, TYPE_LNG);
/* printf("parameter: obj: %p",blk[0].item); */
+ STATS(jnicallXmethodnvokation();)
ret = asm_calljavafunction2long(methodID,
argcount + 1,
(argcount + 1) * sizeof(jni_callblock),
jni_callblock *blk;
jdouble ret;
+ STATS(jniinvokation();)
+
/*
log_text("JNI-Call: CallObjectMethodV");
utf_display(methodID->name);
fill_callblock(obj, methodID->parseddesc, blk, args, retType);
/* printf("parameter: obj: %p",blk[0].item); */
+ STATS(jnicallXmethodnvokation();)
ret = asm_calljavafunction2double(methodID,
argcount + 1,
(argcount + 1) * sizeof(jni_callblock),
static fieldinfo *jclass_findfield (classinfo *c, utf *name, utf *desc)
{
s4 i;
+ STATS(jniinvokation();)
+
/* printf(" FieldCount: %d\n",c->fieldscount);
utf_display(c->name); */
for (i = 0; i < c->fieldscount; i++) {
jint GetVersion(JNIEnv *env)
{
/* GNU classpath currently supports JNI 1.2 */
-
+ STATS(jniinvokation();)
return JNI_VERSION_1_2;
}
jclass DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize bufLen)
{
jclass c;
+ STATS(jniinvokation();)
c = (jclass) Java_java_lang_VMClassLoader_defineClass(env,
NULL,
jclass FindClass(JNIEnv *env, const char *name)
{
classinfo *c = NULL;
+ STATS(jniinvokation();)
if (!load_class_bootstrap(utf_new_char_classname((char *) name),&c) || !link_class(c)) {
return NULL;
jmethodID FromReflectedMethod(JNIEnv* env, jobject method)
{
log_text("JNI-Call: FromReflectedMethod: IMPLEMENT ME!!!");
+ STATS(jniinvokation();)
return 0;
}
jclass GetSuperclass(JNIEnv *env, jclass sub)
{
classinfo *c;
+ STATS(jniinvokation();)
c = ((classinfo *) sub)->super.cls;
jboolean IsAssignableFrom(JNIEnv *env, jclass sub, jclass sup)
{
+ STATS(jniinvokation();)
return Java_java_lang_VMClass_isAssignableFrom(env,
NULL,
(java_lang_Class *) sup,
jobject ToReflectedField(JNIEnv* env, jclass cls, jfieldID fieldID, jboolean isStatic)
{
log_text("JNI-Call: ToReflectedField: IMPLEMENT ME!!!");
-
+ STATS(jniinvokation();)
return NULL;
}
jint Throw(JNIEnv *env, jthrowable obj)
{
*exceptionptr = (java_objectheader *) obj;
+ STATS(jniinvokation();)
return JNI_OK;
}
{
java_lang_Throwable *o;
java_lang_String *s;
+ STATS(jniinvokation();)
s = (java_lang_String *) javastring_new_char(msg);
jthrowable ExceptionOccurred(JNIEnv *env)
{
+ STATS(jniinvokation();)
return (jthrowable) *exceptionptr;
}
{
java_objectheader *e;
methodinfo *m;
+ STATS(jniinvokation();)
e = *exceptionptr;
void ExceptionClear(JNIEnv *env)
{
+ STATS(jniinvokation();)
*exceptionptr = NULL;
}
void FatalError(JNIEnv *env, const char *msg)
{
+ STATS(jniinvokation();)
throw_cacao_exception_exit(string_java_lang_InternalError, msg);
}
jint PushLocalFrame(JNIEnv* env, jint capacity)
{
log_text("JNI-Call: PushLocalFrame: IMPLEMENT ME!");
+ STATS(jniinvokation();)
return 0;
}
jobject PopLocalFrame(JNIEnv* env, jobject result)
{
log_text("JNI-Call: PopLocalFrame: IMPLEMENT ME!");
+ STATS(jniinvokation();)
return NULL;
}
void DeleteLocalRef(JNIEnv *env, jobject localRef)
{
log_text("JNI-Call: DeleteLocalRef: IMPLEMENT ME!");
+ STATS(jniinvokation();)
+
}
jboolean IsSameObject(JNIEnv *env, jobject ref1, jobject ref2)
{
+ STATS(jniinvokation();)
return (ref1 == ref2);
}
jobject NewLocalRef(JNIEnv *env, jobject ref)
{
log_text("JNI-Call: NewLocalRef: IMPLEMENT ME!");
-
+ STATS(jniinvokation();)
return ref;
}
jint EnsureLocalCapacity (JNIEnv* env, jint capacity)
{
+ STATS(jniinvokation();)
return 0; /* return 0 on success */
}
jobject AllocObject(JNIEnv *env, jclass clazz)
{
java_objectheader *o;
+ STATS(jniinvokation();)
if ((clazz->flags & ACC_INTERFACE) || (clazz->flags & ACC_ABSTRACT)) {
*exceptionptr =
int argcount=methodID->parseddesc->paramcount;
int i;
va_list vaargs;
+ STATS(jniinvokation();)
#ifdef arglimit
if (argcount > 3) {
jobject NewObjectV(JNIEnv* env, jclass clazz, jmethodID methodID, va_list args)
{
log_text("JNI-Call: NewObjectV");
+ STATS(jniinvokation();)
return NULL;
}
jobject NewObjectA(JNIEnv* env, jclass clazz, jmethodID methodID, jvalue *args)
{
log_text("JNI-Call: NewObjectA");
+ STATS(jniinvokation();)
return NULL;
}
jclass GetObjectClass(JNIEnv *env, jobject obj)
{
classinfo *c;
+ STATS(jniinvokation();)
if (!obj || !obj->vftbl)
return NULL;
jboolean IsInstanceOf(JNIEnv *env, jobject obj, jclass clazz)
{
+ STATS(jniinvokation();)
+
return Java_java_lang_VMClass_isInstance(env,
NULL,
(java_lang_Class *) clazz,
jfieldID FromReflectedField(JNIEnv* env, jobject field)
{
log_text("JNI-Call: FromReflectedField");
+ STATS(jniinvokation();)
return 0;
}
jobject ToReflectedMethod(JNIEnv* env, jclass cls, jmethodID methodID, jboolean isStatic)
{
log_text("JNI-Call: ToReflectedMethod");
+ STATS(jniinvokation();)
return NULL;
}
jmethodID GetMethodID(JNIEnv* env, jclass clazz, const char *name, const char *sig)
{
jmethodID m;
+ STATS(jniinvokation();)
m = class_resolvemethod(clazz,
utf_new_char((char *) name),
{
jobject ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallObjectMethod");*/
jobject CallObjectMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return callObjectMethod(obj,methodID,args);
}
jobject CallObjectMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args)
{
log_text("JNI-Call: CallObjectMethodA");
+ STATS(jniinvokation();)
return NULL;
}
{
jboolean ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallBooleanMethod");*/
jboolean CallBooleanMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
+
return (jboolean)callIntegerMethod(obj,get_virtual(obj,methodID),PRIMITIVETYPE_BOOLEAN,args);
}
jboolean CallBooleanMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallBooleanMethodA");
return 0;
{
jbyte ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallVyteMethod");*/
jbyte CallByteMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
/* log_text("JNI-Call: CallByteMethodV");*/
+ STATS(jniinvokation();)
+
return callIntegerMethod(obj,methodID,PRIMITIVETYPE_BYTE,args);
}
jbyte CallByteMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
log_text("JNI-Call: CallByteMethodA");
+ STATS(jniinvokation();)
return 0;
}
{
jchar ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallCharMethod");*/
jchar CallCharMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
+
/* log_text("JNI-Call: CallCharMethodV");*/
return callIntegerMethod(obj,get_virtual(obj,methodID),PRIMITIVETYPE_CHAR,args);
}
jchar CallCharMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
+
log_text("JNI-Call: CallCharMethodA");
return 0;
{
jshort ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallShortMethod");*/
jshort CallShortMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return callIntegerMethod(obj, get_virtual(obj, methodID),PRIMITIVETYPE_SHORT, args);
}
jshort CallShortMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallShortMethodA");
return 0;
{
jint ret;
va_list vaargs;
+ STATS(jniinvokation();)
va_start(vaargs,methodID);
ret = callIntegerMethod(obj, get_virtual(obj, methodID),PRIMITIVETYPE_INT, vaargs);
jint CallIntMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return callIntegerMethod(obj, get_virtual(obj, methodID),PRIMITIVETYPE_INT, args);
}
jint CallIntMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallIntMethodA");
return 0;
{
jlong ret;
va_list vaargs;
+ STATS(jniinvokation();)
va_start(vaargs,methodID);
ret = callLongMethod(obj,get_virtual(obj, methodID),vaargs);
jlong CallLongMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return callLongMethod(obj,get_virtual(obj, methodID),args);
}
jlong CallLongMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallLongMethodA");
return 0;
jfloat ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallFloatMethod");*/
va_start(vaargs,methodID);
jfloat CallFloatMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallFloatMethodV");
return callFloatMethod(obj, get_virtual(obj, methodID), args, PRIMITIVETYPE_FLOAT);
}
jfloat CallFloatMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallFloatMethodA");
return 0;
{
jdouble ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallDoubleMethod");*/
jdouble CallDoubleMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallDoubleMethodV");
return callFloatMethod(obj, get_virtual(obj, methodID), args, PRIMITIVETYPE_DOUBLE);
}
jdouble CallDoubleMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallDoubleMethodA");
return 0;
}
void CallVoidMethod(JNIEnv *env, jobject obj, jmethodID methodID, ...)
{
va_list vaargs;
+ STATS(jniinvokation();)
va_start(vaargs,methodID);
(void) callIntegerMethod(obj, get_virtual(obj, methodID),TYPE_VOID, vaargs);
void CallVoidMethodV (JNIEnv *env, jobject obj, jmethodID methodID, va_list args)
{
log_text("JNI-Call: CallVoidMethodV");
+ STATS(jniinvokation();)
(void)callIntegerMethod(obj,get_virtual(obj,methodID),TYPE_VOID,args);
}
void CallVoidMethodA (JNIEnv *env, jobject obj, jmethodID methodID, jvalue * args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallVoidMethodA");
}
jobject CallNonvirtualObjectMethod (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualObjectMethod");
return NULL;
jobject CallNonvirtualObjectMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualObjectMethodV");
return NULL;
jobject CallNonvirtualObjectMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue * args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualObjectMethodA");
return NULL;
{
jboolean ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallNonvirtualBooleanMethod");*/
jboolean CallNonvirtualBooleanMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallNonvirtualBooleanMethodV");*/
return (jboolean)callIntegerMethod(obj,get_nonvirtual(clazz,methodID),PRIMITIVETYPE_BOOLEAN,args);
}
jboolean CallNonvirtualBooleanMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue * args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualBooleanMethodA");
return 0;
jbyte ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallNonvirutalByteMethod");*/
va_start(vaargs,methodID);
jbyte CallNonvirtualByteMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualByteMethodV"); */
return callIntegerMethod(obj,get_nonvirtual(clazz,methodID),PRIMITIVETYPE_BYTE,args);
jbyte CallNonvirtualByteMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualByteMethodA");
return 0;
jchar ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallNonVirtualCharMethod");*/
va_start(vaargs,methodID);
jchar CallNonvirtualCharMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualCharMethodV");*/
return callIntegerMethod(obj,get_nonvirtual(clazz,methodID),PRIMITIVETYPE_CHAR,args);
}
jchar CallNonvirtualCharMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualCharMethodA");
return 0;
{
jshort ret;
va_list vaargs;
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualShortMethod");*/
jshort CallNonvirtualShortMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualShortMethodV");*/
return callIntegerMethod(obj,get_nonvirtual(clazz,methodID),PRIMITIVETYPE_SHORT,args);
}
jshort CallNonvirtualShortMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualShortMethodA");
return 0;
jint ret;
va_list vaargs;
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualIntMethod");*/
jint CallNonvirtualIntMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualIntMethodV");*/
return callIntegerMethod(obj,get_nonvirtual(clazz,methodID),PRIMITIVETYPE_INT,args);
}
jint CallNonvirtualIntMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualIntMethodA");
return 0;
jlong CallNonvirtualLongMethod (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualLongMethod");
return 0;
jlong CallNonvirtualLongMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualLongMethodV");
return 0;
jlong CallNonvirtualLongMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualLongMethodA");
return 0;
{
jfloat ret;
va_list vaargs;
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallNonvirtualFloatMethod");*/
jfloat CallNonvirtualFloatMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualFloatMethodV");
return callFloatMethod(obj,get_nonvirtual(clazz,methodID),args,PRIMITIVETYPE_FLOAT);
}
jfloat CallNonvirtualFloatMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualFloatMethodA");
return 0;
{
jdouble ret;
va_list vaargs;
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualDoubleMethod");
va_start(vaargs,methodID);
jdouble CallNonvirtualDoubleMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallNonvirtualDoubleMethodV");*/
return callFloatMethod(obj,get_nonvirtual(clazz,methodID),args,PRIMITIVETYPE_DOUBLE);
}
jdouble CallNonvirtualDoubleMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualDoubleMethodA");
return 0;
void CallNonvirtualVoidMethod (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...)
{
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallNonvirtualVoidMethod");*/
void CallNonvirtualVoidMethodV (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, va_list args)
{
/* log_text("JNI-Call: CallNonvirtualVoidMethodV");*/
+ STATS(jniinvokation();)
(void)callIntegerMethod(obj,get_nonvirtual(clazz,methodID),TYPE_VOID,args);
void CallNonvirtualVoidMethodA (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, jvalue * args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallNonvirtualVoidMethodA");
}
jfieldID GetFieldID (JNIEnv *env, jclass clazz, const char *name, const char *sig)
{
jfieldID f;
+ STATS(jniinvokation();)
/* log_text("========================= searching for:");
log_text(name);
jfieldID getFieldID_critical(JNIEnv *env, jclass clazz, char *name, char *sig)
{
jfieldID id = GetFieldID(env, clazz, name, sig);
+ STATS(jniinvokation();)
if (!id) {
log_text("class:");
/* return dbg;*/
+ STATS(jniinvokation();)
return getField(obj,jobject,fieldID);
}
jboolean GetBooleanField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jboolean,fieldID);
}
jbyte GetByteField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jbyte,fieldID);
}
jchar GetCharField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jchar,fieldID);
}
jshort GetShortField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jshort,fieldID);
}
jint GetIntField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jint,fieldID);
}
jlong GetLongField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jlong,fieldID);
}
jfloat GetFloatField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jfloat,fieldID);
}
jdouble GetDoubleField (JNIEnv *env, jobject obj, jfieldID fieldID)
{
+ STATS(jniinvokation();)
return getField(obj,jdouble,fieldID);
}
void SetObjectField (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val)
{
+ STATS(jniinvokation();)
setField(obj,jobject,fieldID,val);
}
void SetBooleanField (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val)
{
+ STATS(jniinvokation();)
setField(obj,jboolean,fieldID,val);
}
void SetByteField (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val)
{
+ STATS(jniinvokation();)
setField(obj,jbyte,fieldID,val);
}
void SetCharField (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val)
{
+ STATS(jniinvokation();)
setField(obj,jchar,fieldID,val);
}
void SetShortField (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val)
{
+ STATS(jniinvokation();)
setField(obj,jshort,fieldID,val);
}
void SetIntField (JNIEnv *env, jobject obj, jfieldID fieldID, jint val)
{
+ STATS(jniinvokation();)
setField(obj,jint,fieldID,val);
}
void SetLongField (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val)
{
+ STATS(jniinvokation();)
setField(obj,jlong,fieldID,val);
}
void SetFloatField (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val)
{
+ STATS(jniinvokation();)
setField(obj,jfloat,fieldID,val);
}
void SetDoubleField (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val)
{
+ STATS(jniinvokation();)
setField(obj,jdouble,fieldID,val);
}
jmethodID GetStaticMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig)
{
jmethodID m;
+ STATS(jniinvokation();)
m = class_resolvemethod(clazz,
utf_new_char((char *) name),
{
jobject ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticObjectMethod");*/
jobject CallStaticObjectMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticObjectMethodV"); */
return callObjectMethod(0,methodID,args);
jobject CallStaticObjectMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticObjectMethodA");
return NULL;
{
jboolean ret;
va_list vaargs;
+ STATS(jniinvokation();)
va_start(vaargs, methodID);
ret = (jboolean) callIntegerMethod(0, methodID, PRIMITIVETYPE_BOOLEAN, vaargs);
jboolean CallStaticBooleanMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return (jboolean) callIntegerMethod(0, methodID, PRIMITIVETYPE_BOOLEAN, args);
}
jboolean CallStaticBooleanMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticBooleanMethodA");
return 0;
{
jbyte ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticByteMethod");*/
jbyte CallStaticByteMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return (jbyte) callIntegerMethod(0, methodID, PRIMITIVETYPE_BYTE, args);
}
jbyte CallStaticByteMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticByteMethodA");
return 0;
{
jchar ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticByteMethod");*/
jchar CallStaticCharMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return (jchar) callIntegerMethod(0, methodID, PRIMITIVETYPE_CHAR, args);
}
jchar CallStaticCharMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticCharMethodA");
return 0;
{
jshort ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticByteMethod");*/
jshort CallStaticShortMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
/*log_text("JNI-Call: CallStaticShortMethodV");*/
return (jshort) callIntegerMethod(0, methodID, PRIMITIVETYPE_SHORT, args);
}
jshort CallStaticShortMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticShortMethodA");
return 0;
{
jint ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticIntMethod");*/
jint CallStaticIntMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticIntMethodV");
return callIntegerMethod(0, methodID, PRIMITIVETYPE_INT, args);
jint CallStaticIntMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticIntMethodA");
return 0;
{
jlong ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticLongMethod");*/
jlong CallStaticLongMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticLongMethodV");
return callLongMethod(0,methodID,args);
jlong CallStaticLongMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticLongMethodA");
return 0;
{
jfloat ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticLongMethod");*/
jfloat CallStaticFloatMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
return callFloatMethod(0, methodID, args, PRIMITIVETYPE_FLOAT);
jfloat CallStaticFloatMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticFloatMethodA");
return 0;
{
jdouble ret;
va_list vaargs;
+ STATS(jniinvokation();)
/* log_text("JNI-Call: CallStaticDoubleMethod");*/
jdouble CallStaticDoubleMethodV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticDoubleMethodV");
return callFloatMethod(0, methodID, args, PRIMITIVETYPE_DOUBLE);
jdouble CallStaticDoubleMethodA(JNIEnv *env, jclass clazz, jmethodID methodID, jvalue *args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticDoubleMethodA");
return 0;
void CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID methodID, ...)
{
va_list vaargs;
+ STATS(jniinvokation();)
va_start(vaargs, methodID);
(void) callIntegerMethod(0, methodID, TYPE_VOID, vaargs);
void CallStaticVoidMethodV(JNIEnv *env, jclass cls, jmethodID methodID, va_list args)
{
log_text("JNI-Call: CallStaticVoidMethodV");
+ STATS(jniinvokation();)
(void)callIntegerMethod(0, methodID, TYPE_VOID, args);
}
void CallStaticVoidMethodA(JNIEnv *env, jclass cls, jmethodID methodID, jvalue * args)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: CallStaticVoidMethodA");
}
jfieldID GetStaticFieldID(JNIEnv *env, jclass clazz, const char *name, const char *sig)
{
jfieldID f;
+ STATS(jniinvokation();)
f = jclass_findfield(clazz,
utf_new_char((char *) name),
jobject GetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticObjectField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return NULL;
jboolean GetStaticBooleanField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticBooleanField: calling initialize_class %s\n",clazz->name->text);)
+
if (!initialize_class(clazz))
return false;
jbyte GetStaticByteField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticByteField: calling initialize_class %s\n",clazz->name->text);)
+
if (!initialize_class(clazz))
return 0;
jchar GetStaticCharField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticCharField: calling initialize_class %s\n",clazz->name->text);)
+
if (!initialize_class(clazz))
return 0;
jshort GetStaticShortField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticShorttField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return 0;
jint GetStaticIntField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticIntField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return 0;
jlong GetStaticLongField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticLongField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return 0;
jfloat GetStaticFloatField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticFloatField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return 0.0;
jdouble GetStaticDoubleField(JNIEnv *env, jclass clazz, jfieldID fieldID)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("GetStaticDoubleField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return 0.0;
void SetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticObjectField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticBooleanField(JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticBooleanField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticByteField(JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticByteField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticCharField(JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticCharField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticShortField(JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticShortField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticIntField(JNIEnv *env, jclass clazz, jfieldID fieldID, jint value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticIntField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticLongField(JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticLongField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticFloatField(JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticFloatField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
void SetStaticDoubleField(JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value)
{
+ STATS(jniinvokation();)
+ JWCLINITDEBUG(printf("SetStaticDoubleField: calling initialize_class %s\n",clazz->name->text);)
if (!initialize_class(clazz))
return;
java_lang_String *s;
java_chararray *a;
u4 i;
+ STATS(jniinvokation();)
s = (java_lang_String *) builtin_new(class_java_lang_String);
a = builtin_newarray_char(len);
java_chararray *a;
u4 i;
u2 *stringbuffer;
+ STATS(jniinvokation();)
if (!s) return NULL;
const jchar *GetStringChars (JNIEnv *env, jstring str, jboolean *isCopy)
{
jchar *jc=javastring_tou2(str);
+ STATS(jniinvokation();)
if (jc) {
if (isCopy) *isCopy=JNI_TRUE;
void ReleaseStringChars (JNIEnv *env, jstring str, const jchar *chars)
{
+ STATS(jniinvokation();)
if (chars==emptyStringJ) return;
MFREE(((jchar*) chars),jchar,((java_lang_String*) str)->count+1);
}
jstring NewStringUTF(JNIEnv *env, const char *bytes)
{
+ STATS(jniinvokation();)
return (jstring) javastring_new(utf_new_char(bytes));
}
jsize GetStringUTFLength (JNIEnv *env, jstring string)
{
java_lang_String *s = (java_lang_String*) string;
+ STATS(jniinvokation();)
return (jsize) u2_utflength(s->value->data, s->count);
}
const char* GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy)
{
utf *u;
+ STATS(jniinvokation();)
u = javastring_toutf((java_lang_String *) string, false);
void ReleaseStringUTFChars (JNIEnv *env, jstring str, const char* chars)
{
+ STATS(jniinvokation();)
+
/*we don't release utf chars right now, perhaps that should be done later. Since there is always one reference
the garbage collector will never get them*/
/*
jsize GetArrayLength(JNIEnv *env, jarray array)
{
+ STATS(jniinvokation();)
+
return array->size;
}
{
java_objectarray *oa;
s4 i;
+ STATS(jniinvokation();)
if (length < 0) {
*exceptionptr = new_negativearraysizeexception();
jobject GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index)
{
jobject j = NULL;
+ STATS(jniinvokation();)
if (index < array->header.size)
j = array->data[index];
void SetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index, jobject val)
{
+ STATS(jniinvokation();)
if (index >= array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
jbooleanArray NewBooleanArray(JNIEnv *env, jsize len)
{
java_booleanarray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jbyteArray NewByteArray(JNIEnv *env, jsize len)
{
java_bytearray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jcharArray NewCharArray(JNIEnv *env, jsize len)
{
java_chararray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jshortArray NewShortArray(JNIEnv *env, jsize len)
{
java_shortarray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jintArray NewIntArray(JNIEnv *env, jsize len)
{
java_intarray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jlongArray NewLongArray(JNIEnv *env, jsize len)
{
java_longarray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jfloatArray NewFloatArray(JNIEnv *env, jsize len)
{
java_floatarray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jdoubleArray NewDoubleArray(JNIEnv *env, jsize len)
{
java_doublearray *j;
+ STATS(jniinvokation();)
if (len < 0) {
*exceptionptr = new_exception(string_java_lang_NegativeArraySizeException);
jboolean * GetBooleanArrayElements (JNIEnv *env, jbooleanArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jbyte * GetByteArrayElements (JNIEnv *env, jbyteArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jchar * GetCharArrayElements (JNIEnv *env, jcharArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jshort * GetShortArrayElements (JNIEnv *env, jshortArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jint * GetIntArrayElements (JNIEnv *env, jintArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jlong * GetLongArrayElements (JNIEnv *env, jlongArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jfloat * GetFloatArrayElements (JNIEnv *env, jfloatArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
jdouble * GetDoubleArrayElements (JNIEnv *env, jdoubleArray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
if (isCopy) *isCopy = JNI_FALSE;
return array->data;
}
void ReleaseBooleanArrayElements (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void ReleaseByteArrayElements (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void ReleaseShortArrayElements (JNIEnv *env, jshortArray array, jshort *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void ReleaseIntArrayElements (JNIEnv *env, jintArray array, jint *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void ReleaseLongArrayElements (JNIEnv *env, jlongArray array, jlong *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void ReleaseFloatArrayElements (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void ReleaseDoubleArrayElements (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode)
{
+ STATS(jniinvokation();)
/* empty */
}
void GetBooleanArrayRegion(JNIEnv* env, jbooleanArray array, jsize start, jsize len, jboolean *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetByteArrayRegion(JNIEnv* env, jbyteArray array, jsize start, jsize len, jbyte *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetCharArrayRegion(JNIEnv* env, jcharArray array, jsize start, jsize len, jchar *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetShortArrayRegion(JNIEnv* env, jshortArray array, jsize start, jsize len, jshort *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetIntArrayRegion(JNIEnv* env, jintArray array, jsize start, jsize len, jint *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetLongArrayRegion(JNIEnv* env, jlongArray array, jsize start, jsize len, jlong *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetFloatArrayRegion(JNIEnv* env, jfloatArray array, jsize start, jsize len, jfloat *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void GetDoubleArrayRegion(JNIEnv* env, jdoubleArray array, jsize start, jsize len, jdouble *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start+len>array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetBooleanArrayRegion(JNIEnv* env, jbooleanArray array, jsize start, jsize len, jboolean *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetByteArrayRegion(JNIEnv* env, jbyteArray array, jsize start, jsize len, jbyte *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetCharArrayRegion(JNIEnv* env, jcharArray array, jsize start, jsize len, jchar *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetShortArrayRegion(JNIEnv* env, jshortArray array, jsize start, jsize len, jshort *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetIntArrayRegion(JNIEnv* env, jintArray array, jsize start, jsize len, jint *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetLongArrayRegion(JNIEnv* env, jlongArray array, jsize start, jsize len, jlong *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetFloatArrayRegion(JNIEnv* env, jfloatArray array, jsize start, jsize len, jfloat *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
void SetDoubleArrayRegion(JNIEnv* env, jdoubleArray array, jsize start, jsize len, jdouble *buf)
{
+ STATS(jniinvokation();)
if (start < 0 || len < 0 || start + len > array->header.size)
*exceptionptr = new_exception(string_java_lang_ArrayIndexOutOfBoundsException);
jint RegisterNatives (JNIEnv* env, jclass clazz, const JNINativeMethod *methods, jint nMethods)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: RegisterNatives");
return 0;
}
jint UnregisterNatives (JNIEnv* env, jclass clazz)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: UnregisterNatives");
return 0;
}
jint MonitorEnter(JNIEnv *env, jobject obj)
{
+ STATS(jniinvokation();)
if (!obj) {
*exceptionptr = new_nullpointerexception();
return JNI_ERR;
jint MonitorExit(JNIEnv *env, jobject obj)
{
+ STATS(jniinvokation();)
if (!obj) {
*exceptionptr = new_nullpointerexception();
return JNI_ERR;
jint GetJavaVM(JNIEnv *env, JavaVM **vm)
{
+ STATS(jniinvokation();)
*vm = &ptr_jvm;
return 0;
void GetStringRegion (JNIEnv* env, jstring str, jsize start, jsize len, jchar *buf)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: GetStringRegion");
}
void GetStringUTFRegion (JNIEnv* env, jstring str, jsize start, jsize len, char *buf)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: GetStringUTFRegion");
}
void * GetPrimitiveArrayCritical (JNIEnv* env, jarray array, jboolean *isCopy)
{
+ STATS(jniinvokation();)
java_objectheader *s = (java_objectheader*) array;
arraydescriptor *desc = s->vftbl->arraydesc;
void ReleasePrimitiveArrayCritical (JNIEnv* env, jarray array, void *carray, jint mode)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: ReleasePrimitiveArrayCritical");
/* empty */
const jchar * GetStringCritical (JNIEnv* env, jstring string, jboolean *isCopy)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: GetStringCritical");
return GetStringChars(env,string,isCopy);
void ReleaseStringCritical (JNIEnv* env, jstring string, const jchar *cstring)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: ReleaseStringCritical");
ReleaseStringChars(env,string,cstring);
jweak NewWeakGlobalRef (JNIEnv* env, jobject obj)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: NewWeakGlobalRef");
return obj;
void DeleteWeakGlobalRef (JNIEnv* env, jweak ref)
{
+ STATS(jniinvokation();)
log_text("JNI-Call: DeleteWeakGlobalRef");
/* empty */
jobject refcount;
jint val;
jobject newval;
+ STATS(jniinvokation();)
MonitorEnter(env, *global_ref_table);
{
jobject refcount;
jint val;
+ STATS(jniinvokation();)
MonitorEnter(env, *global_ref_table);
refcount = CallObjectMethod(env, *global_ref_table, getmid, gref);
jboolean ExceptionCheck(JNIEnv *env)
{
+ STATS(jniinvokation();)
return *exceptionptr ? JNI_TRUE : JNI_FALSE;
}
jobject NewDirectByteBuffer(JNIEnv *env, void *address, jlong capacity)
{
+ STATS(jniinvokation();)
log_text("NewDirectByteBuffer: IMPLEMENT ME!");
return NULL;
void *GetDirectBufferAddress(JNIEnv *env, jobject buf)
{
+ STATS(jniinvokation();)
log_text("GetDirectBufferAddress: IMPLEMENT ME!");
return NULL;
jlong GetDirectBufferCapacity(JNIEnv* env, jobject buf)
{
+ STATS(jniinvokation();)
log_text("GetDirectBufferCapacity: IMPLEMENT ME!");
return 0;
jint DestroyJavaVM(JavaVM *vm)
{
+ STATS(jniinvokation();)
log_text("DestroyJavaVM called");
return 0;
jint AttachCurrentThread(JavaVM *vm, void **env, void *thr_args)
{
+ STATS(jniinvokation();)
log_text("AttachCurrentThread called");
-#if 0
+
#if !defined(HAVE___THREAD)
- log_text("implement really attaching here (threadobj)");
- cacao_thread_attach();
+/* cacao_thread_attach();*/
#else
#error "No idea how to implement that. Perhaps Stefan knows"
#endif
-#endif
+
*env = &ptr_env;
return 0;
}
jint DetachCurrentThread(JavaVM *vm)
{
+ STATS(jniinvokation();)
log_text("DetachCurrentThread called");
return 0;
jint GetEnv(JavaVM *vm, void **env, jint version)
{
+ STATS(jniinvokation();)
if ((version != JNI_VERSION_1_1) && (version != JNI_VERSION_1_2) &&
(version != JNI_VERSION_1_4)) {
*env = NULL;
jint AttachCurrentThreadAsDaemon(JavaVM *vm, void **par1, void *par2)
{
+ STATS(jniinvokation();)
log_text("AttachCurrentThreadAsDaemon called");
return 0;