src/share/classes/java/lang/invoke/MethodHandleImpl.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7082631 Cdiff src/share/classes/java/lang/invoke/MethodHandleImpl.java

src/share/classes/java/lang/invoke/MethodHandleImpl.java

Print this page

        

*** 747,758 **** assert(AdapterMethodHandle.canCollectArguments(foldTargetType, test.type(), 0, true)); // working backwards, as usual: assert(target.type().equals(fallback.type())); MethodHandle tailcall = MethodHandles.exactInvoker(target.type()); MethodHandle select = selectAlternative(); ! select = bindArgument(select, 2, fallback); ! select = bindArgument(select, 1, target); // select(z: boolean) => (z ? target : fallback) MethodHandle filter = filterArgument(tailcall, 0, select); assert(filter.type().parameterType(0) == boolean.class); MethodHandle fold = foldArguments(filter, filter.type().dropParameterTypes(0, 1), 0, test); return fold; --- 747,758 ---- assert(AdapterMethodHandle.canCollectArguments(foldTargetType, test.type(), 0, true)); // working backwards, as usual: assert(target.type().equals(fallback.type())); MethodHandle tailcall = MethodHandles.exactInvoker(target.type()); MethodHandle select = selectAlternative(); ! select = bindArgument(select, 2, CountingMethodHandle.wrap(fallback)); ! select = bindArgument(select, 1, CountingMethodHandle.wrap(target)); // select(z: boolean) => (z ? target : fallback) MethodHandle filter = filterArgument(tailcall, 0, select); assert(filter.type().parameterType(0) == boolean.class); MethodHandle fold = foldArguments(filter, filter.type().dropParameterTypes(0, 1), 0, test); return fold;
src/share/classes/java/lang/invoke/MethodHandleImpl.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File