Help for JIT

Patrick Tullmann kaffe@rufus.w3.org
Wed, 15 Aug 2001 02:03:25 -0600


> I'm looking into the JIT compiler of Kaffe. In the
> file "icode.c"( in kaffe/kaffevm/jit/icode.c ) there

You should look in the jit3/ directory for the most recent version of
the JIT code.  Though I believe the code in jit/ still works.

The other critical file to look at is kaffevm/kaffe.def.  That defines
the java bytecodes in terms of the macros you've already discovered.

The "sequence" struct is for generating machine instructions.  It
contains data and a function for emitting the platform's instructions.

> The things to which these get defined do not seem to be function
> names though( example spill_Rxx, fspill_Rxx etc )!

Look at the define_insn() macro in kaffevm/jit*/funcs.c.  This is what
converts the define_insn() macros in the config/* directories into
functions that the engine can invoke.  I'm not sure what the point of
this macro is, it just defines a fixed function signature.

Note that this macro is different from the define_insn() used to
define the bytecodes (see the XXX in jit/funcs.c).  (One is two arg,
one is single-arg).

> Would appreciate if someone could help..

Hope this helps.

-Pat

----- ----- ---- ---  ---  --   -    -      -         -               -
Pat Tullmann                                       tullmann@cs.utah.edu
  "You can't have everything.  Where would you put it?" -- S. Wright