some nashorn testing
Andreas Rieber
rieberandreas at gmail.com
Wed Jan 9 07:34:35 PST 2013
I use nashorn clone from http://hg.openjdk.java.net/nashorn/jdk8/nashorn
last update yesterday evening, and it doesn't work as standalone js
program as it fails scripting java so you would need to compile the sample.
On 09.01.13 16:26, Marcus Lagergren wrote:
> Where did you get/build your nashorn.jar? We'll get proper versioning in there as soon as we've integrated fully with the OpenJDK build system. I still get nothing when I manually build the latest nashorn.jar from the openjdk and run the JS snippet from the command line with java -jar nashorn.jar <program.js> (Haven't gone through the script engine bridge, but as it seems to be a JavaScript problem it should be sufficient to run it as a standalone script). This very much looks like a bug that I fixed before christmas and pushed into the closed repo - I've verified that it made it into the openjdk source.
> /M
>
> On Jan 9, 2013, at 3:51 PM, Andreas Rieber <rieberandreas at gmail.com> wrote:
>
>> Hi Marcus and Remi,
>>
>> please find attached a better test to reproduce.
>>
>> Rhino output:
>> -------------
>> data 0 : 1.0
>> data 1 : 2.0
>> data 2 : 3.0
>>
>> Nashorn output:
>> ---------------
>> Exception in thread "main" java.lang.ClassCastException: Cannot cast jdk.nashorn.internal.objects.NativeArray to [Ljava.lang.Object;
>> at sun.invoke.util.ValueConversions.newClassCastException(ValueConversions.java:461)
>> at sun.invoke.util.ValueConversions.castReference(ValueConversions.java:456)
>> at jdk.nashorn.internal.scripts.Script$\^eval\_.varargFunc(<eval>:10)
>> at jdk.nashorn.internal.scripts.Script$\^eval\_.runScript(<eval>:13)
>> at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:359)
>> at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:310)
>> at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:438)
>> at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:423)
>> at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150)
>> at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
>> at ObjectArray.main(ObjectArray.java:16)
>>
>>
>>
>> On 09.01.13 08:45, Marcus Lagergren wrote:
>>> Remi, Andreas
>>>
>>> I can't reproduce your problem running
>>>
>>> java -jar nashorn.jar script.js
>>>
>>> where script.js is
>>>
>>> --
>>> var array;
>>> try {
>>> array = new (Java.type("java.lang.Object[]"))(len);
>>> } catch (x) {
>>> array = [];
>>> }
>>> --
>>>
>>> Do you have a reproducer you can send me ? I know there was a bug regarding array literal types just before Christmas, but it's in the openjdk as far as I can tell.
>>>
>>> Regards
>>> Marcus
>>>
>>>
>>> On Jan 8, 2013, at 10:56 PM, Remi Forax <forax at univ-mlv.fr> wrote:
>>>
>>>> On 01/08/2013 10:49 PM, Attila Szegedi wrote:
>>>>> Hey Marcus and Jim, this is similar to that bug we saw before with array literals in the ternary operator. Something related to codegen's inference of types…
>>>> a simple workaround is to change the last line
>>>>
>>>> var array;
>>>> try {
>>>> array = new (Java.type("java.lang.Object[]"))(len); // array is Object[]
>>>> } catch (x) {
>>>> //array = []; // array is NativeArray
>>>> array = new (Java.type("java.lang.Object[]"))(0); // array is Object[]
>>>> }
>>>>
>>>> Rémi
>>>>
>>>>> On Jan 8, 2013, at 9:30 PM, Andreas Rieber <rieberandreas at gmail.com> wrote:
>>>>>
>>>>>> I tried some cases and will go for (Nashorn and Rhino):
>>>>>>
>>>>>> var array;
>>>>>> try {
>>>>>> array = new (Java.type("java.lang.Object[]"))(len);
>>>>>> } catch (x) {
>>>>>> array = [];
>>>>>> }
>>>>>>
>>>>>> The catch block works with Rhino but gives with Nashorn:
>>>>>>
>>>>>> Exception in thread "main" java.lang.ClassCastException: Cannot cast jdk.nashorn.internal.objects.NativeArray to [Ljava.lang.Object;
>>>>>> at sun.invoke.util.ValueConversions.newClassCastException(ValueConversions.java:461)
>>>>>> at sun.invoke.util.ValueConversions.castReference(ValueConversions.java:456)
>>>>>> at jdk.nashorn.internal.scripts.Script$main.sprintf(main.js:114)
>>>>>> at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:350)
>>>>>> at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:310)
>>>>>> at jdk.nashorn.internal.objects.NativeFunction.apply(NativeFunction.java:133)
>>>>>>
>>>>>>
>>>>>> cheers
>>>>>> Andreas
>>>>>>
>> <ObjectArray.java>
More information about the nashorn-dev
mailing list