Not sure if everyone on this list is also on the -commits list, and i wanted
everyone to see this. :)

Chris

Christoph Toshok wrote:

> toshok      1999/07/30 23:14:39 PDT
>
>   Modified files:
>     java/japhar/include  ClazzFile.h objects.h
>     java/japhar/lib/libjni/src jnirefl.c
>     java/japhar/lib/libjvmdi/src jvmdicls.c
>     java/japhar/lib/libnative/java.io objstrm.c
>     java/japhar/lib/libnative/java.lang class.c
>     java/japhar/lib/libruntime array-class.c clparse.c field.c
>                                interpfunc.c interploop.c method.c
>                                nativeglue.c objects.c
>                                primitive-class.c
>   Log:
>   move to a better virtual method / interface method layout and lookup strategy.
>
>   virtual methods are kept in a traditional vtable (in the ClazzFile), and
>   interface methods are kept in a similar per-interface,per-class vtable.
>
>   Virtual method lookup (once the method is resolved) is now constant time
>   (requiring two lookups -- once for the method to call, and once for the
>   callee's implementation of that method.)
>
>   Interface method lookups are still linear (but linear wrt to the number of
>   interfaces a class implements, not wrt the number of methods the class
>   contains.)  There is room for improvement here.  For example, EF uses a matrix
>   compression technique to make interface lookup constant time.
>
>   There is still (obviously, from the below timings) more room for optimization,
>   but this was extremely low hanging fruit.
>
>   Time for javac compiling ArrayTest.java from the japhar testsuite:
>
>   jdk1.1.8       :   [done in 2441 ms]
>   japhar (before):   [done in 7801 ms]
>   japhar (after) :   [done in 5585 ms]
>
>   :)
>
>   Revision  Changes    Path
>   1.43      +33 -24    hungry/java/japhar/include/ClazzFile.h
>   1.32      +0 -6      hungry/java/japhar/include/objects.h
>   1.12      +2 -2      hungry/java/japhar/lib/libjni/src/jnirefl.c
>   1.8       +2 -2      hungry/java/japhar/lib/libjvmdi/src/jvmdicls.c
>   1.23      +3 -3      hungry/java/japhar/lib/libnative/java.io/objstrm.c
>   1.55      +22 -21    hungry/java/japhar/lib/libnative/java.lang/class.c
>   1.29      +10 -9     hungry/java/japhar/lib/libruntime/array-class.c
>   1.87      +339 -232  hungry/java/japhar/lib/libruntime/clparse.c
>   1.4       +1 -1      hungry/java/japhar/lib/libruntime/field.c
>   1.105     +42 -37    hungry/java/japhar/lib/libruntime/interpfunc.c
>   1.101     +17 -19    hungry/java/japhar/lib/libruntime/interploop.c
>   1.10      +31 -13    hungry/java/japhar/lib/libruntime/method.c
>   1.74      +6 -13     hungry/java/japhar/lib/libruntime/nativeglue.c
>   1.71      +2 -32     hungry/java/japhar/lib/libruntime/objects.c
>   1.13      +13 -0     hungry/java/japhar/lib/libruntime/primitive-class.c

Reply via email to