Kaffe 1.0.b1 install fails on Alpha Linux

Godmar Back gback at cs.utah.edu
Wed Jul 15 08:05:37 PDT 1998


> 
> Robert Harley <Robert.Harley at inria.fr> writes:
> 
> > #define sysdepCallMethod(CALL)                                          \
> 
> This macro is not properly defined for alpha.  Release 0.10.0 of Kaffe
> has introduced a new native function dispatcher that must be
> implemented on each platform.  If you know enough about the calling
> conventions of the alpha processor, you might be able to implement it.
> Take a look at the sparc and the x86 dispatchers for good examples.
> 

Another source of information as to how this macro is to be written 
is this comment in kaffe/kaffevm/support.h:

/*
 * The callMethodInfo structure describes the information necessary to
 * invoke a native or just-in-time compiled method.
 *
 * It is the task of the sysdepCallMethod macro, usually defined in
 * config/$arch/common.h, to generate a procedure call that conforms to
 * the calling convention of a particular architecture or set of build tools.
 *
 * The sysdepCallMethod macro takes a single argument of type callMethodInfo *
 * that describes where the parameters are, where the return value should
 * go and what the signature of the method is.
 *
 * `jvalue' is a union defined in include/jtypes.h.  It corresponds to an
 * entry on the Java stack.
 * The suffixes i,j,b,c,s,l,f,d access the corresponding element of
 * (Java) type int, long, boolean, char, short, ref, float, and double.
 *
 * `args' is an array containing the arguments passed to the function.
 * It corresponds to the Java stack and has `nrargs' valid entries with
 * the following property:
 *
 * If two adjacent slots on the Java stack are combined to a 64bit value,
 * it will also use two array entries, and not one.  However, the first
 * entry will contain the 64bit value (in j or d, depending on the type),
 * and the second entry will be undefined.  This allows for easier access,
 * while preserving indexing.  Thus, some array entries will have 0, some
 * 32 and some 64 bits of valid data in them.  The callsize array says
 * which one it is.
 *
 * callsize[i] may be 0, 1, or 2, depending on the number of valid bits
 * in args[i].  Similarly, calltype[i] contains the signature type of the
 * argument in args[i] ('J', 'F', etc.)
 *
 * Porters note that "callsize[i] == 2 iff callsize[i+1] == 0" -- this
 * property is exploited by some sysdepCallMethod macros (sparc).
 *
 * `function' is a pointer to the method to be invoked.
 *
 * `retsize' and `rettype' have the same value ranges as callsize[i] and
 * calltype[i],  except they correspond to the return value.  The
 * sysdepCallMethod must store the return value in the proper type at *ret.
 */

	- Godmar



More information about the kaffe mailing list