src/jdk/nashorn/internal/runtime/WithObject.java

Print this page

        

*** 86,95 **** --- 86,100 ---- } @Override public GuardedInvocation lookup(final CallSiteDescriptor desc, final LinkRequest request) { + if (request.isCallSiteUnstable()) { + // Fall back to megamorphic invocation which performs a complete lookup each time without further relinking. + return super.lookup(desc, request); + } + // With scopes can never be observed outside of Nashorn code, so all call sites that can address it will of // necessity have a Nashorn descriptor - it is safe to cast. final NashornCallSiteDescriptor ndesc = (NashornCallSiteDescriptor)desc; FindProperty find = null; GuardedInvocation link = null;
*** 263,273 **** final MethodHandle test = link.getGuard(); return test == null ? null : filter(test, filter); } private static MethodHandle filter(final MethodHandle mh, final MethodHandle filter) { ! return MH.filterArguments(mh, 0, filter); } /** * Drops the WithObject wrapper from the expression. * @param receiver WithObject wrapper. --- 268,278 ---- final MethodHandle test = link.getGuard(); return test == null ? null : filter(test, filter); } private static MethodHandle filter(final MethodHandle mh, final MethodHandle filter) { ! return MH.filterArguments(mh, 0, filter.asType(filter.type().changeReturnType(mh.type().parameterType(0)))); } /** * Drops the WithObject wrapper from the expression. * @param receiver WithObject wrapper.