< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/WithObject.java

Print this page

        

*** 24,33 **** --- 24,34 ---- */ package jdk.nashorn.internal.runtime; import static jdk.nashorn.internal.lookup.Lookup.MH; + import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; import java.lang.invoke.SwitchPoint;
*** 207,226 **** } return super.findProperty(key, deep, start); } @Override ! protected Object invokeNoSuchProperty(final String name, final int programPoint) { FindProperty find = expression.findProperty(NO_SUCH_PROPERTY_NAME, true); if (find != null) { final Object func = find.getObjectValue(); if (func instanceof ScriptFunction) { ! return ScriptRuntime.apply((ScriptFunction)func, expression, name); } } ! return getProto().invokeNoSuchProperty(name, programPoint); } @Override public void setSplitState(final int state) { ((Scope) getNonWithParent()).setSplitState(state); --- 208,229 ---- } return super.findProperty(key, deep, start); } @Override ! protected Object invokeNoSuchProperty(final String name, final boolean isScope, final int programPoint) { FindProperty find = expression.findProperty(NO_SUCH_PROPERTY_NAME, true); if (find != null) { final Object func = find.getObjectValue(); if (func instanceof ScriptFunction) { ! final ScriptFunction sfunc = (ScriptFunction)func; ! final Object self = isScope && sfunc.isStrict()? UNDEFINED : expression; ! return ScriptRuntime.apply(sfunc, self, name); } } ! return getProto().invokeNoSuchProperty(name, isScope, programPoint); } @Override public void setSplitState(final int state) { ((Scope) getNonWithParent()).setSplitState(state);
< prev index next >