From 07d960169a9d82fa6e621f75b3f6351621eb761c Mon Sep 17 00:00:00 2001 From: twisti Date: Thu, 12 Jul 2007 07:16:24 +0000 Subject: [PATCH] * src/vm/jit/alpha/asmpart.S (asm_vm_call_method): Rewritten for new argument passing. * src/vm/jit/alpha/md-abi.c (md_param_alloc): Set pd->index. * src/native/jni.c: Added __ALPHA__ ifdef. * src/vm/vm.c: Likewise. * src/vm/vm.h: Likewise. * src/vm/jit/asmpart.h: Likewise. --- src/native/jni.c | 5 +- src/vm/jit/alpha/asmpart.S | 142 ++++++++++++++++--------------------- src/vm/jit/alpha/md-abi.c | 6 +- src/vm/jit/asmpart.h | 4 +- src/vm/vm.c | 39 +++++----- src/vm/vm.h | 4 +- 6 files changed, 92 insertions(+), 108 deletions(-) diff --git a/src/native/jni.c b/src/native/jni.c index 6769ce7a9..48cfd122a 100644 --- a/src/native/jni.c +++ b/src/native/jni.c @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: jni.c 8170 2007-06-30 14:03:18Z twisti $ + $Id: jni.c 8198 2007-07-12 07:16:24Z twisti $ */ @@ -782,8 +782,7 @@ static void _Jv_jni_CallVoidMethodA(java_objectheader *o, vftbl_t *vftbl, *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) \ - && !defined(__M68K__) && !defined(__ARM__) && !defined(__SPARC_64__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) java_objectheader *_Jv_jni_invokeNative(methodinfo *m, java_objectheader *o, java_objectarray *params) { diff --git a/src/vm/jit/alpha/asmpart.S b/src/vm/jit/alpha/asmpart.S index 142e758a3..9a35eefbc 100644 --- a/src/vm/jit/alpha/asmpart.S +++ b/src/vm/jit/alpha/asmpart.S @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: asmpart.S 8186 2007-07-05 23:48:16Z michi $ + $Id: asmpart.S 8198 2007-07-12 07:16:24Z twisti $ */ @@ -114,92 +114,72 @@ asm_vm_call_method_long: asm_vm_call_method_float: asm_vm_call_method_double: ldgp gp,0(pv) - lda sp,-5*8(sp) /* allocate stack space */ - stq ra,0*8(sp) /* save return address */ - stq gp,1*8(sp) /* save global pointer */ - stq s6,3*8(sp) - - stq a0,4*8(sp) /* save method pointer for compiler */ - - mov a2,t0 /* pointer to arg block */ - mov a1,s6 /* arg count */ - - ble s6,calljava_argsloaded - lda s6,-1(s6) - ldq a0,offvmargdata(t0) - ldt $f16,offvmargdata(t0) - ble s6,calljava_argsloaded - - lda s6,-1(s6) - ldq a1,offvmargdata+sizevmarg*1(t0) - ldt $f17,offvmargdata+sizevmarg*1(t0) - ble s6,calljava_argsloaded - - lda s6,-1(s6) - ldq a2,offvmargdata+sizevmarg*2(t0) - ldt $f18,offvmargdata+sizevmarg*2(t0) - ble s6,calljava_argsloaded - - lda s6,-1(s6) - ldq a3,offvmargdata+sizevmarg*3(t0) - ldt $f19,offvmargdata+sizevmarg*3(t0) - ble s6,calljava_argsloaded - - lda s6,-1(s6) - ldq a4,offvmargdata+sizevmarg*4(t0) - ldt $f20,offvmargdata+sizevmarg*4(t0) - ble s6,calljava_argsloaded - - lda s6,-1(s6) - ldq a5,offvmargdata+sizevmarg*5(t0) - ldt $f21,offvmargdata+sizevmarg*5(t0) -calljava_argsloaded: - mov sp,t4 - ble s6,calljava_nocopy - negq s6,t1 - s8addq t1,sp,sp - s8addq t1,t4,t2 - -calljava_copyloop: - ldq t3,offvmargdata+sizevmarg*6(t0) - stq t3,0(t2) - lda t1,1(t1) - lda t0,sizevmarg(t0) - lda t2,8(t2) - bne t1,calljava_copyloop - -calljava_nocopy: - ldq itmp1,4*8(t4) /* pass method pointer via itmp1 */ - - lda mptr,asm_call_jit_compiler/* fake virtual function call (2 instr) */ - stq mptr,2*8(t4) /* store function address */ - lda mptr,1*8(t4) /* set method pointer */ - - ldq pv,1*8(mptr) /* method call as in Java */ - jmp ra,(pv) /* call JIT compiler */ -calljava_jit2: - lda pv,(asm_vm_call_method - calljava_jit2)(ra) - - s8addq s6,sp,sp -calljava_return2: - ldq ra,0*8(sp) /* restore return address */ - ldq gp,1*8(sp) /* restore global pointer */ - ldq s6,3*8(sp) - lda sp,5*8(sp) /* free stack space */ - -calljava_ret2: + lda sp,-5*8(sp) /* allocate stack space */ + stq ra,0*8(sp) /* save return address */ + stq gp,1*8(sp) /* save global pointer */ + + stq s0,3*8(sp) + stq a0,4*8(sp) /* save method PV */ + + mov a1,t0 /* address of argument array */ + mov a2,t1 /* stack argument count */ + mov sp,s0 /* save stack pointer */ + + ldq a0,0*8(t0) + ldq a1,1*8(t0) + ldq a2,2*8(t0) + ldq a3,3*8(t0) + ldq a4,4*8(t0) + ldq a5,5*8(t0) + + ldt fa0,6*8(t0) + ldt fa1,7*8(t0) + ldt fa2,8*8(t0) + ldt fa3,9*8(t0) + ldt fa4,10*8(t0) + ldt fa5,11*8(t0) + + beq t1,L_asm_vm_call_method_stack_copy_done + + negq t1,t2 /* calculate stackframe size (* 8) */ + s8addq t2,sp,sp /* create stackframe */ + mov sp,t2 /* temporary stack pointer */ + +L_asm_vm_call_method_stack_copy_loop: + ldq t3,12*8(t0) /* load argument */ + stq t3,0(t2) /* store argument on stack */ + + subq t1,1,t1 /* subtract 1 argument */ + addq t0,8,t0 /* load address of next argument */ + addq t2,8,t2 /* increase stack pointer */ + + bgt t1,L_asm_vm_call_method_stack_copy_loop + +L_asm_vm_call_method_stack_copy_done: + lda mptr,4*8(s0) /* get address of PV */ + ldq pv,0*8(mptr) /* load PV */ + jmp ra,(pv) +L_asm_vm_call_method_recompute_pv: + lda pv,(asm_vm_call_method - L_asm_vm_call_method_recompute_pv)(ra) + + mov s0,sp /* restore stack pointer */ + +L_asm_vm_call_method_recompute_return: + ldq ra,0*8(sp) /* restore RA */ + ldq gp,1*8(sp) /* restore global pointer */ + ldq s0,3*8(sp) + + lda sp,5*8(sp) /* free stack space */ jmp zero,(ra) asm_vm_call_method_exception_handler: - s8addq s6,sp,sp - ldq gp,1*8(sp) /* restore global pointer */ + mov s0,sp /* restore stack pointer */ + ldq gp,1*8(sp) /* restore global pointer */ mov itmp1,a0 jsr ra,builtin_throw_exception - ldq ra,0*8(sp) /* restore return address */ - ldq s6,3*8(sp) - lda sp,5*8(sp) /* free stack space */ + asm_vm_call_method_end: - jmp zero,(ra) + br L_asm_vm_call_method_recompute_return .end asm_vm_call_method diff --git a/src/vm/jit/alpha/md-abi.c b/src/vm/jit/alpha/md-abi.c index 457b23d9b..2fed88870 100644 --- a/src/vm/jit/alpha/md-abi.c +++ b/src/vm/jit/alpha/md-abi.c @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: md-abi.c 8123 2007-06-20 23:50:55Z michi $ + $Id: md-abi.c 8198 2007-07-12 07:16:24Z twisti $ */ @@ -174,12 +174,14 @@ void md_param_alloc(methoddesc *md) case TYPE_LNG: if (i < INT_ARG_CNT) { pd->inmemory = false; + pd->index = reguse; pd->regoff = abi_registers_integer_argument[reguse]; reguse++; md->argintreguse = reguse; } else { pd->inmemory = true; + pd->index = stacksize; pd->regoff = stacksize * 8; stacksize++; } @@ -189,12 +191,14 @@ void md_param_alloc(methoddesc *md) case TYPE_DBL: if (i < FLT_ARG_CNT) { pd->inmemory = false; + pd->index = reguse; pd->regoff = abi_registers_float_argument[reguse]; reguse++; md->argfltreguse = reguse; } else { pd->inmemory = true; + pd->index = stacksize; pd->regoff = stacksize * 8; stacksize++; } diff --git a/src/vm/jit/asmpart.h b/src/vm/jit/asmpart.h index 5628823bf..151758eed 100644 --- a/src/vm/jit/asmpart.h +++ b/src/vm/jit/asmpart.h @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: asmpart.h 8128 2007-06-21 16:29:53Z tbfg $ + $Id: asmpart.h 8198 2007-07-12 07:16:24Z twisti $ */ @@ -89,7 +89,7 @@ s4 asm_md_init(void); void asm_call_jit_compiler(void); #if defined(ENABLE_JIT) -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) java_objectheader *asm_vm_call_method(methodinfo *m, s4 vmargscount, vm_arg *vmargs); s4 asm_vm_call_method_int(methodinfo *m, s4 vmargscount, vm_arg *vmargs); diff --git a/src/vm/vm.c b/src/vm/vm.c index 61441ac1e..59855ccaa 100644 --- a/src/vm/vm.c +++ b/src/vm/vm.c @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: vm.c 8194 2007-07-10 13:44:37Z twisti $ + $Id: vm.c 8198 2007-07-12 07:16:24Z twisti $ */ @@ -2512,7 +2512,7 @@ static void vm_array_store_adr(uint64_t *array, paramdesc *pd, void *value) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) static void vm_vmargs_from_valist(methodinfo *m, java_objectheader *o, vm_arg *vmargs, va_list ap) { @@ -2648,7 +2648,7 @@ uint64_t *vm_array_from_valist(methodinfo *m, java_objectheader *o, va_list ap) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) static void vm_vmargs_from_jvalue(methodinfo *m, java_objectheader *o, vm_arg *vmargs, const jvalue *args) { @@ -2778,7 +2778,7 @@ static uint64_t *vm_array_from_jvalue(methodinfo *m, java_objectheader *o, *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) bool vm_vmargs_from_objectarray(methodinfo *m, java_objectheader *o, vm_arg *vmargs, java_objectarray *params) { @@ -3181,7 +3181,7 @@ java_objectheader *vm_call_method(methodinfo *m, java_objectheader *o, ...) java_objectheader *vm_call_method_valist(methodinfo *m, java_objectheader *o, va_list ap) { -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s4 vmargscount; vm_arg *vmargs; java_objectheader *ro; @@ -3248,7 +3248,7 @@ java_objectheader *vm_call_method_valist(methodinfo *m, java_objectheader *o, java_objectheader *vm_call_method_jvalue(methodinfo *m, java_objectheader *o, const jvalue *args) { -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s4 vmargscount; vm_arg *vmargs; java_objectheader *ro; @@ -3312,7 +3312,7 @@ java_objectheader *vm_call_method_jvalue(methodinfo *m, java_objectheader *o, *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) java_objectheader *vm_call_method_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs) { @@ -3372,7 +3372,7 @@ java_objectheader *vm_call_array(methodinfo *m, uint64_t *array) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s4 vm_call_method_int_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs) { s4 i; @@ -3451,7 +3451,7 @@ s4 vm_call_method_int(methodinfo *m, java_objectheader *o, ...) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s4 vm_call_method_int_valist(methodinfo *m, java_objectheader *o, va_list ap) { s4 vmargscount; @@ -3520,7 +3520,7 @@ int32_t vm_call_method_int_valist(methodinfo *m, java_objectheader *o, va_list a *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s4 vm_call_method_int_jvalue(methodinfo *m, java_objectheader *o, const jvalue *args) { @@ -3591,7 +3591,8 @@ int32_t vm_call_method_int_jvalue(methodinfo *m, java_objectheader *o, *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) +>>>>>>> .r8173 s8 vm_call_method_long_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs) { s8 l; @@ -3670,7 +3671,7 @@ s8 vm_call_method_long(methodinfo *m, java_objectheader *o, ...) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s8 vm_call_method_long_valist(methodinfo *m, java_objectheader *o, va_list ap) { s4 vmargscount; @@ -3739,7 +3740,7 @@ int64_t vm_call_method_long_valist(methodinfo *m, java_objectheader *o, va_list *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) s8 vm_call_method_long_jvalue(methodinfo *m, java_objectheader *o, const jvalue *args) { @@ -3810,7 +3811,7 @@ int64_t vm_call_method_long_jvalue(methodinfo *m, java_objectheader *o, *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) float vm_call_method_float_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs) { float f; @@ -3890,7 +3891,7 @@ float vm_call_method_float(methodinfo *m, java_objectheader *o, ...) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) float vm_call_method_float_valist(methodinfo *m, java_objectheader *o, va_list ap) { @@ -3959,7 +3960,7 @@ float vm_call_method_float_valist(methodinfo *m, java_objectheader *o, va_list a *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) float vm_call_method_float_jvalue(methodinfo *m, java_objectheader *o, const jvalue *args) { @@ -4029,7 +4030,7 @@ float vm_call_method_float_jvalue(methodinfo *m, java_objectheader *o, const jva *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) double vm_call_method_double_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs) { @@ -4111,7 +4112,7 @@ double vm_call_method_double(methodinfo *m, java_objectheader *o, ...) *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) double vm_call_method_double_valist(methodinfo *m, java_objectheader *o, va_list ap) { @@ -4181,7 +4182,7 @@ double vm_call_method_double_valist(methodinfo *m, java_objectheader *o, va_list *******************************************************************************/ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) double vm_call_method_double_jvalue(methodinfo *m, java_objectheader *o, const jvalue *args) { diff --git a/src/vm/vm.h b/src/vm/vm.h index fde0458ba..175d4d1dd 100644 --- a/src/vm/vm.h +++ b/src/vm/vm.h @@ -104,7 +104,7 @@ void vm_exit_handler(void); void vm_abort(const char *text, ...); /* Java method calling functions */ -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) bool vm_vmargs_from_objectarray(methodinfo *m, java_objectheader *o, vm_arg *vmargs, java_objectarray *params); #else @@ -118,7 +118,7 @@ java_objectheader *vm_call_method_valist(methodinfo *m, java_objectheader *o, java_objectheader *vm_call_method_jvalue(methodinfo *m, java_objectheader *o, const jvalue *args); -#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) +#if !defined(__MIPS__) && !defined(__X86_64__) && !defined(__POWERPC64__) && !defined(__SPARC_64__) && !defined(__M68K__) && !defined(__ARM__) && !defined(__ALPHA__) java_objectheader *vm_call_method_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs); s4 vm_call_method_int_vmarg(methodinfo *m, s4 vmargscount, vm_arg *vmargs); -- 2.25.1