--- old/test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java 2014-08-20 21:09:00.664276191 +0530 +++ new/test/src/jdk/nashorn/api/scripting/ScriptObjectMirrorTest.java 2014-08-20 21:09:00.344274596 +0530 @@ -361,4 +361,17 @@ final Function func = invocable.getInterface(Function.class); assertFalse((boolean)func.apply(engine.eval("({ x: 2 })"))); } + + // @bug 8055687: Wrong "this" passed to JSObject.eval call + @Test + public void checkThisForJSObjectEval() throws Exception { + final ScriptEngineManager engineManager = new ScriptEngineManager(); + final ScriptEngine e = engineManager.getEngineByName("nashorn"); + final JSObject jsobj = (JSObject)e.eval("({foo: 23, bar: 'hello' })"); + assertEquals(((Number)jsobj.eval("this.foo")).intValue(), 23); + assertEquals(jsobj.eval("this.bar"), "hello"); + assertEquals(jsobj.eval("String(this)"), "[object Object]"); + final Object global = e.eval("this"); + assertFalse(global.equals(jsobj.eval("this"))); + } }