hg: amber/amber: 8192963: Starting with switch desugaring to indy.
forax at univ-mlv.fr
forax at univ-mlv.fr
Wed Dec 13 10:53:53 UTC 2017
----- Mail original -----
> De: "jan lahoda" <jan.lahoda at oracle.com>
> À: "Remi Forax" <forax at univ-mlv.fr>
> Cc: "amber-dev" <amber-dev at openjdk.java.net>
> Envoyé: Mercredi 13 Décembre 2017 11:37:50
> Objet: Re: hg: amber/amber: 8192963: Starting with switch desugaring to indy.
> On 13.12.2017 10:58, Remi Forax wrote:
>> Hi Jan,
>> putting the implementation in jdk.internal.misc may have a side effect on
>> performance,
>
> The issue there is (that it seems) that MethodHandles.lookup() cannot be
> used inside j.l.invoke (see
> MethodHandles.Lookup.checkUnprivilegedlookupClass). So I've put the impl
> into a different package. I don't know if there's a better way do that,
> but this all can change.
you can use MethodHandles.Lookup.IMPL_LOOKUP instead
>
>> i believe that the VM/JIT trust final fields declared in java.lang.invoke but
>> not the ones in jdk.internal.misc.
>>
>> In the code of StringSwitchCallSite, i do not understand how super(targetType,
>> HOOK); can not throw a runtime exception because the MethodType of HOOK takes a
>> callsite as first parameter.
>
> The initHook methods are instance methods, so that the first parameter
> is "this"? But Brian would know more, I assume.
that's my point, if the first parameter of the method handle is a StringSwitchCallSite and the first parameter of invokedynamic is a String (the switch argument), how can it work ?
>
> Jan
Rémi
>
>>
>> Note: unlike MutableCallSite where you can/have to initialize the callsite in
>> two steps (because the methodHandle it constains has to reference the mutable
>> callsite), so inheriting from a MutableCallSite makes sense, with a
>> ConstantCallSite using inheritance doesn't make sense. You can create a class
>> that doesn't inherits from ConstantCallSite, declare stringSwitch as static and
>> instead of storing the values as field you can declare them as parameter of
>> stringSwitch and use insertArguments to partailly applied them.
>>
>> Rémi
>>
>> ----- Mail original -----
>>> De: "jan lahoda" <jan.lahoda at oracle.com>
>>> À: "amber-dev" <amber-dev at openjdk.java.net>
>>> Envoyé: Mardi 12 Décembre 2017 20:55:21
>>> Objet: hg: amber/amber: 8192963: Starting with switch desugaring to indy.
>>
>>> Changeset: bb054c3c7d3a
>>> Author: jlahoda
>>> Date: 2017-12-12 19:41 +0100
>>> URL: http://hg.openjdk.java.net/amber/amber/rev/bb054c3c7d3a
>>>
>>> 8192963: Starting with switch desugaring to indy.
>>> Contributed-by: brian.goetz at oracle.com, jan.lahoda at oracle.com
>>>
>>> + src/java.base/share/classes/java/lang/invoke/SwitchBootstraps.java
>>> + src/java.base/share/classes/jdk/internal/misc/SwitchBootstrapsImpl.java
>>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java
>>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java
>>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
>>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java
>>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java
>>> + test/jdk/java/lang/invoke/TestSwitchBootstrap.java
> >> ! test/langtools/tools/javac/switchnull/SwitchNull.java
More information about the amber-dev
mailing list