for review (S): 6912065: final fields in objects need to support inlining optimizations for JSR 292
Christian.Thalinger at Sun.COM
Mon Jan 4 01:54:31 PST 2010
On Sat, 2009-12-19 at 01:11 -0800, John Rose wrote:
> A value in an object field cannot be constant-folded even when the
> field is marked 'final' and the enclosing object itself can be
> determined at compile time. This is because 'final' fields are not
> enforced by the JVM.
> The long term fix for this is to properly optimize the common case of
> any field which is set in an object constructor and then never
> changed, not even by reflection or JNI.
> This is a performance issue for method handle combinators like
> MethodHandles.guardWithTest. They are a hybrid of data structure and
> function pointer. As function pointers they need to be inlined and
> optimized. As data structures, they are tied together via final
> fields, which must be foldable at compile time in order to complete
> the inlining process.
> As a stopgap measure, we will instruct the JVM to "trust" final fields
> in selected (trusted!) packages, notably java.dyn and sun.dyn. This
> trust directive will be configurable, so that dynamic language
> runtimes can be included as necessary.
Looks good. -- Christian
More information about the hotspot-compiler-dev