Possible scope leak in Nashorn

Tim Fox timvolpe at gmail.com
Tue Dec 10 10:00:54 PST 2013

On 10/12/13 17:15, Tim Fox wrote:
> On 10/12/13 16:52, André Bargull wrote:
>>> Thanks, I adapted the code to use ScriptUtils.wrap() and encountered a
>>> strange situation where JSON.stringify returns undefined for a valid JS
>>> object. Maybe another scope problem?
>>> Here is a reproducer:https://gist.github.com/purplefox/7893408
>> No, it's not a  scope problem. JSON.stringify isn't able to process 
>> ScriptObjectMirror objects, see ll. 263-270 in NativeJSON.java [1].
>> - André
>> [1] 
>> http://hg.openjdk.java.net/nashorn/jdk8/nashorn/file/tip/src/jdk/nashorn/internal/objects/NativeJSON.java
> I see, so when a JS method in one scope is invoked from another scope 
> all the arguments get automatically wrapped in a ScriptObjectMirror. I 
> suppose NativeJSON needs to check for ScriptObjectMirror and unwrap 
> internally before attempting to stringify (?)
> I wonder if anyone could suggest a workaround for now? (it's not 
> obvious to me)
I've managed to work around this for now by not using the JSON impl in 
Nashorn but hacking Crockford's pure JS version 
and using that.

More information about the nashorn-dev mailing list