[10] RFR: 8178384: Reduce work in java.lang.invoke initializers

forax at univ-mlv.fr forax at univ-mlv.fr
Tue Apr 11 18:20:41 UTC 2017


Hi Claes,
yes !

We use something equivalent to "FOO".toCharArray() at several place in ASM because there is no constant pool constant arrays [1].

Terence Parr also mentions that issue at the JVM Summit 2009 [2].

Rémi
[1] http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/645c0d3e3977/src/java.base/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java#l556 
[2] http://parrt.cs.usfca.edu/doc/impl-parsers-in-java.pdf


----- Mail original -----
> De: "Claes Redestad" <claes.redestad at oracle.com>
> À: "Remi Forax" <forax at univ-mlv.fr>, core-libs-dev at openjdk.java.net, "Paul Sandoz" <paul.sandoz at oracle.com>
> Envoyé: Mardi 11 Avril 2017 10:37:45
> Objet: Re: [10] RFR: 8178384: Reduce work in java.lang.invoke initializers

> Sounds like you want https://bugs.openjdk.java.net/browse/JDK-8061402 -
> which was originally filed back in 2002 but was closed since it got
> filed on the wrong component or something... ¯\_(ツ)_/¯
> 
> There's still a number of char[] foo = "FOO".toCharArray() in the JDK
> since this allows for a more compact representation in bytecode (but is
> likely a bit slower during startup, especially since compact strings).
> 
> /Claes
> 
> On 04/10/2017 06:32 PM, Remi Forax wrote:
>> Currently playing with a pattern matching representation for Amber, if
>> think we need a form of array constant that does not require a
>> bootstrap method.
>> Afaik, an array of any existing constants does not need a Java code to
>> construct itself.
>>
>> Rémi
>>
>>
>> On April 10, 2017 6:18:07 PM GMT+02:00, Paul Sandoz
>> <paul.sandoz at oracle.com> wrote:
>>
>>     +1
>>
>>     These named functions really wanna be LDC’ed but i suspect using constant
>>     dynamic + representation in source (when available) might result in it’s own
>>     bootstrap issues, still it would be interesting to try when available.
>>
>>     Paul.
>>
>>         On 10 Apr 2017, at 07:09, Claes Redestad
>>         <claes.redestad at oracle.com> wrote: Hi, profiling initializers
>>         in java.lang.invoke shows we're still doing various things
>>         during class initialization which could be done lazily or not
>>         at all. The proposed patch reduce bytecode executed, memory
>>         churn and retained heap footprint when initializing
>>         java.lang.invoke: Webrev:
>>         http://cr.openjdk.java.net/~redestad/8178384/jdk.01
>>         <http://cr.openjdk.java.net/%7Eredestad/8178384/jdk.01>/ Bug:
>>         https://bugs.openjdk.java.net/browse/JDK-8178384 Testing:
>>         java.lang.invoke jtreg tests, sanity performance testing
>>         Thanks! /Claes
>>
>>
>>
>>
>> --
> > Sent from my Android device with K-9 Mail. Please excuse my brevity.


More information about the core-libs-dev mailing list