Hi,
sysdepCallMethod is not simply this. It ensures that the arguments are
passed correctly according to the ABI for some architecture/os/compiler
combination. Generally it must be written in assembly or using some
tricks of the compiler. sysdepCallMethod takes a pointer to some
function, its arguments and then build a function call and finally call
it. Once the function returns, the returned value is taken from the
stack/registers and pushed into the return value memory.
Regards,
Guilhem.
qi fenghai wrote:
Hi all, Please advise if 'sysdepCallMethod' can be implemented by this
way as bellow:
method 1:
in JVM:
typedef int (*FUNCTYPE)(); //function's return type is int
FUNCTYPE *nativefunc = (FUNCTYPE)dlsym(handle, "foo");
//four argument
(*nativefunc)(1, 2.5);
in share library:
int foo(int, double);
method 2:
in JVM:
typedef int (*FUNCTYPE)(...); //function's return type is int,
argument list is '...'
FUNCTYPE *nativefunc = (FUNCTYPE)dlsym(handle, "foo");
//four argument
(*nativefunc)(1, 2.5);
in share library:
int foo(int, double);
_________________________________________________________________
ÓëÁª»úµÄÅóÓѽøÐн»Á÷£¬ÇëʹÓà MSN Messenger: http://messenger.msn.com/cn
_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe