some nashorn testing

Marcus Lagergren marcus.lagergren at oracle.com
Wed Jan 9 07:26:57 PST 2013


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