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

Reply via email to