Jerry Schwarz wrote:
> On reflection I realize that the proposed optimization might interact
> poorly with reflection in the language (pun intended:-) because it is
> changing the fields of the class. So maybe it isn't allowed for that
> reason.
We can't delete the old S field, but we can insert a hidden S.x cache.
If u.f() is very common we can avoid an extra indirect load that way.
I mentioned inlining, because I was thinking ahead about this.
In addition to x-forming U into U'' with a hidden S.x cache, we
would only use the cache in compiled (not interpreted) code.
U.f() is so small (and must be hot or why bother to do the optimization)
so it gets inlined; i.e. we never compile U.f() directly. Thus this
optimization only usefully applies when inlined into some caller and
is thus easy to disallow inside naughty constructors. I didn't mention
all this before because I didn't want to bore you with the details.
It's my job to make 'The Spec' run fast or scream if it can't be done.
Cliff
-- Dr. Cliff Click Chief Architect, HotSpot Server Sun Microsystems, Inc. Cliff.Click@Sun.COM Senior Staff Engineer 4150 Network Circle (408) 276-7046 MS USCA14-102 Santa Clara, CA 95054------------------------------- JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:38 EDT