This page contains an archived post to the Design Forum (formerly called the Flexible Java Forum) made prior to February 25, 2002.
If you wish to participate in discussions, please visit the new
All the details I have
Posted by Bill Venners on 19 Jun 1998, 6:46 PM
> I'm not sure if this forum is still around... I see lots of
> messages from ~ June 1, but here's a shot.
They're all still around, though I don't check them as often
after the article they are based from goes off the front page
of whatever webzine it is published in. Visits trickle off too,
but like yourself, people do come and post even after the
article has been relegated to the archives.
> Was the article just simplified from a technical perspective,
> or do we really not know more about how this method inlining
> would function? It doesn't make much sense to me because at best
> you'll still be left with a conditional branch in the code, one
> direction of which is a function call, and that doesn't seem much
> easier to optimize around than a method call. And it certainly
> seems slower in and of itself than it would be to just call a
> function indirectly (a single instruction even on the 6052, much
> less modern CPU architectures!)
> Maybe I'm just confused though. Could someone lay out some
> pseudocode of what exactly the inlining is doing? I'm sorta
> interested in the technique.
I'm interested in the technique too.
Actually, I didn't want to make the article any more technical
than it was, but I also don't have much more detail about how
the inlining technique I described actually works. I didn't ask
Sun, but I wouldn't be surprised if they wouldn't tell me much,
as they likely consider this kind of stuff to be a competitive
I will, however, send an e-mail to the person at Sun who
gave out the information I passed along, and hopefully they
will be inclined to add as much information as they are allowed
to reveal about how the virtual method call inlining technique
actually works and how it ends up a net performance gain.
You know how an idea can look very cool, exciting, and promising
when sketched out in labeled circles and arrows of various
colors on a whiteboard. Everyone in attendence can tell
you how great an idea you have. But they'll also say, I look
forward to seeing the prototype.
That's where I think we (the Java programmer community) are
sitting with respect to Hotspot right now. It looks great on
the drawing board, but I want to see the prototype actually
zipping through my Java program at speeds close to natively-
compiled C++. I can imagine that the Hotspot team will
encounter unexpected difficulties as they go from drawing
board to working VM. Perhaps squeezing better performance out
of better optimization due to dynamic inlining will be harder
than they thought looking at the drawing board. It remains to
be seen to what extent any such unexpected issues will slow down
the development cycle of the VM and the ultimate performance
of the VM itself.
If anyone else can shed more light on the details of dynamic
inlining, please shine brightly.