hg: valhalla/valhalla/langtools: Fix: Synthesized java.lang.__Value type is not flagged as a value type.
Srikanth
srikanth.adayapalam at oracle.com
Wed Feb 24 05:40:22 UTC 2016
On Wednesday 24 February 2016 01:20 AM, Remi Forax wrote:
> Hi Srikanth,
> i'm not sure it's a good idea to do that,
> __Value is not a value type per se, as java.lang.Enum is not an enum.
Hello Rémi,
Thanks for your feedback.
Quite a few things in this area are in flux.
See that the patch we are talking about concerns - as the name of the
method
(com.sun.tools.javac.code.Symtab#synthesizeJavaLangValueClassIfMissing)
indicates - what javac should do when it does *not* find java.lang.__Value.
When it does find it properly in
valhalla/jdk/src/java.base/share/classes/java/lang/__Value.java
see that the compiler will see the source file (or the equivalent class
file) that has a class
declaration header that reads:
__ByValue final public class __Value {
...
}
This class is tagged as a value class as well as is final which is
problematic.
So the patch is at worst ensuring consistent treatment in an error scenario
as in a normal scenario.
The most pressing need for the change was that in the absence of it, javac
can generate code for a value type constructor that uses aload0 instead
vload 0
for example in:
public final __ByValue class X {
X() {
System.out.println("X::X");
}
}
X();
Code:
0: aload_0
1: invokespecial #6 // Method
java/lang/__Value."<init>":()V
instead of
Code:
0: vload 0
2: invokespecial #6 // Method
java/lang/__Value."<init>":()V
This is causing problems for me in another experiment I am working on.
Long story short, I agree this is something we need to watch for and
decide what
is the right thing to do.
Thanks!
Srikanth
>
> Rémi
>
> ----- Mail original -----
>> De: "srikanth adayapalam" <srikanth.adayapalam at oracle.com>
>> À: valhalla-dev at openjdk.java.net
>> Envoyé: Mardi 23 Février 2016 05:36:51
>> Objet: hg: valhalla/valhalla/langtools: Fix: Synthesized java.lang.__Value type is not flagged as a value type.
>>
>> Changeset: 863048d7a463
>> Author: sadayapalam
>> Date: 2016-02-23 10:06 +0530
>> URL:
>> http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/863048d7a463
>>
>> Fix: Synthesized java.lang.__Value type is not flagged as a value type.
>>
>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java
>>
>>
More information about the valhalla-dev
mailing list