On the EagerInitialization VM flag
Bertrand Delsart
bertrand.delsart at oracle.com
Thu Dec 19 23:41:28 PST 2013
Hi all,
I was in fact looking at EagerInitialization code when I saw this e-mail
thread :-)
It might be useful at least for some research projects. As long as it is
'develop' flag turned off in the product, I don't see strong reasons to
remove the code... and we may end up finding good ways of using it !
Thanks,
Bertrand.
On 20/12/13 01:06, Krystal Mok wrote:
> Hi David,
>
> Comments inline below:
>
> On Thu, Dec 19, 2013 at 3:52 PM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> On 20/12/2013 12:18 AM, Krystal Mok wrote:
>
> Hi David,
>
> Thanks for the reply, David.
>
> When turned on, EagerInitialization is only applied to those classes
> that doesn't have a <clinit>()V, which is the case for quite some
> classes and interfaces. If implemented correctly, it's supposed
> to be
> semantically safe, because executing a non-existing initializer
> shouldn't cause side effects visible from the Java level (but doing
> linking and verification at the wrong time is potentially
> problematic,
> though).
>
>
> Oops! My brain insisted this:
>
> // abort if the the class has a class initializer
> if (this->class_initializer() != NULL) return;
>
> was there to skip if there wasn't a class initializer! So everything
> I said was wrong.
>
> This would better be called EagerLinking as it has nothing to do
> with class initialization in the <clinit> sense.
>
> It is still valid as EagerInitialization, because in the end the class's
> status will be set to "initialized", so that on first actual use of this
> class it'll be magically "initialized" already and doesn't have to do
> all the checking and stuff.
>
> Thanks,
> Kris
>
> I believe both loading and linking (and thus verification) can be
> performed eagerly.
>
> David
> -----
>
> I wasn't intending to purpose removing the flag and its
> implementation,
> but I'd agree if someone did make such proposal.
>
> - Kris
>
>
> On Thu, Dec 19, 2013 at 4:26 PM, David Holmes
> <david.holmes at oracle.com <mailto:david.holmes at oracle.com>
> <mailto:david.holmes at oracle.__com
> <mailto:david.holmes at oracle.com>>> wrote:
>
> On 14/12/2013 7:56 AM, Krystal Mok wrote:
>
> Which is of course true, but not what I really cared about.
> I'm just curious of the history of what that flag tried
> to do,
> and then
> why didn't it work. Any pointers or hints would be
> appriciated.
>
>
> Given its age it is hard to say why it wasn't removed at
> the time
> 4292939 indicated. What it does is force class
> initialization at
> class loading time. This might have been seen as useful at some
> point but it violates the Java language semantics regarding
> when
> class initialization can occur (eager loading is allowed, eager
> initialization is not).
>
> Given eager initialization is likely to break the carefully
> crafted
> class initialization sequence I don't really see its
> utility - hence
> the proposal to remove it.
>
> David
>
> Thanks,
> Kris
>
> On Friday, December 13, 2013, Christian Thalinger wrote:
>
> Well, it’s a develop flag so it cannot be used in the
> product anyway.
>
> On Dec 13, 2013, at 11:27 AM, Krystal Mok
> <rednaxelafx at gmail.com <mailto:rednaxelafx at gmail.com>
> <mailto:rednaxelafx at gmail.com <mailto:rednaxelafx at gmail.com>>
>
> <javascript:_e({}, 'cvml', 'rednaxelafx at gmail.com
> <mailto:rednaxelafx at gmail.com>
> <mailto:rednaxelafx at gmail.com
> <mailto:rednaxelafx at gmail.com>>__');>> wrote:
>
> Hi all,
>
> Does anybody still remember the history behind the
> -XX:+EagerInitialization flag? It'd be great
> if someone
> still
> knows what the flag was for, and why it was to
> be removed.
>
> I saw this bug:
> https://bugs.openjdk.java.net/____browse/JDK-4292939
> <https://bugs.openjdk.java.net/__browse/JDK-4292939>
>
> <https://bugs.openjdk.java.__net/browse/JDK-4292939
> <https://bugs.openjdk.java.net/browse/JDK-4292939>>
> which stated that this flag was going away in
> "the next
> build",
> but now it's still in the code.
>
> Thanks,
> Kris
>
>
>
>
More information about the hotspot-runtime-dev
mailing list