Helmer Kr�mer wrote:
Hi,
Hi Helmer,
the attached patch moves the handling of trampolines and method
calls into engine-specific files, thereby further cleaning up
the core vm:
Great ! :) The patch and the new behaviour looks fine to me.
I like especially the engine_callMethod. This will potentially enable us to mix jitted and interpreted code by chosing the right callMethod depending on Method (but that's just an idea).
I had written for my engine separation patch a small amount of code to remove the ifdef in soft.c concerning soft_multianewarray. This uses sysdepCallMethod that I have chosen at that time to move into its own include file. Here is the code:
The code is naturally for the intrp... I'll write a patch if I have some time.
#include "sysdepCall.h" #include "slots.h" #include "soft.h"
static inline void *
soft_intrp_multianewarray(Hjava_lang_Class* class, jint dims, slots *args)
{
callMethodInfo call;
jvalue in[MAXMARGS];
jvalue ret;
int i; call.function = soft_multianewarray;
call.nrargs = 2 + dims;
call.args = in;
call.ret = &ret;
call.argsize = PTR_TYPE_SIZE / SIZEOF_INT + (dims+1);
call.retsize = PTR_TYPE_SIZE / SIZEOF_INT;
call.rettype = 'L';
call.callsize[0] = PTR_TYPE_SIZE / SIZEOF_INT;
call.callsize[1] = 1;
call.calltype[0] = 'L';
call.calltype[1] = 'I';
in[0].l = class;
in[1].i = dims;
args -= dims-1;
for (i = 0; i < dims; i++)
{
call.callsize[i+2] = 1;
call.calltype[i+2] = 'I';
/* We are sorting them in the reverse order
* because stack grows in the opposite direction */
in[i+2].i = args[i].v.tint;
}sysdepCallMethod(&call);
return ret.l; }
Cheers,
Guilhem.
_______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
