ReRe: performance (shellsort experiments)

Martyn Pearce m.pearce@inpharmatica.co.uk
Thu Sep 2 03:37:00 GMT 1999


Kresten Krab Thorup writes:
| With a dynamic compiler that does code-specialization, mosts of such
| casts can be eliminated.  
| 
| In context of static compilation, I expect that we could get a
| significant win by just adding a mono-morphic inline cache.  That is,
| for each expression at the form 
| 
|    x = (Foo)y
| 
| we'd generate code like:
| 
|   static _Jv_VTable* __tmp = 0;
|   if (y->vtable != __tmp)
|     {
|        _Jv_CheckArrayStore (y, Foo.class); // may throw exc
|        __tmp = y->vtable;
|     }
|   x = y;   
|   
| Experiments with Self/Smalltalk in context of dynamic method
| dispatch have shown that this kind of thing improves performance
| dramatically, since most call sites are in fact mono-morphic.  My bet
| is, that this is also the case for most type-cast operations.
| 
| This would of cause require compiler changes.

Might be worth a peek at Martin Odersky's GJ,
http://www.cis.unisa.edu.au/~pizza/gj/ , which provides a Java superset
with "generics" (read: C++ templates), and provides annotiations within
the class files enabling a suitable VM to know of such uses.

Mx.


More information about the Java mailing list