Value Types - Meet some issues during execution

Frederic Parain frederic.parain at oracle.com
Mon Oct 24 17:26:11 UTC 2016


The verifier has not been updated to take into account value types,
and there's currently no plan to fix it until the syntax and the
semantic of value types have been finalized.

There's a bug in the interpreter that causes the crash seen by Maurizio
(we used a different code pattern to generate value types in our tests,
so we missed it). I'll push the fix for it today.

Fred

On 10/24/2016 12:32 PM, Maurizio Cimadamore wrote:
> Tried too with verify:none and got a dump. Frederic is looking into it.
>
> Maurizio
>
>
> On 24/10/16 17:28, Remi Forax wrote:
>> Hi Maurizio,
>> it seems the verifier has not been updated yet to cope with value type,
>> in the example provided by Tobias, he is using -noverify to bypass the
>> verifier,
>> but it crashes we starting to run the interpreter.
>>
>> Maybe, there is a shiboleet [1] option to pass to the VM ?
>>
>> Rémi
>> [1] https://xkcd.com/806/
>>
>> ----- Mail original -----
>>> De: "Maurizio Cimadamore" <maurizio.cimadamore at oracle.com>
>>> À: "GIACHERIO Fabien" <f.giacherio at gmail.com>, "Tobias Hartmann"
>>> <tobias.hartmann at oracle.com>,
>>> valhalla-dev at openjdk.java.net
>>> Envoyé: Lundi 24 Octobre 2016 16:16:36
>>> Objet: Re: Value Types - Meet some issues during execution
>>> I too get this:
>>>
>>> Error: A JNI error has occurred, please check your installation and try
>>> again
>>> Exception in thread "main" java.lang.ClassFormatError: Method "<vminit>"
>>> in class Point has illegal signature "(II)QPoint;"
>>>      at java.lang.ClassLoader.defineClass1(Native Method)
>>>      at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
>>>      at java.lang.ClassLoader.defineClass(ClassLoader.java:837)
>>>      at
>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:184)
>>>      at java.net.URLClassLoader.defineClass(URLClassLoader.java:531)
>>>      at java.net.URLClassLoader.access$200(URLClassLoader.java:84)
>>>      at java.net.URLClassLoader$1.run(URLClassLoader.java:413)
>>>      at java.net.URLClassLoader$1.run(URLClassLoader.java:395)
>>>      at java.security.AccessController.doPrivileged(Native Method)
>>>      at java.net.URLClassLoader.findClass(URLClassLoader.java:394)
>>>      at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>>      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262)
>>>      at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>>      at
>>> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:504)
>>>
>>>
>>> I don't think this has to do with the JIT. Making the constructor public
>>> didn't change the outcome.
>>>
>>> Maurizio
>>>
>>>
>>>
>>> On 24/10/16 14:56, GIACHERIO Fabien wrote:
>>>> I tried to add the -Xint argument in order to disable compilation
>>>> but it
>>>> does not resolve the issue and the execution is still bugged.
>>>>
>>>> In the 'Minimal Value Types' document, It is say that : "Any use of any
>>>> part of any feature of this prototype must originate from a class in a
>>>> value-capable module".
>>>> I guess my issue come from that. How can I add my class in a
>>>> value-capable
>>>> module ?
>>>>
>>>> Best regards,
>>>> Fabien GIACHERIO.
>>>>
>>>> 2016-10-21 14:58 GMT+02:00 Tobias Hartmann
>>>> <tobias.hartmann at oracle.com>:
>>>>
>>>>> Hi Fabien,
>>>>>
>>>>> the current value types prototype has still very limited JIT
>>>>> support (C2
>>>>> only) and does not support all of the new vbytecodes and
>>>>> functionality yet.
>>>>> For an example of what already works, please have a look at these
>>>>> tests:
>>>>> http://hg.openjdk.java.net/valhalla/valhalla/hotspot/
>>>>> file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java
>>>>> Especially calls on value types are not yet working.
>>>>>
>>>>> If you are experimenting with value types, it's best to disable
>>>>> compilation for now (-Xint).
>>>>>
>>>>> I'm actively working on this and will constantly update the tests
>>>>> if new
>>>>> functionality is added. I also plan to send a summary of the
>>>>> implementation
>>>>> at some point.
>>>>>
>>>>> Best regards,
>>>>> Tobias
>>>>>
>>>>> On 21.10.2016 14:48, GIACHERIO Fabien wrote:
>>>>>> Hi everyone,
>>>>>>
>>>>>> I am currently working on value types and I am trying to execute an
>>>>> example.
>>>>>> I can compile the class below but I meet some issues when I try to
>>>>> execute
>>>>>> it even if I add these arguments :
>>>>>> -noverify
>>>>>> -XX:-TieredCompilation
>>>>>> -XX:-BackgroundCompilation
>>>>>> -XX:-UseOnStackReplacement
>>>>>> -XX:CompileCommand=compileonly,Point::*
>>>>>> -XX:+PrintCompilation
>>>>>>
>>>>>> Do you have any solution ? If so, would you tell me please.
>>>>>>
>>>>>> Here is my code :
>>>>>> __ByValue final class Point{
>>>>>>       final int x;
>>>>>>       final int y;
>>>>>>
>>>>>>       private Point(int x, int y) {
>>>>>>           this.x = x;
>>>>>>           this.y = y;
>>>>>>       }
>>>>>>
>>>>>>       public static void hello() {
>>>>>>           Point origin = __Make Point(1,2);
>>>>>>       }
>>>>>>
>>>>>>       public static void main(String[] args) {
>>>>>>           hello();
>>>>>>       }
>>>>>> }
>>>>>>
>>>>>> Best Regards,
>>>>>> Fabien GIACHERIO.
>


More information about the valhalla-dev mailing list