< 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 >