Mercurial > hg > openjdk > jdk8u > jdk
changeset 4446:3f3a59423a7e
Merge
author | lana |
---|---|
date | Fri, 05 Aug 2011 16:03:00 -0700 |
parents | 565555e89034 (current diff) 996547848b00 (diff) |
children | a5f825ef8587 |
files | src/share/classes/java/lang/invoke/FilterGeneric.java src/share/classes/java/lang/invoke/FilterOneArgument.java src/share/classes/java/lang/invoke/FromGeneric.java src/share/classes/java/lang/invoke/SpreadGeneric.java src/share/classes/java/lang/invoke/ToGeneric.java |
diffstat | 68 files changed, 1927 insertions(+), 7922 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/motif/MotifFileChooserUI.java Fri Aug 05 16:03:00 2011 -0700 @@ -49,11 +49,11 @@ private FilterComboBoxModel filterComboBoxModel; - protected JList directoryList = null; - protected JList fileList = null; + protected JList<File> directoryList = null; + protected JList<File> fileList = null; protected JTextField pathField = null; - protected JComboBox filterComboBox = null; + protected JComboBox<FileFilter> filterComboBox = null; protected JTextField filenameTextField = null; private static final Dimension hstrut10 = new Dimension(10, 1); @@ -337,7 +337,7 @@ align(l); leftPanel.add(l); - filterComboBox = new JComboBox() { + filterComboBox = new JComboBox<FileFilter>() { public Dimension getMaximumSize() { Dimension d = super.getMaximumSize(); d.height = getPreferredSize().height; @@ -557,7 +557,7 @@ } protected JScrollPane createFilesList() { - fileList = new JList(); + fileList = new JList<File>(); if(getFileChooser().isMultiSelectionEnabled()) { fileList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); @@ -576,7 +576,7 @@ if (SwingUtilities.isLeftMouseButton(e) && !chooser.isMultiSelectionEnabled()) { int index = SwingUtilities2.loc2IndexFileList(fileList, e.getPoint()); if (index >= 0) { - File file = (File) fileList.getModel().getElementAt(index); + File file = fileList.getModel().getElementAt(index); setFileName(chooser.getName(file)); } } @@ -593,7 +593,7 @@ } protected JScrollPane createDirectoryList() { - directoryList = new JList(); + directoryList = new JList<File>(); align(directoryList); directoryList.setCellRenderer(new DirectoryCellRenderer()); @@ -658,7 +658,7 @@ } } - protected class MotifDirectoryListModel extends AbstractListModel implements ListDataListener { + protected class MotifDirectoryListModel extends AbstractListModel<File> implements ListDataListener { public MotifDirectoryListModel() { getModel().addListDataListener(this); } @@ -667,7 +667,7 @@ return getModel().getDirectories().size(); } - public Object getElementAt(int index) { + public File getElementAt(int index) { return getModel().getDirectories().elementAt(index); } @@ -694,7 +694,7 @@ } - protected class MotifFileListModel extends AbstractListModel implements ListDataListener { + protected class MotifFileListModel extends AbstractListModel<File> implements ListDataListener { public MotifFileListModel() { getModel().addListDataListener(this); } @@ -711,7 +711,7 @@ return getModel().getFiles().indexOf(o); } - public Object getElementAt(int index) { + public File getElementAt(int index) { return getModel().getFiles().elementAt(index); } @@ -773,7 +773,8 @@ /** * Data model for a type-face selection combo-box. */ - protected class FilterComboBoxModel extends AbstractListModel implements ComboBoxModel, PropertyChangeListener { + protected class FilterComboBoxModel extends AbstractListModel<FileFilter> implements ComboBoxModel<FileFilter>, + PropertyChangeListener { protected FileFilter[] filters; protected FilterComboBoxModel() { super(); @@ -826,7 +827,7 @@ } } - public Object getElementAt(int index) { + public FileFilter getElementAt(int index) { if(index > getSize() - 1) { // This shouldn't happen. Try to recover gracefully. return getFileChooser().getFileFilter();
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java Fri Aug 05 16:03:00 2011 -0700 @@ -60,7 +60,7 @@ private JPanel centerPanel; private JLabel lookInLabel; - private JComboBox directoryComboBox; + private JComboBox<File> directoryComboBox; private DirectoryComboBoxModel directoryComboBoxModel; private ActionListener directoryComboBoxAction = new DirectoryComboBoxAction(); @@ -76,7 +76,7 @@ private JPanel buttonPanel; private JPanel bottomPanel; - private JComboBox filterComboBox; + private JComboBox<FileFilter> filterComboBox; private static final Dimension hstrut10 = new Dimension(10, 1); @@ -245,7 +245,7 @@ topPanel.add(Box.createRigidArea(new Dimension(8,0))); // CurrentDir ComboBox - directoryComboBox = new JComboBox() { + directoryComboBox = new JComboBox<File>() { public Dimension getMinimumSize() { Dimension d = super.getMinimumSize(); d.width = 60; @@ -445,7 +445,7 @@ filterComboBoxModel = createFilterComboBoxModel(); fc.addPropertyChangeListener(filterComboBoxModel); - filterComboBox = new JComboBox(filterComboBoxModel); + filterComboBox = new JComboBox<FileFilter>(filterComboBoxModel); ftl.setLabelFor(filterComboBox); filterComboBox.setRenderer(createFilterComboBoxRenderer()); fileAndFilterPanel.add(filterComboBox); @@ -1032,7 +1032,7 @@ /** * Data model for a type-face selection combo-box. */ - protected class DirectoryComboBoxModel extends AbstractListModel implements ComboBoxModel { + protected class DirectoryComboBoxModel extends AbstractListModel<File> implements ComboBoxModel<File> { Vector<File> directories = new Vector<File>(); int[] depths = null; File selectedDirectory = null; @@ -1149,7 +1149,7 @@ return directories.size(); } - public Object getElementAt(int index) { + public File getElementAt(int index) { return directories.elementAt(index); } } @@ -1189,7 +1189,8 @@ /** * Data model for a type-face selection combo-box. */ - protected class FilterComboBoxModel extends AbstractListModel implements ComboBoxModel, PropertyChangeListener { + protected class FilterComboBoxModel extends AbstractListModel<FileFilter> implements ComboBoxModel<FileFilter>, + PropertyChangeListener { protected FileFilter[] filters; protected FilterComboBoxModel() { super(); @@ -1242,7 +1243,7 @@ } } - public Object getElementAt(int index) { + public FileFilter getElementAt(int index) { if(index > getSize() - 1) { // This shouldn't happen. Try to recover gracefully. return getFileChooser().getFileFilter();
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java Fri Aug 05 16:03:00 2011 -0700 @@ -81,19 +81,22 @@ else { Rectangle beginRect = getPathBounds(tree, getPathForRow (tree, beginRow)); - Rectangle testRect = beginRect; - int beginY = beginRect.y; - int maxY = beginY + visRect.height; + if (beginRect != null) { + Rectangle testRect = beginRect; + int beginY = beginRect.y; + int maxY = beginY + visRect.height; - for(int counter = beginRow + 1; counter <= endRow; counter++) { - testRect = getPathBounds(tree, - getPathForRow(tree, counter)); - if((testRect.y + testRect.height) > maxY) - counter = endRow; + for(int counter = beginRow + 1; counter <= endRow; counter++) { + testRect = getPathBounds(tree, + getPathForRow(tree, counter)); + if(testRect != null && (testRect.y + testRect.height) > maxY) { + counter = endRow; + } + } + tree.scrollRectToVisible(new Rectangle(visRect.x, beginY, 1, + testRect.y + testRect.height- + beginY)); } - tree.scrollRectToVisible(new Rectangle(visRect.x, beginY, 1, - testRect.y + testRect.height- - beginY)); } } }
--- a/src/share/classes/java/awt/ScrollPaneAdjustable.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/awt/ScrollPaneAdjustable.java Fri Aug 05 16:03:00 2011 -0700 @@ -24,6 +24,8 @@ */ package java.awt; +import sun.awt.AWTAccessor; + import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import java.awt.peer.ScrollPanePeer; @@ -156,6 +158,12 @@ if (!GraphicsEnvironment.isHeadless()) { initIDs(); } + AWTAccessor.setScrollPaneAdjustableAccessor(new AWTAccessor.ScrollPaneAdjustableAccessor() { + public void setTypedValue(final ScrollPaneAdjustable adj, + final int v, final int type) { + adj.setTypedValue(v, type); + } + }); } /**
--- a/src/share/classes/java/lang/invoke/AdapterMethodHandle.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/lang/invoke/AdapterMethodHandle.java Fri Aug 05 16:03:00 2011 -0700 @@ -247,10 +247,6 @@ MethodType needConversion = MethodType.methodType(needReturn, haveReturn); adjustReturn = MethodHandles.identity(needReturn).asType(needConversion); } - if (!canCollectArguments(adjustReturn.type(), target.type(), 0, false)) { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - throw new InternalError("NYI"); - } return makeCollectArguments(adjustReturn, target, 0, false); }
--- a/src/share/classes/java/lang/invoke/FilterGeneric.java Thu Aug 04 08:53:16 2011 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4500 +0,0 @@ -/* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import java.lang.reflect.*; -import static java.lang.invoke.MethodHandleStatics.*; -import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; - -/** - * These adapters apply arbitrary conversions to arguments - * on the way to a ultimate target. - * For simplicity, these are all generically typed. - * @author jrose - */ -class FilterGeneric { - // type for the incoming call (will be generic) - private final MethodType entryType; - // prototype adapters (clone and customize for each new target & conversion!) - private final Adapter[] adapters; - - /** Compute and cache information common to all filtering adapters - * with the given generic type - */ - FilterGeneric(MethodType entryType) { - this.entryType = entryType; - int tableSize = Kind.LIMIT.invokerIndex(1 + entryType.parameterCount()); - this.adapters = new Adapter[tableSize]; - } - - Adapter getAdapter(Kind kind, int pos) { - int index = kind.invokerIndex(pos); - Adapter ad = adapters[index]; - if (ad != null) return ad; - ad = findAdapter(entryType, kind, pos); - if (ad == null) - ad = buildAdapterFromBytecodes(entryType, kind, pos); - adapters[index] = ad; - return ad; - } - - static { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this class is deprecated - } - - Adapter makeInstance(Kind kind, int pos, MethodHandle filter, MethodHandle target) { - Adapter ad = getAdapter(kind, pos); - return ad.makeInstance(ad.prototypeEntryPoint(), filter, target); - } - - /** Build an adapter of the given generic type, which invokes filter - * on the selected incoming argument before passing it to the target. - * @param pos the argument to filter - * @param filter the function to call on the argument - * @param target the target to call with the modified argument list - * @return an adapter method handle - */ - public static MethodHandle makeArgumentFilter(int pos, MethodHandle filter, MethodHandle target) { - return make(Kind.value, pos, filter, target); - } - - /** Build an adapter of the given generic type, which invokes a combiner - * on a selected group of leading arguments. - * The result of the combiner is prepended before all those arguments. - * @param combiner the function to call on the selected leading arguments - * @param target the target to call with the modified argument list - * @return an adapter method handle - */ - public static MethodHandle makeArgumentFolder(MethodHandle combiner, MethodHandle target) { - int num = combiner.type().parameterCount(); - return make(Kind.fold, num, combiner, target); - } - - /** Build an adapter of the given generic type, which invokes a filter - * on the incoming arguments, reified as a group. - * The argument may be modified (by side effects in the filter). - * The arguments, possibly modified, are passed on to the target. - * @param filter the function to call on the arguments - * @param target the target to call with the possibly-modified argument list - * @return an adapter method handle - */ - public static MethodHandle makeFlyby(MethodHandle filter, MethodHandle target) { - return make(Kind.flyby, 0, filter, target); - } - - /** Build an adapter of the given generic type, which invokes a collector - * on the selected incoming argument and all following arguments. - * The result of the collector replaces all those arguments. - * @param collector the function to call on the selected trailing arguments - * @param target the target to call with the modified argument list - * @return an adapter method handle - */ - public static MethodHandle makeArgumentCollector(MethodHandle collector, MethodHandle target) { - int pos = target.type().parameterCount() - 1; - return make(Kind.collect, pos, collector, target); - } - - static MethodHandle make(Kind kind, int pos, MethodHandle filter, MethodHandle target) { - FilterGeneric fgen = of(kind, pos, filter.type(), target.type()); - return fgen.makeInstance(kind, pos, filter, target); - } - - /** Return the adapter information for this target and filter type. */ - static FilterGeneric of(Kind kind, int pos, MethodType filterType, MethodType targetType) { - MethodType entryType = entryType(kind, pos, filterType, targetType); - if (entryType.generic() != entryType) - throw newIllegalArgumentException("must be generic: "+entryType); - MethodTypeForm form = entryType.form(); - FilterGeneric filterGen = form.filterGeneric; - if (filterGen == null) - form.filterGeneric = filterGen = new FilterGeneric(entryType); - return filterGen; - } - - public String toString() { - return "FilterGeneric/"+entryType; - } - - static MethodType targetType(MethodType entryType, Kind kind, int pos, MethodType filterType) { - MethodType type = entryType; - switch (kind) { - case value: - case flyby: - break; // no change - case fold: - type = type.insertParameterTypes(0, filterType.returnType()); - break; - case collect: - type = type.dropParameterTypes(pos, type.parameterCount()); - type = type.insertParameterTypes(pos, filterType.returnType()); - break; - default: - throw new InternalError(); - } - return type; - } - - static MethodType entryType(Kind kind, int pos, MethodType filterType, MethodType targetType) { - MethodType type = targetType; - switch (kind) { - case value: - case flyby: - break; // no change - case fold: - type = type.dropParameterTypes(0, 1); - break; - case collect: - type = type.dropParameterTypes(pos, pos+1); - type = type.insertParameterTypes(pos, filterType.parameterList()); - break; - default: - throw new InternalError(); - } - return type; - } - - /* Create an adapter that handles spreading calls for the given type. */ - static Adapter findAdapter(MethodType entryType, Kind kind, int pos) { - int argc = entryType.parameterCount(); - String cname0 = "F"+argc; - String cname1 = "F"+argc+kind.key; - String[] cnames = { cname0, cname1 }; - String iname = kind.invokerName(pos); - // e.g., F5; invoke_C3 - for (String cname : cnames) { - Class<? extends Adapter> acls = Adapter.findSubClass(cname); - if (acls == null) continue; - // see if it has the required invoke method - MethodHandle entryPoint = null; - try { - entryPoint = IMPL_LOOKUP.findSpecial(acls, iname, entryType, acls); - } catch (ReflectiveOperationException ex) { - } - if (entryPoint == null) continue; - Constructor<? extends Adapter> ctor = null; - try { - ctor = acls.getDeclaredConstructor(MethodHandle.class); - } catch (NoSuchMethodException ex) { - } catch (SecurityException ex) { - } - if (ctor == null) continue; - try { - // Produce an instance configured as a prototype. - return ctor.newInstance(entryPoint); - } catch (IllegalArgumentException ex) { - } catch (InvocationTargetException wex) { - Throwable ex = wex.getTargetException(); - if (ex instanceof Error) throw (Error)ex; - if (ex instanceof RuntimeException) throw (RuntimeException)ex; - } catch (InstantiationException ex) { - } catch (IllegalAccessException ex) { - } - } - return null; - } - - static Adapter buildAdapterFromBytecodes(MethodType entryType, Kind kind, int pos) { - throw new UnsupportedOperationException("NYI"); - } - - /** - * This adapter takes some untyped arguments, and returns an untyped result. - * Internally, it applies the invoker to the target, which causes the - * objects to be unboxed; the result is a raw type in L/I/J/F/D. - * This result is passed to convert, which is responsible for - * converting the raw result into a boxed object. - * The invoker is kept separate from the target because it can be - * generated once per type erasure family, and reused across adapters. - */ - static abstract class Adapter extends BoundMethodHandle { - protected final MethodHandle filter; // transforms one or more arguments - protected final MethodHandle target; // ultimate target - - @Override - String debugString() { - return addTypeString(target, this); - } - - protected boolean isPrototype() { return target == null; } - protected Adapter(MethodHandle entryPoint) { - this(entryPoint, entryPoint, null); - assert(isPrototype()); - } - protected MethodHandle prototypeEntryPoint() { - if (!isPrototype()) throw new InternalError(); - return filter; - } - - protected Adapter(MethodHandle entryPoint, - MethodHandle filter, MethodHandle target) { - super(entryPoint); - this.filter = filter; - this.target = target; - } - - /** Make a copy of self, with new fields. */ - protected abstract Adapter makeInstance(MethodHandle entryPoint, - MethodHandle filter, MethodHandle target); - // { return new ThisType(entryPoint, filter, target); } - - static private final String CLASS_PREFIX; // "java.lang.invoke.FilterGeneric$" - static { - String aname = Adapter.class.getName(); - String sname = Adapter.class.getSimpleName(); - if (!aname.endsWith(sname)) throw new InternalError(); - CLASS_PREFIX = aname.substring(0, aname.length() - sname.length()); - } - /** Find a sibing class of Adapter. */ - static Class<? extends Adapter> findSubClass(String name) { - String cname = Adapter.CLASS_PREFIX + name; - try { - return Class.forName(cname).asSubclass(Adapter.class); - } catch (ClassNotFoundException ex) { - return null; - } catch (ClassCastException ex) { - return null; - } - } - } - - static enum Kind { - value('V'), // filter and replace Nth argument value - fold('F'), // fold first N arguments, prepend result - collect('C'), // collect last N arguments, replace with result - flyby('Y'), // reify entire argument list, filter, pass to target - LIMIT('?'); - static final int COUNT = LIMIT.ordinal(); - - final char key; - Kind(char key) { this.key = key; } - String invokerName(int pos) { return "invoke_"+key+""+pos; } - int invokerIndex(int pos) { return pos * COUNT + ordinal(); } - } - - /* generated classes follow this pattern: - static class F1X extends Adapter { - protected F1X(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F1X(MethodHandle e, MethodHandle f, MethodHandle t) - { super(e, f, t); } - protected F1X makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) - { return new F1X(e, f, t); } - protected Object invoke_V0(Object a0) { return target.invokeExact(filter.invokeExact(a0)); } - protected Object invoke_F0(Object a0) { return target.invokeExact(filter.invokeExact(), a0); } - protected Object invoke_F1(Object a0) { return target.invokeExact(filter.invokeExact(a0), a0); } - protected Object invoke_C0(Object a0) { return target.invokeExact(filter.invokeExact(a0)); } - protected Object invoke_C1(Object a0) { return target.invokeExact(a0, filter.invokeExact()); } - protected Object invoke_Y0(Object a0) { Object[] av = { a0 }; - filter.invokeExact(av); return target.invokeExact(av[0]); } - } - static class F2X extends Adapter { - protected F2X(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F2X(MethodHandle e, MethodHandle f, MethodHandle t) - { super(e, f, t); } - protected F2X makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) - { return new F2X(e, f, t); } - protected Object invoke_V0(Object a0, Object a1) { return target.invokeExact(filter.invokeExact(a0), a1); } - protected Object invoke_V1(Object a0, Object a1) { return target.invokeExact(a0, filter.invokeExact(a1)); } - protected Object invoke_F0(Object a0, Object a1) { return target.invokeExact(filter.invokeExact(), a0, a1); } - protected Object invoke_F1(Object a0, Object a1) { return target.invokeExact(filter.invokeExact(a0), a0, a1); } - protected Object invoke_F2(Object a0, Object a1) { return target.invokeExact(filter.invokeExact(a0, a1), a0, a1); } - protected Object invoke_C0(Object a0, Object a1) { return target.invokeExact(filter.invokeExact(a0, a1)); } - protected Object invoke_C1(Object a0, Object a1) { return target.invokeExact(a0, filter.invokeExact(a1)); } - protected Object invoke_C2(Object a0, Object a1) { return target.invokeExact(a0, a1, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1) { Object[] av = { a0, a1 }; - filter.invokeExact(av); return target.invokeExact(av[0], av[1]); } - } - // */ - - // This one is written by hand: - static class F0 extends Adapter { - protected F0(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F0(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F0 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F0(e, f, t); } - protected Object invoke_F0() throws Throwable { - return target.invokeExact(filter.invokeExact()); } - protected Object invoke_C0() throws Throwable { - return target.invokeExact(filter.invokeExact()); } - static final Object[] NO_ARGS = { }; - protected Object invoke_Y0() throws Throwable { - filter.invokeExact(NO_ARGS); // make the flyby - return target.invokeExact(); } - } - -/* - : SHELL; n=FilterGeneric; cp -p $n.java $n.java-; sed < $n.java- > $n.java+ -e '/{{*{{/,/}}*}}/w /tmp/genclasses.java' -e '/}}*}}/q'; (cd /tmp; javac -d . genclasses.java; java -ea -cp . genclasses | sed 's| *[/]/ *$||') >> $n.java+; echo '}' >> $n.java+; mv $n.java+ $n.java; mv $n.java- $n.java~ -//{{{ -import java.util.*; -class genclasses { - static String[][] TEMPLATES = { { - "@for@ N=1..20", - " //@each-cat@", - " static class @cat@ extends Adapter {", - " protected @cat@(MethodHandle entryPoint) { super(entryPoint); } // to build prototype", - " protected @cat@(MethodHandle e, MethodHandle f, MethodHandle t) {", - " super(e, f, t); }", - " protected @cat@ makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) {", - " return new @cat@(e, f, t); }", - " //@each-P@", - " protected Object invoke_V@P@(@Tvav@) throws Throwable {", - " return target.invokeExact(@a0_@@Psp@filter.invokeExact(a@P@)@_aN@); }", - " //@end-P@", - " //@each-P@", - " protected Object invoke_F@P@(@Tvav@) throws Throwable {", - " return target.invokeExact(filter.invokeExact(@a0@),", - " @av@); }", - " //@end-P@", - " protected Object invoke_F@N@(@Tvav@) throws Throwable {", - " return target.invokeExact(filter.invokeExact(@av@),", - " @av@); }", - " //@each-P@", - " protected Object invoke_C@P@(@Tvav@) throws Throwable {", - " return target.invokeExact(@a0_@filter.invokeExact(a@P@@_aN@)); }", - " //@end-P@", - " protected Object invoke_C@N@(@Tvav@) throws Throwable {", - " return target.invokeExact(@av@, filter.invokeExact()); }", - " protected Object invoke_Y0(@Tvav@) throws Throwable {", - " Object[] av = { @av@ };", - " filter.invokeExact(av); // make the flyby", - " return target.invokeExact(@av[i]@); }", - " }", - } }; - static final String NEWLINE_INDENT = " //\n "; - enum VAR { - cat, N, P, Tvav, av, a0, a0_, _aN, Psp, av_i_; - public final String pattern = "@"+toString().replace('_','.')+"@"; - public String binding = toString(); - static void makeBindings(boolean topLevel, int inargs, int pos) { - assert(-1 <= pos && pos < inargs); - VAR.cat.binding = "F"+inargs; - VAR.N.binding = String.valueOf(inargs); // incoming arg count - VAR.P.binding = String.valueOf(pos); // selected arg position - String[] av = new String[inargs]; - String[] Tvav = new String[inargs]; - String[] av_i_ = new String[inargs]; - for (int i = 0; i < inargs; i++) { - av[i] = arg(i); - av_i_[i] = "av["+i+"]"; - String spc = ""; - if (i > 0 && i % 4 == 0) spc = NEWLINE_INDENT+(pos>9?" ":"")+" "; - Tvav[i] = spc+param("Object", av[i]); - } - VAR.av.binding = comma(av); - VAR.av_i_.binding = comma(av_i_); - VAR.Tvav.binding = comma(Tvav); - if (pos >= 0) { - VAR.Psp.binding = (pos > 0 && pos % 10 == 0) ? NEWLINE_INDENT : ""; - String[] a0 = new String[pos]; - String[] aN = new String[inargs - (pos+1)]; - for (int i = 0; i < pos; i++) { - String spc = ""; - if (i > 0 && i % 10 == 0) spc = NEWLINE_INDENT; - a0[i] = spc+av[i]; - } - VAR.a0.binding = comma(a0); - VAR.a0_.binding = comma(a0, ", "); - for (int i = pos+1; i < inargs; i++) { - String spc = ""; - if (i > 0 && i % 10 == 0) spc = NEWLINE_INDENT; - aN[i - (pos+1)] = spc+av[i]; - } - VAR._aN.binding = comma(", ", aN); - } - } - static String arg(int i) { return "a"+i; } - static String param(String t, String a) { return t+" "+a; } - static String comma(String[] v) { return comma(v, ""); } - static String comma(String[] v, String sep) { return comma("", v, sep); } - static String comma(String sep, String[] v) { return comma(sep, v, ""); } - static String comma(String sep1, String[] v, String sep2) { - if (v.length == 0) return ""; - String res = v[0]; - for (int i = 1; i < v.length; i++) res += ", "+v[i]; - return sep1 + res + sep2; - } - static String transform(String string) { - for (VAR var : values()) - string = string.replaceAll(var.pattern, var.binding); - return string; - } - } - static String[] stringsIn(String[] strings, int beg, int end) { - return Arrays.copyOfRange(strings, beg, Math.min(end, strings.length)); - } - static String[] stringsBefore(String[] strings, int pos) { - return stringsIn(strings, 0, pos); - } - static String[] stringsAfter(String[] strings, int pos) { - return stringsIn(strings, pos, strings.length); - } - static int indexAfter(String[] strings, int pos, String tag) { - return Math.min(indexBefore(strings, pos, tag) + 1, strings.length); - } - static int indexBefore(String[] strings, int pos, String tag) { - for (int i = pos, end = strings.length; ; i++) { - if (i == end || strings[i].endsWith(tag)) return i; - } - } - static int MIN_ARITY, MAX_ARITY; - public static void main(String... av) { - for (String[] template : TEMPLATES) { - int forLinesLimit = indexBefore(template, 0, "@each-cat@"); - String[] forLines = stringsBefore(template, forLinesLimit); - template = stringsAfter(template, forLinesLimit); - for (String forLine : forLines) - expandTemplate(forLine, template); - } - } - static void expandTemplate(String forLine, String[] template) { - String[] params = forLine.split("[^0-9]+"); - if (params[0].length() == 0) params = stringsAfter(params, 1); - System.out.println("//params="+Arrays.asList(params)); - int pcur = 0; - MIN_ARITY = Integer.valueOf(params[pcur++]); - MAX_ARITY = Integer.valueOf(params[pcur++]); - if (pcur != params.length) throw new RuntimeException("bad extra param: "+forLine); - for (int inargs = MIN_ARITY; inargs <= MAX_ARITY; inargs++) { - expandTemplate(template, true, inargs, -1); - } - } - static void expandTemplate(String[] template, boolean topLevel, int inargs, int pos) { - VAR.makeBindings(topLevel, inargs, pos); - for (int i = 0; i < template.length; i++) { - String line = template[i]; - if (line.endsWith("@each-cat@")) { - // ignore - } else if (line.endsWith("@each-P@")) { - int blockEnd = indexAfter(template, i, "@end-P@"); - String[] block = stringsIn(template, i+1, blockEnd-1); - for (int pos1 = Math.max(0,pos); pos1 < inargs; pos1++) - expandTemplate(block, false, inargs, pos1); - VAR.makeBindings(topLevel, inargs, pos); - i = blockEnd-1; continue; - } else { - System.out.println(VAR.transform(line)); - } - } - } -} -//}}} */ -//params=[1, 20] - static class F1 extends Adapter { - protected F1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F1(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F1 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F1(e, f, t); } - protected Object invoke_V0(Object a0) throws Throwable { - return target.invokeExact(filter.invokeExact(a0)); } - protected Object invoke_F0(Object a0) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0); } - protected Object invoke_F1(Object a0) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0); } - protected Object invoke_C0(Object a0) throws Throwable { - return target.invokeExact(filter.invokeExact(a0)); } - protected Object invoke_C1(Object a0) throws Throwable { - return target.invokeExact(a0, filter.invokeExact()); } - protected Object invoke_Y0(Object a0) throws Throwable { - Object[] av = { a0 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0]); } - } - static class F2 extends Adapter { - protected F2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F2(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F2 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F2(e, f, t); } - protected Object invoke_V0(Object a0, Object a1) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1); } - protected Object invoke_V1(Object a0, Object a1) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1)); } - protected Object invoke_F0(Object a0, Object a1) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1); } - protected Object invoke_F1(Object a0, Object a1) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1); } - protected Object invoke_F2(Object a0, Object a1) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1); } - protected Object invoke_C0(Object a0, Object a1) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1)); } - protected Object invoke_C1(Object a0, Object a1) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1)); } - protected Object invoke_C2(Object a0, Object a1) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1) throws Throwable { - Object[] av = { a0, a1 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1]); } - } - static class F3 extends Adapter { - protected F3(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F3(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F3 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F3(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2); } - protected Object invoke_V1(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2); } - protected Object invoke_V2(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2)); } - protected Object invoke_F0(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2); } - protected Object invoke_F1(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2); } - protected Object invoke_F2(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2); } - protected Object invoke_F3(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2); } - protected Object invoke_C0(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2)); } - protected Object invoke_C1(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2)); } - protected Object invoke_C2(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2)); } - protected Object invoke_C3(Object a0, Object a1, Object a2) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2) throws Throwable { - Object[] av = { a0, a1, a2 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2]); } - } - static class F4 extends Adapter { - protected F4(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F4(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F4 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F4(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3) throws Throwable { - Object[] av = { a0, a1, a2, a3 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3]); } - } - static class F5 extends Adapter { - protected F5(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F5(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F5 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F5(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4]); } - } - static class F6 extends Adapter { - protected F6(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F6(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F6 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F6(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5]); } - } - static class F7 extends Adapter { - protected F7(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F7(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F7 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F7(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6]); } - } - static class F8 extends Adapter { - protected F8(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F8(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F8 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F8(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7]); } - } - static class F9 extends Adapter { - protected F9(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F9(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F9 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F9(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8]); } - } - static class F10 extends Adapter { - protected F10(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F10(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F10 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F10(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9]); } - } - static class F11 extends Adapter { - protected F11(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F11(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F11 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F11(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10]); } - } - static class F12 extends Adapter { - protected F12(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F12(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F12 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F12(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11]); } - } - static class F13 extends Adapter { - protected F13(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F13(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F13 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F13(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12]); } - } - static class F14 extends Adapter { - protected F14(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F14(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F14 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F14(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13]); } - } - static class F15 extends Adapter { - protected F15(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F15(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F15 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F15(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13, a14); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13, a14); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13, a14); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13, a14); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13, a14); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13), a14); } - protected Object invoke_V14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_F15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13, a14)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13, a14)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13, a14)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13, a14)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13, a14)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14)); } - protected Object invoke_C15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14]); } - } - static class F16 extends Adapter { - protected F16(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F16(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F16 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F16(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13, a14, a15); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13, a14, a15); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13, a14, a15); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13, a14, a15); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13), a14, a15); } - protected Object invoke_V14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14), a15); } - protected Object invoke_V15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_F16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13, a14, a15)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13, a14, a15)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13, a14, a15)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13, a14, a15)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14, a15)); } - protected Object invoke_C15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15)); } - protected Object invoke_C16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15]); } - } - static class F17 extends Adapter { - protected F17(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F17(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F17 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F17(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13, a14, a15, a16); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13, a14, a15, a16); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13, a14, a15, a16); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13), a14, a15, a16); } - protected Object invoke_V14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14), a15, a16); } - protected Object invoke_V15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15), a16); } - protected Object invoke_V16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_F17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13, a14, a15, a16)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13, a14, a15, a16)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13, a14, a15, a16)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14, a15, a16)); } - protected Object invoke_C15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15, a16)); } - protected Object invoke_C16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16)); } - protected Object invoke_C17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16]); } - } - static class F18 extends Adapter { - protected F18(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F18(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F18 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F18(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13, a14, a15, a16, a17); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13, a14, a15, a16, a17); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13), a14, a15, a16, a17); } - protected Object invoke_V14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14), a15, a16, a17); } - protected Object invoke_V15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15), a16, a17); } - protected Object invoke_V16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16), a17); } - protected Object invoke_V17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, filter.invokeExact(a17)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_F18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13, a14, a15, a16, a17)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13, a14, a15, a16, a17)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14, a15, a16, a17)); } - protected Object invoke_C15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15, a16, a17)); } - protected Object invoke_C16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16, a17)); } - protected Object invoke_C17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, filter.invokeExact(a17)); } - protected Object invoke_C18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17]); } - } - static class F19 extends Adapter { - protected F19(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F19(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F19 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F19(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13, a14, a15, a16, a17, a18); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13), a14, a15, a16, a17, a18); } - protected Object invoke_V14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14), a15, a16, a17, a18); } - protected Object invoke_V15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15), a16, a17, a18); } - protected Object invoke_V16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16), a17, a18); } - protected Object invoke_V17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, filter.invokeExact(a17), a18); } - protected Object invoke_V18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, filter.invokeExact(a18)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_F19(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13, a14, a15, a16, a17, a18)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14, a15, a16, a17, a18)); } - protected Object invoke_C15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15, a16, a17, a18)); } - protected Object invoke_C16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16, a17, a18)); } - protected Object invoke_C17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, filter.invokeExact(a17, a18)); } - protected Object invoke_C18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, filter.invokeExact(a18)); } - protected Object invoke_C19(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17], av[18]); } - } - static class F20 extends Adapter { - protected F20(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected F20(MethodHandle e, MethodHandle f, MethodHandle t) { - super(e, f, t); } - protected F20 makeInstance(MethodHandle e, MethodHandle f, MethodHandle t) { - return new F20(e, f, t); } - protected Object invoke_V0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1), a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2), a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3), a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4), a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5), a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6), a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7), a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8), a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9), - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - filter.invokeExact(a10), a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11), a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12), a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_V13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13), a14, a15, a16, a17, a18, a19); } - protected Object invoke_V14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14), a15, a16, a17, a18, a19); } - protected Object invoke_V15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15), a16, a17, a18, a19); } - protected Object invoke_V16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16), a17, a18, a19); } - protected Object invoke_V17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, filter.invokeExact(a17), a18, a19); } - protected Object invoke_V18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, filter.invokeExact(a18), a19); } - protected Object invoke_V19(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, filter.invokeExact(a19)); } - protected Object invoke_F0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F19(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_F20(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19), - a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19); } - protected Object invoke_C0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(filter.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C1(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, filter.invokeExact(a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C2(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, filter.invokeExact(a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C3(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, filter.invokeExact(a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C4(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, filter.invokeExact(a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C5(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, filter.invokeExact(a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C6(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, filter.invokeExact(a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C7(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, filter.invokeExact(a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C8(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, filter.invokeExact(a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C9(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, filter.invokeExact(a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C10(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, filter.invokeExact(a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C11(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, filter.invokeExact(a11, a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C12(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, filter.invokeExact(a12, a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C13(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, filter.invokeExact(a13, a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C14(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, filter.invokeExact(a14, a15, a16, a17, a18, a19)); } - protected Object invoke_C15(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, filter.invokeExact(a15, a16, a17, a18, a19)); } - protected Object invoke_C16(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, filter.invokeExact(a16, a17, a18, a19)); } - protected Object invoke_C17(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, filter.invokeExact(a17, a18, a19)); } - protected Object invoke_C18(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, filter.invokeExact(a18, a19)); } - protected Object invoke_C19(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, - a10, a11, a12, a13, a14, a15, a16, a17, a18, filter.invokeExact(a19)); } - protected Object invoke_C20(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, filter.invokeExact()); } - protected Object invoke_Y0(Object a0, Object a1, Object a2, Object a3, - Object a4, Object a5, Object a6, Object a7, - Object a8, Object a9, Object a10, Object a11, - Object a12, Object a13, Object a14, Object a15, - Object a16, Object a17, Object a18, Object a19) throws Throwable { - Object[] av = { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 }; - filter.invokeExact(av); // make the flyby - return target.invokeExact(av[0], av[1], av[2], av[3], av[4], av[5], av[6], av[7], av[8], av[9], av[10], av[11], av[12], av[13], av[14], av[15], av[16], av[17], av[18], av[19]); } - } -}
--- a/src/share/classes/java/lang/invoke/FilterOneArgument.java Thu Aug 04 08:53:16 2011 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import static java.lang.invoke.MethodHandleStatics.*; -import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; - -/** - * Unary function composition, useful for many small plumbing jobs. - * The invoke method takes a single reference argument, and returns a reference - * Internally, it first calls the {@code filter} method on the argument, - * Making up the difference between the raw method type and the - * final method type is the responsibility of a JVM-level adapter. - * @author jrose - */ -class FilterOneArgument extends BoundMethodHandle { - protected final MethodHandle filter; // Object -> Object - protected final MethodHandle target; // Object -> Object - - @Override - String debugString() { - return target.toString(); - } - - protected Object invoke(Object argument) throws Throwable { - Object filteredArgument = filter.invokeExact(argument); - return target.invokeExact(filteredArgument); - } - - private static final MethodHandle INVOKE; - static { - try { - INVOKE = - IMPL_LOOKUP.findVirtual(FilterOneArgument.class, "invoke", - MethodType.genericMethodType(1)); - } catch (ReflectiveOperationException ex) { - throw uncaughtException(ex); - } - } - - protected FilterOneArgument(MethodHandle filter, MethodHandle target) { - super(INVOKE); - this.filter = filter; - this.target = target; - } - - static { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this class is deprecated - } - - public static MethodHandle make(MethodHandle filter, MethodHandle target) { - if (filter == null) return target; - if (target == null) return filter; - return new FilterOneArgument(filter, target); - } - -// MethodHandle make(MethodHandle filter1, MethodHandle filter2, MethodHandle target) { -// MethodHandle filter = make(filter1, filter2); -// return make(filter, target); -// } -}
--- a/src/share/classes/java/lang/invoke/FromGeneric.java Thu Aug 04 08:53:16 2011 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,633 +0,0 @@ -/* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import sun.invoke.util.ValueConversions; -import sun.invoke.util.Wrapper; -import java.lang.reflect.*; -import static java.lang.invoke.MethodHandleStatics.*; -import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; - -/** - * Adapters which mediate between incoming calls which are generic - * and outgoing calls which are not. Any call can be represented generically - * boxing up its arguments, and (on return) unboxing the return value. - * <p> - * A call is "generic" (in MethodHandle terms) if its MethodType features - * only Object arguments. A non-generic call therefore features - * primitives and/or reference types other than Object. - * An adapter has types for its incoming and outgoing calls. - * The incoming call type is simply determined by the adapter's type - * (the MethodType it presents to callers). The outgoing call type - * is determined by the adapter's target (a MethodHandle that the adapter - * either binds internally or else takes as a leading argument). - * (To stretch the term, adapter-like method handles may have multiple - * targets or be polymorphic across multiple call types.) - * @author jrose - */ -class FromGeneric { - // type for the outgoing call (may have primitives, etc.) - private final MethodType targetType; - // type of the outgoing call internal to the adapter - private final MethodType internalType; - // prototype adapter (clone and customize for each new target!) - private final Adapter adapter; - // entry point for adapter (Adapter mh, a...) => ... - private final MethodHandle entryPoint; - // unboxing invoker of type (MH, Object**N) => raw return value - // it makes up the difference of internalType => targetType - private final MethodHandle unboxingInvoker; - // conversion which boxes a the target's raw return value - private final MethodHandle returnConversion; - - /** Compute and cache information common to all unboxing adapters - * that can call out to targets of the erasure-family of the given erased type. - */ - private FromGeneric(MethodType targetType) { - this.targetType = targetType; - MethodType internalType0; - // the target invoker will generally need casts on reference arguments - Adapter ad = findAdapter(internalType0 = targetType.erase()); - if (ad != null) { - // Immediate hit to exactly the adapter we want, - // with no monkeying around with primitive types. - this.internalType = internalType0; - this.adapter = ad; - this.entryPoint = ad.prototypeEntryPoint(); - this.returnConversion = computeReturnConversion(targetType, internalType0); - this.unboxingInvoker = computeUnboxingInvoker(targetType, internalType0); - return; - } - - // outgoing primitive arguments will be wrapped; unwrap them - MethodType primsAsObj = targetType.form().primArgsAsBoxes(); - MethodType objArgsRawRet = primsAsObj.form().primsAsInts(); - if (objArgsRawRet != targetType) - ad = findAdapter(internalType0 = objArgsRawRet); - if (ad == null) { - ad = buildAdapterFromBytecodes(internalType0 = targetType); - } - this.internalType = internalType0; - this.adapter = ad; - MethodType tepType = targetType.insertParameterTypes(0, adapter.getClass()); - this.entryPoint = ad.prototypeEntryPoint(); - this.returnConversion = computeReturnConversion(targetType, internalType0); - this.unboxingInvoker = computeUnboxingInvoker(targetType, internalType0); - } - - static { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this class is deprecated - } - - /** - * The typed target will be called according to targetType. - * The adapter code will in fact see the raw result from internalType, - * and must box it into an object. Produce a converter for this. - */ - private static MethodHandle computeReturnConversion( - MethodType targetType, MethodType internalType) { - Class<?> tret = targetType.returnType(); - Class<?> iret = internalType.returnType(); - Wrapper wrap = Wrapper.forBasicType(tret); - if (!iret.isPrimitive()) { - assert(iret == Object.class); - return ValueConversions.identity(); - } else if (wrap.primitiveType() == iret) { - return ValueConversions.box(wrap); - } else { - assert(tret == double.class ? iret == long.class : iret == int.class); - return ValueConversions.boxRaw(wrap); - } - } - - /** - * The typed target will need an exact invocation point; provide it here. - * The adapter will possibly need to make a slightly different call, - * so adapt the invoker. This way, the logic for making up the - * difference between what the adapter can call and what the target - * needs can be cached once per type. - */ - private static MethodHandle computeUnboxingInvoker( - MethodType targetType, MethodType internalType) { - // All the adapters we have here have reference-untyped internal calls. - assert(internalType == internalType.erase()); - MethodHandle invoker = targetType.invokers().exactInvoker(); - // cast all narrow reference types, unbox all primitive arguments: - MethodType fixArgsType = internalType.changeReturnType(targetType.returnType()); - MethodHandle fixArgs = MethodHandleImpl.convertArguments( - invoker, Invokers.invokerType(fixArgsType), - invoker.type(), 0); - if (fixArgs == null) - throw new InternalError("bad fixArgs"); - // reinterpret the calling sequence as raw: - MethodHandle retyper = AdapterMethodHandle.makeRetypeRaw( - Invokers.invokerType(internalType), fixArgs); - if (retyper == null) - throw new InternalError("bad retyper"); - return retyper; - } - - Adapter makeInstance(MethodHandle typedTarget) { - MethodType type = typedTarget.type(); - if (type == targetType) { - return adapter.makeInstance(entryPoint, unboxingInvoker, returnConversion, typedTarget); - } - // my erased-type is not exactly the same as the desired type - assert(type.erase() == targetType); // else we are busted - MethodHandle invoker = computeUnboxingInvoker(type, internalType); - return adapter.makeInstance(entryPoint, invoker, returnConversion, typedTarget); - } - - /** Build an adapter of the given generic type, which invokes typedTarget - * on the incoming arguments, after unboxing as necessary. - * The return value is boxed if necessary. - * @param typedTarget the target - * @return an adapter method handle - */ - public static MethodHandle make(MethodHandle typedTarget) { - MethodType type = typedTarget.type(); - if (type == type.generic()) return typedTarget; - return FromGeneric.of(type).makeInstance(typedTarget); - } - - /** Return the adapter information for this type's erasure. */ - static FromGeneric of(MethodType type) { - MethodTypeForm form = type.form(); - FromGeneric fromGen = form.fromGeneric; - if (fromGen == null) - form.fromGeneric = fromGen = new FromGeneric(form.erasedType()); - return fromGen; - } - - public String toString() { - return "FromGeneric"+targetType; - } - - /* Create an adapter that handles spreading calls for the given type. */ - static Adapter findAdapter(MethodType internalType) { - MethodType entryType = internalType.generic(); - MethodTypeForm form = internalType.form(); - Class<?> rtype = internalType.returnType(); - int argc = form.parameterCount(); - int lac = form.longPrimitiveParameterCount(); - int iac = form.primitiveParameterCount() - lac; - String intsAndLongs = (iac > 0 ? "I"+iac : "")+(lac > 0 ? "J"+lac : ""); - String rawReturn = String.valueOf(Wrapper.forPrimitiveType(rtype).basicTypeChar()); - String cname0 = rawReturn + argc; - String cname1 = "A" + argc; - String[] cnames = { cname0+intsAndLongs, cname0, cname1+intsAndLongs, cname1 }; - String iname = "invoke_"+cname0+intsAndLongs; - // e.g., D5I2, D5, L5I2, L5; invoke_D5 - for (String cname : cnames) { - Class<? extends Adapter> acls = Adapter.findSubClass(cname); - if (acls == null) continue; - // see if it has the required invoke method - MethodHandle entryPoint = null; - try { - entryPoint = IMPL_LOOKUP.findSpecial(acls, iname, entryType, acls); - } catch (ReflectiveOperationException ex) { - } - if (entryPoint == null) continue; - Constructor<? extends Adapter> ctor = null; - try { - ctor = acls.getDeclaredConstructor(MethodHandle.class); - } catch (NoSuchMethodException ex) { - } catch (SecurityException ex) { - } - if (ctor == null) continue; - try { - // Produce an instance configured as a prototype. - return ctor.newInstance(entryPoint); - } catch (IllegalArgumentException ex) { - } catch (InvocationTargetException wex) { - Throwable ex = wex.getTargetException(); - if (ex instanceof Error) throw (Error)ex; - if (ex instanceof RuntimeException) throw (RuntimeException)ex; - } catch (InstantiationException ex) { - } catch (IllegalAccessException ex) { - } - } - return null; - } - - static Adapter buildAdapterFromBytecodes(MethodType internalType) { - throw new UnsupportedOperationException("NYI "+internalType); - } - - /** - * This adapter takes some untyped arguments, and returns an untyped result. - * Internally, it applies the invoker to the target, which causes the - * objects to be unboxed; the result is a raw type in L/I/J/F/D. - * This result is passed to convert, which is responsible for - * converting the raw result into a boxed object. - * The invoker is kept separate from the target because it can be - * generated once per type erasure family, and reused across adapters. - */ - static abstract class Adapter extends BoundMethodHandle { - /* - * class X<<R,int N>> extends Adapter { - * (MH, Object**N)=>raw(R) invoker; - * (any**N)=>R target; - * raw(R)=>Object convert; - * Object invoke(Object**N a) = convert(invoker(target, a...)) - * } - */ - protected final MethodHandle invoker; // (MH, Object**N) => raw(R) - protected final MethodHandle convert; // raw(R) => Object - protected final MethodHandle target; // (any**N) => R - - @Override - String debugString() { - return addTypeString(target, this); - } - - protected boolean isPrototype() { return target == null; } - protected Adapter(MethodHandle entryPoint) { - this(entryPoint, null, entryPoint, null); - assert(isPrototype()); - } - protected MethodHandle prototypeEntryPoint() { - if (!isPrototype()) throw new InternalError(); - return convert; - } - - protected Adapter(MethodHandle entryPoint, - MethodHandle invoker, MethodHandle convert, MethodHandle target) { - super(entryPoint); - this.invoker = invoker; - this.convert = convert; - this.target = target; - } - - /** Make a copy of self, with new fields. */ - protected abstract Adapter makeInstance(MethodHandle entryPoint, - MethodHandle invoker, MethodHandle convert, MethodHandle target); - // { return new ThisType(entryPoint, convert, target); } - - /// Conversions on the value returned from the target. - protected Object convert_L(Object result) throws Throwable { return convert.invokeExact(result); } - protected Object convert_I(int result) throws Throwable { return convert.invokeExact(result); } - protected Object convert_J(long result) throws Throwable { return convert.invokeExact(result); } - protected Object convert_F(float result) throws Throwable { return convert.invokeExact(result); } - protected Object convert_D(double result) throws Throwable { return convert.invokeExact(result); } - - static private final String CLASS_PREFIX; // "java.lang.invoke.FromGeneric$" - static { - String aname = Adapter.class.getName(); - String sname = Adapter.class.getSimpleName(); - if (!aname.endsWith(sname)) throw new InternalError(); - CLASS_PREFIX = aname.substring(0, aname.length() - sname.length()); - } - /** Find a sibing class of Adapter. */ - static Class<? extends Adapter> findSubClass(String name) { - String cname = Adapter.CLASS_PREFIX + name; - try { - return Class.forName(cname).asSubclass(Adapter.class); - } catch (ClassNotFoundException ex) { - return null; - } catch (ClassCastException ex) { - return null; - } - } - } - - /* generated classes follow this pattern: - static class xA2 extends Adapter { - protected xA2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected xA2(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected xA2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new xA2(e, i, c, t); } - protected Object invoke_L2(Object a0, Object a1) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1)); } - protected Object invoke_I2(Object a0, Object a1) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1)); } - protected Object invoke_J2(Object a0, Object a1) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1)); } - protected Object invoke_F2(Object a0, Object a1) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1)); } - protected Object invoke_D2(Object a0, Object a1) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1)); } - } - // */ - -/* -: SHELL; n=FromGeneric; cp -p $n.java $n.java-; sed < $n.java- > $n.java+ -e '/{{*{{/,/}}*}}/w /tmp/genclasses.java' -e '/}}*}}/q'; (cd /tmp; javac -d . genclasses.java; java -cp . genclasses) >> $n.java+; echo '}' >> $n.java+; mv $n.java+ $n.java; mv $n.java- $n.java~ -//{{{ -import java.util.*; -class genclasses { - static String[] TYPES = { "Object", "int ", "long ", "float ", "double" }; - static String[] WRAPS = { " ", "(Integer)", "(Long) ", "(Float) ", "(Double) " }; - static String[] TCHARS = { "L", "I", "J", "F", "D", "A" }; - static String[][] TEMPLATES = { { - "@for@ arity=0..10 rcat<=4 nrefs<=99 nints=0 nlongs=0", - " //@each-cat@", - " static class @cat@ extends Adapter {", - " protected @cat@(MethodHandle entryPoint) { super(entryPoint); } // to build prototype", - " protected @cat@(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)", - " { super(e, i, c, t); }", - " protected @cat@ makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t)", - " { return new @cat@(e, i, c, t); }", - " //@each-R@", - " protected Object invoke_@catN@(@Tvav@) throws Throwable { return convert_@Rc@((@R@)@W@invoker.invokeExact(target@av@)); }", - " //@end-R@", - " }", - } }; - static final String NEWLINE_INDENT = "\n "; - enum VAR { - cat, catN, R, Rc, W, av, Tvav, Ovav; - public final String pattern = "@"+toString().replace('_','.')+"@"; - public String binding; - static void makeBindings(boolean topLevel, int rcat, int nrefs, int nints, int nlongs) { - int nargs = nrefs + nints + nlongs; - if (topLevel) - VAR.cat.binding = catstr(ALL_RETURN_TYPES ? TYPES.length : rcat, nrefs, nints, nlongs); - VAR.catN.binding = catstr(rcat, nrefs, nints, nlongs); - VAR.R.binding = TYPES[rcat]; - VAR.Rc.binding = TCHARS[rcat]; - VAR.W.binding = WRAPS[rcat]; - String[] Tv = new String[nargs]; - String[] av = new String[nargs]; - String[] Tvav = new String[nargs]; - String[] Ovav = new String[nargs]; - for (int i = 0; i < nargs; i++) { - int tcat = (i < nrefs) ? 0 : (i < nrefs + nints) ? 1 : 2; - Tv[i] = TYPES[tcat]; - av[i] = arg(i); - Tvav[i] = param(Tv[i], av[i]); - Ovav[i] = param("Object", av[i]); - } - VAR.av.binding = comma(", ", av); - VAR.Tvav.binding = comma(Tvav); - VAR.Ovav.binding = comma(Ovav); - } - static String arg(int i) { return "a"+i; } - static String param(String t, String a) { return t+" "+a; } - static String comma(String[] v) { return comma("", v); } - static String comma(String sep, String[] v) { - if (v.length == 0) return ""; - String res = sep+v[0]; - for (int i = 1; i < v.length; i++) res += ", "+v[i]; - return res; - } - static String transform(String string) { - for (VAR var : values()) - string = string.replaceAll(var.pattern, var.binding); - return string; - } - } - static String[] stringsIn(String[] strings, int beg, int end) { - return Arrays.copyOfRange(strings, beg, Math.min(end, strings.length)); - } - static String[] stringsBefore(String[] strings, int pos) { - return stringsIn(strings, 0, pos); - } - static String[] stringsAfter(String[] strings, int pos) { - return stringsIn(strings, pos, strings.length); - } - static int indexAfter(String[] strings, int pos, String tag) { - return Math.min(indexBefore(strings, pos, tag) + 1, strings.length); - } - static int indexBefore(String[] strings, int pos, String tag) { - for (int i = pos, end = strings.length; ; i++) { - if (i == end || strings[i].endsWith(tag)) return i; - } - } - static int MIN_ARITY, MAX_ARITY, MAX_RCAT, MAX_REFS, MAX_INTS, MAX_LONGS; - static boolean ALL_ARG_TYPES, ALL_RETURN_TYPES; - static HashSet<String> done = new HashSet<String>(); - public static void main(String... av) { - for (String[] template : TEMPLATES) { - int forLinesLimit = indexBefore(template, 0, "@each-cat@"); - String[] forLines = stringsBefore(template, forLinesLimit); - template = stringsAfter(template, forLinesLimit); - for (String forLine : forLines) - expandTemplate(forLine, template); - } - } - static void expandTemplate(String forLine, String[] template) { - String[] params = forLine.split("[^0-9]+"); - if (params[0].length() == 0) params = stringsAfter(params, 1); - System.out.println("//params="+Arrays.asList(params)); - int pcur = 0; - MIN_ARITY = Integer.valueOf(params[pcur++]); - MAX_ARITY = Integer.valueOf(params[pcur++]); - MAX_RCAT = Integer.valueOf(params[pcur++]); - MAX_REFS = Integer.valueOf(params[pcur++]); - MAX_INTS = Integer.valueOf(params[pcur++]); - MAX_LONGS = Integer.valueOf(params[pcur++]); - if (pcur != params.length) throw new RuntimeException("bad extra param: "+forLine); - if (MAX_RCAT >= TYPES.length) MAX_RCAT = TYPES.length - 1; - ALL_ARG_TYPES = (indexBefore(template, 0, "@each-Tv@") < template.length); - ALL_RETURN_TYPES = (indexBefore(template, 0, "@each-R@") < template.length); - for (int nargs = MIN_ARITY; nargs <= MAX_ARITY; nargs++) { - for (int rcat = 0; rcat <= MAX_RCAT; rcat++) { - expandTemplate(template, true, rcat, nargs, 0, 0); - if (ALL_ARG_TYPES) break; - expandTemplateForPrims(template, true, rcat, nargs, 1, 1); - if (ALL_RETURN_TYPES) break; - } - } - } - static String catstr(int rcat, int nrefs, int nints, int nlongs) { - int nargs = nrefs + nints + nlongs; - String cat = TCHARS[rcat] + nargs; - if (!ALL_ARG_TYPES) cat += (nints==0?"":"I"+nints)+(nlongs==0?"":"J"+nlongs); - return cat; - } - static void expandTemplateForPrims(String[] template, boolean topLevel, int rcat, int nargs, int minints, int minlongs) { - for (int isLong = 0; isLong <= 1; isLong++) { - for (int nprims = 1; nprims <= nargs; nprims++) { - int nrefs = nargs - nprims; - int nints = ((1-isLong) * nprims); - int nlongs = (isLong * nprims); - expandTemplate(template, topLevel, rcat, nrefs, nints, nlongs); - } - } - } - static void expandTemplate(String[] template, boolean topLevel, - int rcat, int nrefs, int nints, int nlongs) { - int nargs = nrefs + nints + nlongs; - if (nrefs > MAX_REFS || nints > MAX_INTS || nlongs > MAX_LONGS) return; - VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs); - if (topLevel && !done.add(VAR.cat.binding)) { - System.out.println(" //repeat "+VAR.cat.binding); - return; - } - for (int i = 0; i < template.length; i++) { - String line = template[i]; - if (line.endsWith("@each-cat@")) { - // ignore - } else if (line.endsWith("@each-R@")) { - int blockEnd = indexAfter(template, i, "@end-R@"); - String[] block = stringsIn(template, i+1, blockEnd-1); - for (int rcat1 = rcat; rcat1 <= MAX_RCAT; rcat1++) - expandTemplate(block, false, rcat1, nrefs, nints, nlongs); - VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs); - i = blockEnd-1; continue; - } else if (line.endsWith("@each-Tv@")) { - int blockEnd = indexAfter(template, i, "@end-Tv@"); - String[] block = stringsIn(template, i+1, blockEnd-1); - expandTemplate(block, false, rcat, nrefs, nints, nlongs); - expandTemplateForPrims(block, false, rcat, nargs, nints+1, nlongs+1); - VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs); - i = blockEnd-1; continue; - } else { - System.out.println(VAR.transform(line)); - } - } - } -} -//}}} */ -//params=[0, 10, 4, 99, 0, 0] - static class A0 extends Adapter { - protected A0(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A0(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A0(e, i, c, t); } - protected Object invoke_L0() throws Throwable { return convert_L((Object)invoker.invokeExact(target)); } - protected Object invoke_I0() throws Throwable { return convert_I((int) invoker.invokeExact(target)); } - protected Object invoke_J0() throws Throwable { return convert_J((long) invoker.invokeExact(target)); } - protected Object invoke_F0() throws Throwable { return convert_F((float) invoker.invokeExact(target)); } - protected Object invoke_D0() throws Throwable { return convert_D((double)invoker.invokeExact(target)); } - } - static class A1 extends Adapter { - protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A1(e, i, c, t); } - protected Object invoke_L1(Object a0) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0)); } - protected Object invoke_I1(Object a0) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0)); } - protected Object invoke_J1(Object a0) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0)); } - protected Object invoke_F1(Object a0) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0)); } - protected Object invoke_D1(Object a0) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0)); } - } - static class A2 extends Adapter { - protected A2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A2(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A2(e, i, c, t); } - protected Object invoke_L2(Object a0, Object a1) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1)); } - protected Object invoke_I2(Object a0, Object a1) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1)); } - protected Object invoke_J2(Object a0, Object a1) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1)); } - protected Object invoke_F2(Object a0, Object a1) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1)); } - protected Object invoke_D2(Object a0, Object a1) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1)); } - } - static class A3 extends Adapter { - protected A3(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A3(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A3(e, i, c, t); } - protected Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2)); } - protected Object invoke_I3(Object a0, Object a1, Object a2) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2)); } - protected Object invoke_J3(Object a0, Object a1, Object a2) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2)); } - protected Object invoke_F3(Object a0, Object a1, Object a2) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2)); } - protected Object invoke_D3(Object a0, Object a1, Object a2) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2)); } - } - static class A4 extends Adapter { - protected A4(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A4(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A4(e, i, c, t); } - protected Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3)); } - protected Object invoke_I4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3)); } - protected Object invoke_J4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3)); } - protected Object invoke_F4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3)); } - protected Object invoke_D4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3)); } - } - static class A5 extends Adapter { - protected A5(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A5(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A5(e, i, c, t); } - protected Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4)); } - protected Object invoke_I5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4)); } - protected Object invoke_J5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4)); } - protected Object invoke_F5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4)); } - protected Object invoke_D5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4)); } - } - static class A6 extends Adapter { - protected A6(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A6(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A6(e, i, c, t); } - protected Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); } - protected Object invoke_I6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); } - protected Object invoke_J6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); } - protected Object invoke_F6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); } - protected Object invoke_D6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5)); } - } - static class A7 extends Adapter { - protected A7(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A7(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A7(e, i, c, t); } - protected Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_I7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_J7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_F7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_D7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6)); } - } - static class A8 extends Adapter { - protected A8(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A8(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A8(e, i, c, t); } - protected Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_I8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_J8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_F8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_D8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7)); } - } - static class A9 extends Adapter { - protected A9(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A9(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A9(e, i, c, t); } - protected Object invoke_L9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_I9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_J9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_F9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_D9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - } - static class A10 extends Adapter { - protected A10(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A10(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { super(e, i, c, t); } - protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) - { return new A10(e, i, c, t); } - protected Object invoke_L10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_L((Object)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_I10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_I((int) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_J10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_J((long) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_F10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_F((float) invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_D10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return convert_D((double)invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - } -}
--- a/src/share/classes/java/lang/invoke/MethodHandleImpl.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/lang/invoke/MethodHandleImpl.java Fri Aug 05 16:03:00 2011 -0700 @@ -102,172 +102,46 @@ MethodType rawConType = rawConstructor.type(); Class<?> allocateClass = rawConType.parameterType(0); // Wrap the raw (unsafe) constructor with the allocation of a suitable object. - if (AdapterMethodHandle.canCollectArguments(rawConType, MethodType.methodType(allocateClass), 0, true)) { - // allocator(arg...) - // [fold]=> cookedConstructor(obj=allocate(C), arg...) - // [dup,collect]=> identity(obj, void=rawConstructor(obj, arg...)) - MethodHandle returner = MethodHandles.identity(allocateClass); - MethodType ctype = rawConType.insertParameterTypes(0, allocateClass).changeReturnType(allocateClass); - MethodHandle cookedConstructor = AdapterMethodHandle.makeCollectArguments(returner, rawConstructor, 1, false); - assert(cookedConstructor.type().equals(ctype)); - ctype = ctype.dropParameterTypes(0, 1); - cookedConstructor = AdapterMethodHandle.makeCollectArguments(cookedConstructor, returner, 0, true); - MethodHandle allocator = new AllocateObject(allocateClass); - // allocate() => new C(void) - assert(allocator.type().equals(MethodType.methodType(allocateClass))); - ctype = ctype.dropParameterTypes(0, 1); - MethodHandle fold = foldArguments(cookedConstructor, ctype, 0, allocator); - return fold; - } - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - MethodHandle allocator - = AllocateObject.make(allocateClass, rawConstructor); - assert(allocator.type() - .equals(rawConType.dropParameterTypes(0, 1).changeReturnType(rawConType.parameterType(0)))); - return allocator; + assert(AdapterMethodHandle.canCollectArguments(rawConType, MethodType.methodType(allocateClass), 0, true)); + // allocator(arg...) + // [fold]=> cookedConstructor(obj=allocate(C), arg...) + // [dup,collect]=> identity(obj, void=rawConstructor(obj, arg...)) + MethodHandle returner = MethodHandles.identity(allocateClass); + MethodType ctype = rawConType.insertParameterTypes(0, allocateClass).changeReturnType(allocateClass); + MethodHandle cookedConstructor = AdapterMethodHandle.makeCollectArguments(returner, rawConstructor, 1, false); + assert(cookedConstructor.type().equals(ctype)); + ctype = ctype.dropParameterTypes(0, 1); + cookedConstructor = AdapterMethodHandle.makeCollectArguments(cookedConstructor, returner, 0, true); + MethodHandle allocator = new AllocateObject(allocateClass); + // allocate() => new C(void) + assert(allocator.type().equals(MethodType.methodType(allocateClass))); + ctype = ctype.dropParameterTypes(0, 1); + MethodHandle fold = foldArguments(cookedConstructor, ctype, 0, allocator); + return fold; } static final class AllocateObject<C> extends BoundMethodHandle { private static final Unsafe unsafe = Unsafe.getUnsafe(); private final Class<C> allocateClass; - private final MethodHandle rawConstructor; - private AllocateObject(MethodHandle invoker, - Class<C> allocateClass, MethodHandle rawConstructor) { - super(invoker); - this.allocateClass = allocateClass; - this.rawConstructor = rawConstructor; - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - } // for allocation only: private AllocateObject(Class<C> allocateClass) { super(ALLOCATE.asType(MethodType.methodType(allocateClass, AllocateObject.class))); this.allocateClass = allocateClass; - this.rawConstructor = null; - } - static MethodHandle make(Class<?> allocateClass, MethodHandle rawConstructor) { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - MethodType rawConType = rawConstructor.type(); - assert(rawConType.parameterType(0) == allocateClass); - MethodType newType = rawConType.dropParameterTypes(0, 1).changeReturnType(allocateClass); - int nargs = rawConType.parameterCount() - 1; - if (nargs < INVOKES.length) { - MethodHandle invoke = INVOKES[nargs]; - MethodType conType = CON_TYPES[nargs]; - MethodHandle gcon = convertArguments(rawConstructor, conType, rawConType, 0); - if (gcon == null) return null; - MethodHandle galloc = new AllocateObject(invoke, allocateClass, gcon); - assert(galloc.type() == newType.generic()); - return convertArguments(galloc, newType, galloc.type(), 0); - } else { - MethodHandle invoke = VARARGS_INVOKE; - MethodType conType = CON_TYPES[nargs]; - MethodHandle gcon = spreadArgumentsFromPos(rawConstructor, conType, 1); - if (gcon == null) return null; - MethodHandle galloc = new AllocateObject(invoke, allocateClass, gcon); - return collectArguments(galloc, newType, 1, null); - } - } - @Override - String debugString() { - return addTypeString(allocateClass.getSimpleName(), this); } @SuppressWarnings("unchecked") private C allocate() throws InstantiationException { return (C) unsafe.allocateInstance(allocateClass); } - private C invoke_V(Object... av) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, av); - return obj; - } - private C invoke_L0() throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj); - return obj; - } - private C invoke_L1(Object a0) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0); - return obj; - } - private C invoke_L2(Object a0, Object a1) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1); - return obj; - } - private C invoke_L3(Object a0, Object a1, Object a2) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1, a2); - return obj; - } - private C invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3); - return obj; - } - private C invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4); - return obj; - } - private C invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4, a5); - return obj; - } - private C invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4, a5, a6); - return obj; - } - private C invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { - C obj = allocate(); - rawConstructor.invokeExact((Object)obj, a0, a1, a2, a3, a4, a5, a6, a7); - return obj; - } - static MethodHandle[] makeInvokes() { - ArrayList<MethodHandle> invokes = new ArrayList<MethodHandle>(); - MethodHandles.Lookup lookup = IMPL_LOOKUP; - for (;;) { - int nargs = invokes.size(); - String name = "invoke_L"+nargs; - MethodHandle invoke = null; - try { - invoke = lookup.findVirtual(AllocateObject.class, name, MethodType.genericMethodType(nargs)); - } catch (ReflectiveOperationException ex) { - } - if (invoke == null) break; - invokes.add(invoke); - } - assert(invokes.size() == 9); // current number of methods - return invokes.toArray(new MethodHandle[0]); - }; - static final MethodHandle[] INVOKES = makeInvokes(); - // For testing use this: - //static final MethodHandle[] INVOKES = Arrays.copyOf(makeInvokes(), 2); - static final MethodHandle VARARGS_INVOKE; static final MethodHandle ALLOCATE; static { try { - VARARGS_INVOKE = IMPL_LOOKUP.findVirtual(AllocateObject.class, "invoke_V", MethodType.genericMethodType(0, true)); ALLOCATE = IMPL_LOOKUP.findVirtual(AllocateObject.class, "allocate", MethodType.genericMethodType(0)); } catch (ReflectiveOperationException ex) { throw uncaughtException(ex); } } - // Corresponding generic constructor types: - static final MethodType[] CON_TYPES = new MethodType[INVOKES.length]; - static { - for (int i = 0; i < INVOKES.length; i++) - CON_TYPES[i] = makeConType(INVOKES[i]); - } - static final MethodType VARARGS_CON_TYPE = makeConType(VARARGS_INVOKE); - static MethodType makeConType(MethodHandle invoke) { - MethodType invType = invoke.type(); - return invType.changeParameterType(0, Object.class).changeReturnType(void.class); - } } static @@ -757,26 +631,7 @@ return target; if (oldType.parameterCount() != newType.parameterCount()) throw newIllegalArgumentException("mismatched parameter count", oldType, newType); - MethodHandle res = AdapterMethodHandle.makePairwiseConvert(newType, target, level); - if (res != null) - return res; - // We can come here in the case of target(int)void => (Object)void, - // because the unboxing logic for Object => int is complex. - int argc = oldType.parameterCount(); - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - // The JVM can't do it directly, so fill in the gap with a Java adapter. - // TO DO: figure out what to put here from case-by-case experience - // Use a heavier method: Convert all the arguments to Object, - // then back to the desired types. We might have to use Java-based - // method handles to do this. - MethodType objType = MethodType.genericMethodType(argc); - MethodHandle objTarget = AdapterMethodHandle.makePairwiseConvert(objType, target, level); - if (objTarget == null) - objTarget = FromGeneric.make(target); - res = AdapterMethodHandle.makePairwiseConvert(newType, objTarget, level); - if (res != null) - return res; - return ToGeneric.make(newType, objTarget); + return AdapterMethodHandle.makePairwiseConvert(newType, target, level); } static MethodHandle spreadArguments(MethodHandle target, Class<?> arrayType, int arrayLength) { @@ -829,19 +684,8 @@ // oldType // (a..., b...)=>r assert(newType.parameterCount() == collectArg + colType.parameterCount()); assert(oldType.parameterCount() == collectArg + 1); - MethodHandle result = null; - if (AdapterMethodHandle.canCollectArguments(oldType, colType, collectArg, false)) { - result = AdapterMethodHandle.makeCollectArguments(target, collector, collectArg, false); - } - if (result == null) { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - MethodHandle gtarget = convertArguments(target, oldType.generic(), oldType, 0); - MethodHandle gcollector = convertArguments(collector, colType.generic(), colType, 0); - if (gtarget == null || gcollector == null) return null; - MethodHandle gresult = FilterGeneric.makeArgumentCollector(gcollector, gtarget); - result = convertArguments(gresult, newType, gresult.type(), 0); - } - return result; + assert(AdapterMethodHandle.canCollectArguments(oldType, colType, collectArg, false)); + return AdapterMethodHandle.makeCollectArguments(target, collector, collectArg, false); } static MethodHandle filterArgument(MethodHandle target, @@ -850,32 +694,7 @@ MethodType ttype = target.type(); MethodType ftype = filter.type(); assert(ftype.parameterCount() == 1); - MethodHandle result = null; - if (AdapterMethodHandle.canCollectArguments(ttype, ftype, pos, false)) { - result = AdapterMethodHandle.makeCollectArguments(target, filter, pos, false); - if (result != null) return result; - } - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - MethodType rtype = ttype.changeParameterType(pos, ftype.parameterType(0)); - MethodType gttype = ttype.generic(); - if (ttype != gttype) { - target = convertArguments(target, gttype, ttype, 0); - ttype = gttype; - } - MethodType gftype = ftype.generic(); - if (ftype != gftype) { - filter = convertArguments(filter, gftype, ftype, 0); - ftype = gftype; - } - if (ftype == ttype) { - // simple unary case - result = FilterOneArgument.make(filter, target); - } else { - result = FilterGeneric.makeArgumentFilter(pos, filter, target); - } - if (result.type() != rtype) - result = result.asType(rtype); - return result; + return AdapterMethodHandle.makeCollectArguments(target, filter, pos, false); } static MethodHandle foldArguments(MethodHandle target, @@ -884,155 +703,15 @@ MethodHandle combiner) { MethodType oldType = target.type(); MethodType ctype = combiner.type(); - if (AdapterMethodHandle.canCollectArguments(oldType, ctype, foldPos, true)) { - MethodHandle res = AdapterMethodHandle.makeCollectArguments(target, combiner, foldPos, true); - if (res != null) return res; - } - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - if (foldPos != 0) return null; - MethodHandle gtarget = convertArguments(target, oldType.generic(), oldType, 0); - MethodHandle gcombiner = convertArguments(combiner, ctype.generic(), ctype, 0); - if (ctype.returnType() == void.class) { - gtarget = dropArguments(gtarget, oldType.generic().insertParameterTypes(foldPos, Object.class), foldPos); - } - if (gtarget == null || gcombiner == null) return null; - MethodHandle gresult = FilterGeneric.makeArgumentFolder(gcombiner, gtarget); - return convertArguments(gresult, newType, gresult.type(), 0); + assert(AdapterMethodHandle.canCollectArguments(oldType, ctype, foldPos, true)); + return AdapterMethodHandle.makeCollectArguments(target, combiner, foldPos, true); } static MethodHandle dropArguments(MethodHandle target, MethodType newType, int argnum) { int drops = newType.parameterCount() - target.type().parameterCount(); - MethodHandle res = AdapterMethodHandle.makeDropArguments(newType, target, argnum, drops); - if (res != null) - return res; - throw new UnsupportedOperationException("NYI"); - } - - private static class GuardWithTest extends BoundMethodHandle { - private final MethodHandle test, target, fallback; - private GuardWithTest(MethodHandle invoker, - MethodHandle test, MethodHandle target, MethodHandle fallback) { - super(invoker); - this.test = test; - this.target = target; - this.fallback = fallback; - } - static boolean preferRicochetFrame(MethodType type) { - return true; // always use RF if available - } - static MethodHandle make(MethodHandle test, MethodHandle target, MethodHandle fallback) { - MethodType type = target.type(); - int nargs = type.parameterCount(); - if (nargs < INVOKES.length) { - if (preferRicochetFrame(type)) - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - MethodHandle invoke = INVOKES[nargs]; - MethodType gtype = type.generic(); - assert(invoke.type().dropParameterTypes(0,1) == gtype); - // Note: convertArguments(...2) avoids interface casts present in convertArguments(...0) - MethodHandle gtest = convertArguments(test, gtype.changeReturnType(boolean.class), test.type(), 2); - MethodHandle gtarget = convertArguments(target, gtype, type, 2); - MethodHandle gfallback = convertArguments(fallback, gtype, type, 2); - if (gtest == null || gtarget == null || gfallback == null) return null; - MethodHandle gguard = new GuardWithTest(invoke, gtest, gtarget, gfallback); - return convertArguments(gguard, type, gtype, 2); - } else { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this code is deprecated - MethodHandle invoke = VARARGS_INVOKE; - MethodType gtype = MethodType.genericMethodType(1); - assert(invoke.type().dropParameterTypes(0,1) == gtype); - MethodHandle gtest = spreadArgumentsFromPos(test, gtype.changeReturnType(boolean.class), 0); - MethodHandle gtarget = spreadArgumentsFromPos(target, gtype, 0); - MethodHandle gfallback = spreadArgumentsFromPos(fallback, gtype, 0); - MethodHandle gguard = new GuardWithTest(invoke, gtest, gtarget, gfallback); - if (gtest == null || gtarget == null || gfallback == null) return null; - return collectArguments(gguard, type, 0, null); - } - } - @Override - String debugString() { - return addTypeString(target, this); - } - private Object invoke_V(Object... av) throws Throwable { - if ((boolean) test.invokeExact(av)) - return target.invokeExact(av); - return fallback.invokeExact(av); - } - private Object invoke_L0() throws Throwable { - if ((boolean) test.invokeExact()) - return target.invokeExact(); - return fallback.invokeExact(); - } - private Object invoke_L1(Object a0) throws Throwable { - if ((boolean) test.invokeExact(a0)) - return target.invokeExact(a0); - return fallback.invokeExact(a0); - } - private Object invoke_L2(Object a0, Object a1) throws Throwable { - if ((boolean) test.invokeExact(a0, a1)) - return target.invokeExact(a0, a1); - return fallback.invokeExact(a0, a1); - } - private Object invoke_L3(Object a0, Object a1, Object a2) throws Throwable { - if ((boolean) test.invokeExact(a0, a1, a2)) - return target.invokeExact(a0, a1, a2); - return fallback.invokeExact(a0, a1, a2); - } - private Object invoke_L4(Object a0, Object a1, Object a2, Object a3) throws Throwable { - if ((boolean) test.invokeExact(a0, a1, a2, a3)) - return target.invokeExact(a0, a1, a2, a3); - return fallback.invokeExact(a0, a1, a2, a3); - } - private Object invoke_L5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { - if ((boolean) test.invokeExact(a0, a1, a2, a3, a4)) - return target.invokeExact(a0, a1, a2, a3, a4); - return fallback.invokeExact(a0, a1, a2, a3, a4); - } - private Object invoke_L6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { - if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5)) - return target.invokeExact(a0, a1, a2, a3, a4, a5); - return fallback.invokeExact(a0, a1, a2, a3, a4, a5); - } - private Object invoke_L7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { - if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6)) - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6); - return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6); - } - private Object invoke_L8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { - if ((boolean) test.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7)) - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); - return fallback.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); - } - static MethodHandle[] makeInvokes() { - ArrayList<MethodHandle> invokes = new ArrayList<MethodHandle>(); - MethodHandles.Lookup lookup = IMPL_LOOKUP; - for (;;) { - int nargs = invokes.size(); - String name = "invoke_L"+nargs; - MethodHandle invoke = null; - try { - invoke = lookup.findVirtual(GuardWithTest.class, name, MethodType.genericMethodType(nargs)); - } catch (ReflectiveOperationException ex) { - } - if (invoke == null) break; - invokes.add(invoke); - } - assert(invokes.size() == 9); // current number of methods - return invokes.toArray(new MethodHandle[0]); - }; - static final MethodHandle[] INVOKES = makeInvokes(); - // For testing use this: - //static final MethodHandle[] INVOKES = Arrays.copyOf(makeInvokes(), 2); - static final MethodHandle VARARGS_INVOKE; - static { - try { - VARARGS_INVOKE = IMPL_LOOKUP.findVirtual(GuardWithTest.class, "invoke_V", MethodType.genericMethodType(0, true)); - } catch (ReflectiveOperationException ex) { - throw uncaughtException(ex); - } - } + return AdapterMethodHandle.makeDropArguments(newType, target, argnum, drops); } static @@ -1065,21 +744,18 @@ assert(test.type().returnType() == boolean.class); MethodType targetType = target.type(); MethodType foldTargetType = targetType.insertParameterTypes(0, boolean.class); - if (AdapterMethodHandle.canCollectArguments(foldTargetType, test.type(), 0, true) - && GuardWithTest.preferRicochetFrame(targetType)) { - // 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; - } - return GuardWithTest.make(test, target, fallback); + 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; } private static class GuardWithCatch extends BoundMethodHandle {
--- a/src/share/classes/java/lang/invoke/MethodHandleNatives.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/lang/invoke/MethodHandleNatives.java Fri Aug 05 16:03:00 2011 -0700 @@ -391,13 +391,4 @@ throw err; } } - - /** - * This assertion marks code which was written before ricochet frames were implemented. - * Such code will go away when the ports catch up. - */ - static boolean workaroundWithoutRicochetFrames() { - assert(!HAVE_RICOCHET_FRAMES) : "this code should not be executed if `-XX:+UseRicochetFrames is enabled"; - return true; - } }
--- a/src/share/classes/java/lang/invoke/MethodHandleProxies.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/lang/invoke/MethodHandleProxies.java Fri Aug 05 16:03:00 2011 -0700 @@ -27,6 +27,7 @@ import java.lang.reflect.*; import sun.invoke.WrapperInstance; +import java.util.ArrayList; /** * This class consists exclusively of static methods that help adapt @@ -134,14 +135,19 @@ // public static <T> T asInterfaceInstance(final Class<T> intfc, final MethodHandle target) { - // POC implementation only; violates the above contract several ways - final Method sm = getSingleMethod(intfc); - if (sm == null) + if (!intfc.isInterface() || !Modifier.isPublic(intfc.getModifiers())) + throw new IllegalArgumentException("not a public interface: "+intfc.getName()); + final Method[] methods = getSingleNameMethods(intfc); + if (methods == null) throw new IllegalArgumentException("not a single-method interface: "+intfc.getName()); - MethodType smMT = MethodType.methodType(sm.getReturnType(), sm.getParameterTypes()); - MethodHandle checkTarget = target.asType(smMT); // make throw WMT - checkTarget = checkTarget.asType(checkTarget.type().changeReturnType(Object.class)); - final MethodHandle vaTarget = checkTarget.asSpreader(Object[].class, smMT.parameterCount()); + final MethodHandle[] vaTargets = new MethodHandle[methods.length]; + for (int i = 0; i < methods.length; i++) { + Method sm = methods[i]; + MethodType smMT = MethodType.methodType(sm.getReturnType(), sm.getParameterTypes()); + MethodHandle checkTarget = target.asType(smMT); // make throw WMT + checkTarget = checkTarget.asType(checkTarget.type().changeReturnType(Object.class)); + vaTargets[i] = checkTarget.asSpreader(Object[].class, smMT.parameterCount()); + } return intfc.cast(Proxy.newProxyInstance( intfc.getClassLoader(), new Class[]{ intfc, WrapperInstance.class }, @@ -152,13 +158,15 @@ throw new AssertionError(); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + for (int i = 0; i < methods.length; i++) { + if (method.equals(methods[i])) + return vaTargets[i].invokeExact(args); + } if (method.getDeclaringClass() == WrapperInstance.class) return getArg(method.getName()); - if (method.equals(sm)) - return vaTarget.invokeExact(args); if (isObjectMethod(method)) - return callObjectMethod(this, method, args); - throw new InternalError(); + return callObjectMethod(proxy, method, args); + throw new InternalError("bad proxy method: "+method); } })); } @@ -241,17 +249,20 @@ } private static - Method getSingleMethod(Class<?> intfc) { - if (!intfc.isInterface()) return null; - Method sm = null; + Method[] getSingleNameMethods(Class<?> intfc) { + ArrayList<Method> methods = new ArrayList<Method>(); + String uniqueName = null; for (Method m : intfc.getMethods()) { - int mod = m.getModifiers(); - if (Modifier.isAbstract(mod)) { - if (sm != null && !isObjectMethod(sm)) - return null; // too many abstract methods - sm = m; - } + if (isObjectMethod(m)) continue; + if (!Modifier.isAbstract(m.getModifiers())) continue; + String mname = m.getName(); + if (uniqueName == null) + uniqueName = mname; + else if (!uniqueName.equals(mname)) + return null; // too many abstract methods + methods.add(m); } - return sm; + if (uniqueName == null) return null; + return methods.toArray(new Method[methods.size()]); } }
--- a/src/share/classes/java/lang/invoke/MethodHandles.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/lang/invoke/MethodHandles.java Fri Aug 05 16:03:00 2011 -0700 @@ -1995,16 +1995,8 @@ // lambda( arg...) { target(arg...) } ) MethodType newType = targetType.changeReturnType(filterType.returnType()); MethodHandle result = null; - if (AdapterMethodHandle.canCollectArguments(filterType, targetType, 0, false)) { - result = AdapterMethodHandle.makeCollectArguments(filter, target, 0, false); - if (result != null) return result; - } - // FIXME: Too many nodes here. - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this class is deprecated - MethodHandle returner = dropArguments(filter, filterValues, targetType.parameterList()); - result = foldArguments(returner, target); - assert(result.type().equals(newType)); - return result; + assert(AdapterMethodHandle.canCollectArguments(filterType, targetType, 0, false)); + return AdapterMethodHandle.makeCollectArguments(filter, target, 0, false); } /**
--- a/src/share/classes/java/lang/invoke/MethodTypeForm.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/java/lang/invoke/MethodTypeForm.java Fri Aug 05 16:03:00 2011 -0700 @@ -56,10 +56,6 @@ /*lazy*/ MethodType primsAtEnd; // reorder primitives to the end // Cached adapter information: - /*lazy*/ ToGeneric toGeneric; // convert cs. with prims to w/o - /*lazy*/ FromGeneric fromGeneric; // convert cs. w/o prims to with - /*lazy*/ SpreadGeneric[] spreadGeneric; // expand one argument to many - /*lazy*/ FilterGeneric filterGeneric; // convert argument(s) on the fly /*lazy*/ MethodHandle genericInvoker; // hook for inexact invoke public MethodType erasedType() {
--- a/src/share/classes/java/lang/invoke/SpreadGeneric.java Thu Aug 04 08:53:16 2011 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,682 +0,0 @@ -/* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import sun.invoke.util.ValueConversions; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import static java.lang.invoke.MethodHandleStatics.*; -import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; - -/** - * Generic spread adapter. - * Expands a final argument into multiple (zero or more) arguments, keeping the others the same. - * @author jrose - */ -class SpreadGeneric { - // type for the outgoing call - private final MethodType targetType; - // number of arguments to spread - private final int spreadCount; - // prototype adapter (clone and customize for each new target!) - private final Adapter adapter; - // entry point for adapter (Adapter mh, a...) => ... - private final MethodHandle entryPoint; - - /** Compute and cache information common to all spreading adapters - * that accept calls of the given (generic) type. - */ - private SpreadGeneric(MethodType targetType, int spreadCount) { - assert(targetType == targetType.generic()); - this.targetType = targetType; - this.spreadCount = spreadCount; - // the target invoker will generally need casts on reference arguments - MethodHandle[] ep = { null }; - Adapter ad = findAdapter(this, ep); - if (ad != null) { - this.adapter = ad; - this.entryPoint = ep[0]; - return; - } - this.adapter = buildAdapterFromBytecodes(targetType, spreadCount, ep); - this.entryPoint = ep[0]; - } - - static { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this class is deprecated - } - - /** From targetType remove the last spreadCount arguments, and instead - * append a simple Object argument. - */ - static MethodType preSpreadType(MethodType targetType, int spreadCount) { - @SuppressWarnings("unchecked") - ArrayList<Class<?>> params = new ArrayList(targetType.parameterList()); - int outargs = params.size(); - params.subList(outargs - spreadCount, outargs).clear(); - params.add(Object.class); - return MethodType.methodType(targetType.returnType(), params); - } - - MethodHandle makeInstance(MethodHandle target) { - MethodType type = target.type(); - if (type != targetType) { - throw new UnsupportedOperationException("NYI type="+type); - } - return adapter.makeInstance(this, target); - } - - /** Build an adapter of the given generic type, which invokes typedTarget - * on the incoming arguments, after unboxing as necessary. - * The return value is boxed if necessary. - * @param genericType the required type of the result - * @param typedTarget the target - * @return an adapter method handle - */ - public static MethodHandle make(MethodHandle target, int spreadCount) { - MethodType type = target.type(); - MethodType gtype = type.generic(); - if (type == gtype) { - return SpreadGeneric.of(type, spreadCount).makeInstance(target); - } else { - MethodHandle gtarget = FromGeneric.make(target); - assert(gtarget.type() == gtype); - MethodHandle gspread = SpreadGeneric.of(gtype, spreadCount).makeInstance(gtarget); - return ToGeneric.make(preSpreadType(type, spreadCount), gspread); - } - } - - /** Return the adapter information for this type's erasure. */ - static SpreadGeneric of(MethodType targetType, int spreadCount) { - if (targetType != targetType.generic()) - throw new UnsupportedOperationException("NYI type="+targetType); - MethodTypeForm form = targetType.form(); - int outcount = form.parameterCount(); - assert(spreadCount <= outcount); - SpreadGeneric[] spreadGens = form.spreadGeneric; - if (spreadGens == null) - form.spreadGeneric = spreadGens = new SpreadGeneric[outcount+1]; - SpreadGeneric spreadGen = spreadGens[spreadCount]; - if (spreadGen == null) - spreadGens[spreadCount] = spreadGen = new SpreadGeneric(form.erasedType(), spreadCount); - return spreadGen; - } - - String debugString() { - return getClass().getSimpleName()+targetType+"["+spreadCount+"]"; - } - - // This mini-api is called from an Adapter to manage the spread. - /** A check/coercion that happens once before any selections. */ - protected Object check(Object av, int n) { - checkSpreadArgument(av, n); - return av; - } - - /** The selection operator for spreading; note that it takes Object not Object[]. */ - protected Object select(Object av, int n) { - return ((Object[])av)[n]; - } - /* - protected int select_I(Object av, int n) { - // maybe return ((int[])select)[n] - throw new UnsupportedOperationException("subclass resp."); - } - protected int select_J(Object av, int n) { - // maybe return ((long[])select)[n] - throw new UnsupportedOperationException("subclass resp."); - } - // */ - - /* Create an adapter that handles spreading calls for the given type. */ - static Adapter findAdapter(SpreadGeneric outer, MethodHandle[] ep) { - MethodType targetType = outer.targetType; - int spreadCount = outer.spreadCount; - int outargs = targetType.parameterCount(); - int inargs = outargs - spreadCount; - if (inargs < 0) return null; - MethodType entryType = MethodType.genericMethodType(inargs + 1); // 1 for av - String cname1 = "S" + outargs; - String[] cnames = { cname1 }; - String iname = "invoke_S"+spreadCount; - // e.g., D5I2, D5, L5I2, L5; invoke_D5 - for (String cname : cnames) { - Class<? extends Adapter> acls = Adapter.findSubClass(cname); - if (acls == null) continue; - // see if it has the required invoke method - MethodHandle entryPoint = null; - try { - entryPoint = IMPL_LOOKUP.findSpecial(acls, iname, entryType, acls); - } catch (ReflectiveOperationException ex) { - } - if (entryPoint == null) continue; - Constructor<? extends Adapter> ctor = null; - try { - ctor = acls.getDeclaredConstructor(SpreadGeneric.class); - } catch (NoSuchMethodException ex) { - } catch (SecurityException ex) { - } - if (ctor == null) continue; - try { - // Produce an instance configured as a prototype. - Adapter ad = ctor.newInstance(outer); - ep[0] = entryPoint; - return ad; - } catch (IllegalArgumentException ex) { - } catch (InvocationTargetException wex) { - Throwable ex = wex.getTargetException(); - if (ex instanceof Error) throw (Error)ex; - if (ex instanceof RuntimeException) throw (RuntimeException)ex; - } catch (InstantiationException ex) { - } catch (IllegalAccessException ex) { - } - } - return null; - } - - static Adapter buildAdapterFromBytecodes(MethodType targetType, - int spreadCount, MethodHandle[] ep) { - throw new UnsupportedOperationException("NYI"); - } - - /** - * This adapter takes some untyped arguments, and returns an untyped result. - * Internally, it applies the invoker to the target, which causes the - * objects to be unboxed; the result is a raw type in L/I/J/F/D. - * This result is passed to convert, which is responsible for - * converting the raw result into a boxed object. - * The invoker is kept separate from the target because it can be - * generated once per type erasure family, and reused across adapters. - */ - static abstract class Adapter extends BoundMethodHandle { - /* - * class X<<R,int M,int N>> extends Adapter { - * (Object**N)=>R target; - * static int S = N-M; - * Object invoke(Object**M a, Object v) = target(a..., v[0]...v[S-1]); - * } - */ - protected final SpreadGeneric outer; - protected final MethodHandle target; // (any**N) => R - - @Override - String debugString() { - return addTypeString(target, this); - } - - static final MethodHandle NO_ENTRY = ValueConversions.identity(); - - protected boolean isPrototype() { return target == null; } - protected Adapter(SpreadGeneric outer) { - super(NO_ENTRY); - this.outer = outer; - this.target = null; - assert(isPrototype()); - } - - protected Adapter(SpreadGeneric outer, MethodHandle target) { - super(outer.entryPoint); - this.outer = outer; - this.target = target; - } - - /** Make a copy of self, with new fields. */ - protected abstract Adapter makeInstance(SpreadGeneric outer, MethodHandle target); - // { return new ThisType(outer, target); } - - protected Object check(Object av, int n) { - return outer.check(av, n); - } - protected Object select(Object av, int n) { - return outer.select(av, n); - } - - static private final String CLASS_PREFIX; // "java.lang.invoke.SpreadGeneric$" - static { - String aname = Adapter.class.getName(); - String sname = Adapter.class.getSimpleName(); - if (!aname.endsWith(sname)) throw new InternalError(); - CLASS_PREFIX = aname.substring(0, aname.length() - sname.length()); - } - /** Find a sibing class of Adapter. */ - static Class<? extends Adapter> findSubClass(String name) { - String cname = Adapter.CLASS_PREFIX + name; - try { - return Class.forName(cname).asSubclass(Adapter.class); - } catch (ClassNotFoundException ex) { - return null; - } catch (ClassCastException ex) { - return null; - } - } - } - - /* generated classes follow this pattern: - static class xS2 extends Adapter { - protected xS2(SpreadGeneric outer) { super(outer); } // to build prototype - protected xS2(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected xS2 makeInstance(SpreadGeneric outer, MethodHandle t) { return new xS2(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object av) throws Throwable { av = super.check(av,0); - return target.invokeExact(a0, a1)); } - protected Object invoke_S1(Object a0, Object av) throws Throwable { av = super.check(av,1); - return target.invokeExact(a0, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object av) throws Throwable { av = super.check(av,1); - return target.invokeExact( - super.select(av,0), super.select(av,1)); } - } - // */ - -/* -: SHELL; n=SpreadGeneric; cp -p $n.java $n.java-; sed < $n.java- > $n.java+ -e '/{{*{{/,/}}*}}/w /tmp/genclasses.java' -e '/}}*}}/q'; (cd /tmp; javac -d . genclasses.java; java -cp . genclasses) >> $n.java+; echo '}' >> $n.java+; mv $n.java+ $n.java; mv $n.java- $n.java~ -//{{{ -import java.util.*; -class genclasses { - static String[][] TEMPLATES = { { - "@for@ N=0..10", - " //@each-cat@", - " static class @cat@ extends Adapter {", - " protected @cat@(SpreadGeneric outer) { super(outer); } // to build prototype", - " protected @cat@(SpreadGeneric outer, MethodHandle t) { super(outer, t); }", - " protected @cat@ makeInstance(SpreadGeneric outer, MethodHandle t) { return new @cat@(outer, t); }", - " protected Object invoke_S0(@Tvav,@Object av) throws Throwable { av = super.check(av, 0);", - " return target.invokeExact(@av@); }", - " //@each-S@", - " protected Object invoke_S@S@(@Tvav,@Object av) throws Throwable { av = super.check(av, @S@);", - " return target.invokeExact(@av,@@sv@); }", - " //@end-S@", - " }", - } }; - static final String NEWLINE_INDENT = "\n "; - enum VAR { - cat, N, S, av, av_, Tvav_, sv; - public final String pattern = "@"+toString().replace('_','.')+"@"; - public String binding = toString(); - static void makeBindings(boolean topLevel, int outargs, int spread) { - int inargs = outargs - spread; - VAR.cat.binding = "S"+outargs; - VAR.N.binding = String.valueOf(outargs); // outgoing arg count - VAR.S.binding = String.valueOf(spread); // spread count - String[] av = new String[inargs]; - String[] Tvav = new String[inargs]; - for (int i = 0; i < inargs; i++) { - av[i] = arg(i); - Tvav[i] = param("Object", av[i]); - } - VAR.av.binding = comma(av); - VAR.av_.binding = comma(av, ", "); - VAR.Tvav_.binding = comma(Tvav, ", "); - String[] sv = new String[spread]; - for (int i = 0; i < spread; i++) { - String spc = ""; - if (i % 4 == 0) spc = NEWLINE_INDENT; - sv[i] = spc+"super.select(av,"+i+")"; - } - VAR.sv.binding = comma(sv); - } - static String arg(int i) { return "a"+i; } - static String param(String t, String a) { return t+" "+a; } - static String comma(String[] v) { return comma(v, ""); } - static String comma(String[] v, String sep) { - if (v.length == 0) return ""; - String res = v[0]; - for (int i = 1; i < v.length; i++) res += ", "+v[i]; - return res + sep; - } - static String transform(String string) { - for (VAR var : values()) - string = string.replaceAll(var.pattern, var.binding); - return string; - } - } - static String[] stringsIn(String[] strings, int beg, int end) { - return Arrays.copyOfRange(strings, beg, Math.min(end, strings.length)); - } - static String[] stringsBefore(String[] strings, int pos) { - return stringsIn(strings, 0, pos); - } - static String[] stringsAfter(String[] strings, int pos) { - return stringsIn(strings, pos, strings.length); - } - static int indexAfter(String[] strings, int pos, String tag) { - return Math.min(indexBefore(strings, pos, tag) + 1, strings.length); - } - static int indexBefore(String[] strings, int pos, String tag) { - for (int i = pos, end = strings.length; ; i++) { - if (i == end || strings[i].endsWith(tag)) return i; - } - } - static int MIN_ARITY, MAX_ARITY; - public static void main(String... av) { - for (String[] template : TEMPLATES) { - int forLinesLimit = indexBefore(template, 0, "@each-cat@"); - String[] forLines = stringsBefore(template, forLinesLimit); - template = stringsAfter(template, forLinesLimit); - for (String forLine : forLines) - expandTemplate(forLine, template); - } - } - static void expandTemplate(String forLine, String[] template) { - String[] params = forLine.split("[^0-9]+"); - if (params[0].length() == 0) params = stringsAfter(params, 1); - System.out.println("//params="+Arrays.asList(params)); - int pcur = 0; - MIN_ARITY = Integer.valueOf(params[pcur++]); - MAX_ARITY = Integer.valueOf(params[pcur++]); - if (pcur != params.length) throw new RuntimeException("bad extra param: "+forLine); - for (int outargs = MIN_ARITY; outargs <= MAX_ARITY; outargs++) { - expandTemplate(template, true, outargs, 0); - } - } - static void expandTemplate(String[] template, boolean topLevel, int outargs, int spread) { - VAR.makeBindings(topLevel, outargs, spread); - for (int i = 0; i < template.length; i++) { - String line = template[i]; - if (line.endsWith("@each-cat@")) { - // ignore - } else if (line.endsWith("@each-S@")) { - int blockEnd = indexAfter(template, i, "@end-S@"); - String[] block = stringsIn(template, i+1, blockEnd-1); - for (int spread1 = spread+1; spread1 <= outargs; spread1++) - expandTemplate(block, false, outargs, spread1); - VAR.makeBindings(topLevel, outargs, spread); - i = blockEnd-1; continue; - } else { - System.out.println(VAR.transform(line)); - } - } - } -} -//}}} */ -//params=[0, 10] - static class S0 extends Adapter { - protected S0(SpreadGeneric outer) { super(outer); } // to build prototype - protected S0(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S0 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S0(outer, t); } - protected Object invoke_S0(Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(); } - } - static class S1 extends Adapter { - protected S1(SpreadGeneric outer) { super(outer); } // to build prototype - protected S1(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S1 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S1(outer, t); } - protected Object invoke_S0(Object a0, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0); } - protected Object invoke_S1(Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact( - super.select(av,0)); } - } - static class S2 extends Adapter { - protected S2(SpreadGeneric outer) { super(outer); } // to build prototype - protected S2(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S2 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S2(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1); } - protected Object invoke_S1(Object a0, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, - super.select(av,0)); } - protected Object invoke_S2(Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact( - super.select(av,0), super.select(av,1)); } - } - static class S3 extends Adapter { - protected S3(SpreadGeneric outer) { super(outer); } // to build prototype - protected S3(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S3 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S3(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2); } - protected Object invoke_S1(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2)); } - } - static class S4 extends Adapter { - protected S4(SpreadGeneric outer) { super(outer); } // to build prototype - protected S4(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S4 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S4(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - } - static class S5 extends Adapter { - protected S5(SpreadGeneric outer) { super(outer); } // to build prototype - protected S5(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S5 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S5(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object a4, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3, a4); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, a3, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, a2, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object a0, Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - protected Object invoke_S5(Object av) throws Throwable { av = super.check(av, 5); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4)); } - } - static class S6 extends Adapter { - protected S6(SpreadGeneric outer) { super(outer); } // to build prototype - protected S6(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S6 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S6(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3, a4, a5); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object a3, Object a4, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, a3, a4, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, a2, a3, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, a1, a2, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - protected Object invoke_S5(Object a0, Object av) throws Throwable { av = super.check(av, 5); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4)); } - protected Object invoke_S6(Object av) throws Throwable { av = super.check(av, 6); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5)); } - } - static class S7 extends Adapter { - protected S7(SpreadGeneric outer) { super(outer); } // to build prototype - protected S7(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S7 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S7(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, a3, a4, a5, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object a2, Object a3, Object a4, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, a2, a3, a4, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, a1, a2, a3, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact(a0, a1, a2, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - protected Object invoke_S5(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 5); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4)); } - protected Object invoke_S6(Object a0, Object av) throws Throwable { av = super.check(av, 6); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5)); } - protected Object invoke_S7(Object av) throws Throwable { av = super.check(av, 7); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6)); } - } - static class S8 extends Adapter { - protected S8(SpreadGeneric outer) { super(outer); } // to build prototype - protected S8(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S8 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S8(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, a2, a3, a4, a5, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object a1, Object a2, Object a3, Object a4, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, a1, a2, a3, a4, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact(a0, a1, a2, a3, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - protected Object invoke_S5(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 5); - return target.invokeExact(a0, a1, a2, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4)); } - protected Object invoke_S6(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 6); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5)); } - protected Object invoke_S7(Object a0, Object av) throws Throwable { av = super.check(av, 7); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6)); } - protected Object invoke_S8(Object av) throws Throwable { av = super.check(av, 8); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6), super.select(av,7)); } - } - static class S9 extends Adapter { - protected S9(SpreadGeneric outer) { super(outer); } // to build prototype - protected S9(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S9 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S9(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, a1, a2, a3, a4, a5, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object a0, Object a1, Object a2, Object a3, Object a4, Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact(a0, a1, a2, a3, a4, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - protected Object invoke_S5(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 5); - return target.invokeExact(a0, a1, a2, a3, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4)); } - protected Object invoke_S6(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 6); - return target.invokeExact(a0, a1, a2, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5)); } - protected Object invoke_S7(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 7); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6)); } - protected Object invoke_S8(Object a0, Object av) throws Throwable { av = super.check(av, 8); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6), super.select(av,7)); } - protected Object invoke_S9(Object av) throws Throwable { av = super.check(av, 9); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6), super.select(av,7), - super.select(av,8)); } - } - static class S10 extends Adapter { - protected S10(SpreadGeneric outer) { super(outer); } // to build prototype - protected S10(SpreadGeneric outer, MethodHandle t) { super(outer, t); } - protected S10 makeInstance(SpreadGeneric outer, MethodHandle t) { return new S10(outer, t); } - protected Object invoke_S0(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9, Object av) throws Throwable { av = super.check(av, 0); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_S1(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object av) throws Throwable { av = super.check(av, 1); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, a8, - super.select(av,0)); } - protected Object invoke_S2(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object av) throws Throwable { av = super.check(av, 2); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, a7, - super.select(av,0), super.select(av,1)); } - protected Object invoke_S3(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object av) throws Throwable { av = super.check(av, 3); - return target.invokeExact(a0, a1, a2, a3, a4, a5, a6, - super.select(av,0), super.select(av,1), super.select(av,2)); } - protected Object invoke_S4(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object av) throws Throwable { av = super.check(av, 4); - return target.invokeExact(a0, a1, a2, a3, a4, a5, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3)); } - protected Object invoke_S5(Object a0, Object a1, Object a2, Object a3, Object a4, Object av) throws Throwable { av = super.check(av, 5); - return target.invokeExact(a0, a1, a2, a3, a4, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4)); } - protected Object invoke_S6(Object a0, Object a1, Object a2, Object a3, Object av) throws Throwable { av = super.check(av, 6); - return target.invokeExact(a0, a1, a2, a3, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5)); } - protected Object invoke_S7(Object a0, Object a1, Object a2, Object av) throws Throwable { av = super.check(av, 7); - return target.invokeExact(a0, a1, a2, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6)); } - protected Object invoke_S8(Object a0, Object a1, Object av) throws Throwable { av = super.check(av, 8); - return target.invokeExact(a0, a1, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6), super.select(av,7)); } - protected Object invoke_S9(Object a0, Object av) throws Throwable { av = super.check(av, 9); - return target.invokeExact(a0, - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6), super.select(av,7), - super.select(av,8)); } - protected Object invoke_S10(Object av) throws Throwable { av = super.check(av, 10); - return target.invokeExact( - super.select(av,0), super.select(av,1), super.select(av,2), super.select(av,3), - super.select(av,4), super.select(av,5), super.select(av,6), super.select(av,7), - super.select(av,8), super.select(av,9)); } - } -}
--- a/src/share/classes/java/lang/invoke/ToGeneric.java Thu Aug 04 08:53:16 2011 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1066 +0,0 @@ -/* - * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package java.lang.invoke; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import sun.invoke.util.ValueConversions; -import sun.invoke.util.Wrapper; -import static java.lang.invoke.MethodHandleStatics.*; -import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; - -/** - * Adapters which mediate between incoming calls which are not generic - * and outgoing calls which are. Any call can be represented generically - * boxing up its arguments, and (on return) unboxing the return value. - * <p> - * A call is "generic" (in MethodHandle terms) if its MethodType features - * only Object arguments. A non-generic call therefore features - * primitives and/or reference types other than Object. - * An adapter has types for its incoming and outgoing calls. - * The incoming call type is simply determined by the adapter's type - * (the MethodType it presents to callers). The outgoing call type - * is determined by the adapter's target (a MethodHandle that the adapter - * either binds internally or else takes as a leading argument). - * (To stretch the term, adapter-like method handles may have multiple - * targets or be polymorphic across multiple call types.) - * @author jrose - */ -class ToGeneric { - // type for the incoming call (may be erased) - private final MethodType entryType; - // incoming type with primitives moved to the end and turned to int/long - private final MethodType rawEntryType; - // adapter for the erased type - private final Adapter adapter; - // entry point for adapter (Adapter mh, a...) => ... - private final MethodHandle entryPoint; - // permutation of arguments for primsAtEndType - private final int[] primsAtEndOrder; - // optional final argument list conversions (at least, invokes the target) - private final MethodHandle invoker; - // conversion which unboxes a primitive return value - private final MethodHandle returnConversion; - - /** Compute and cache information common to all generifying (boxing) adapters - * that implement members of the erasure-family of the given erased type. - */ - private ToGeneric(MethodType entryType) { - assert(entryType.erase() == entryType); // for now - // incoming call will first "forget" all reference types except Object - this.entryType = entryType; - MethodHandle invoker0 = entryType.generic().invokers().exactInvoker(); - MethodType rawEntryTypeInit; - Adapter ad = findAdapter(rawEntryTypeInit = entryType); - if (ad != null) { - // Immediate hit to exactly the adapter we want, - // with no monkeying around with primitive types. - this.returnConversion = computeReturnConversion(entryType, rawEntryTypeInit, false); - this.rawEntryType = rawEntryTypeInit; - this.adapter = ad; - this.entryPoint = ad.prototypeEntryPoint(); - this.primsAtEndOrder = null; - this.invoker = invoker0; - return; - } - - // next, it will reorder primitives after references - MethodType primsAtEnd = entryType.form().primsAtEnd(); - // at the same time, it will "forget" all primitive types except int/long - this.primsAtEndOrder = MethodTypeForm.primsAtEndOrder(entryType); - if (primsAtEndOrder != null) { - // reordering is required; build on top of a simpler ToGeneric - ToGeneric va2 = ToGeneric.of(primsAtEnd); - this.adapter = va2.adapter; - if (true) throw new UnsupportedOperationException("NYI: primitive parameters must follow references; entryType = "+entryType); - this.entryPoint = MethodHandleImpl.permuteArguments( - va2.entryPoint, primsAtEnd, entryType, primsAtEndOrder); - // example: for entryType of (int,Object,Object), the reordered - // type is (Object,Object,int) and the order is {1,2,0}, - // and putPAE is (mh,int0,obj1,obj2) => mh.invokeExact(obj1,obj2,int0) - return; - } - - // after any needed argument reordering, it will reinterpret - // primitive arguments according to their "raw" types int/long - MethodType intsAtEnd = primsAtEnd.form().primsAsInts(); - ad = findAdapter(rawEntryTypeInit = intsAtEnd); - MethodHandle rawEntryPoint; - if (ad != null) { - rawEntryPoint = ad.prototypeEntryPoint(); - } else { - // Perhaps the adapter is available only for longs. - // If so, we can use it, but there will have to be a little - // more stack motion on each call. - MethodType longsAtEnd = primsAtEnd.form().primsAsLongs(); - ad = findAdapter(rawEntryTypeInit = longsAtEnd); - if (ad != null) { - MethodType eptWithLongs = longsAtEnd.insertParameterTypes(0, ad.getClass()); - MethodType eptWithInts = intsAtEnd.insertParameterTypes(0, ad.getClass()); - rawEntryPoint = ad.prototypeEntryPoint(); - MethodType midType = eptWithLongs; // will change longs to ints - for (int i = 0, nargs = midType.parameterCount(); i < nargs; i++) { - if (midType.parameterType(i) != eptWithInts.parameterType(i)) { - assert(midType.parameterType(i) == long.class); - assert(eptWithInts.parameterType(i) == int.class); - MethodType nextType = midType.changeParameterType(i, int.class); - rawEntryPoint = MethodHandleImpl.convertArguments( - rawEntryPoint, nextType, midType, 0); - midType = nextType; - } - } - assert(midType == eptWithInts); - } else { - // If there is no statically compiled adapter, - // build one by means of dynamic bytecode generation. - ad = buildAdapterFromBytecodes(rawEntryTypeInit = intsAtEnd); - rawEntryPoint = ad.prototypeEntryPoint(); - } - } - MethodType tepType = entryType.insertParameterTypes(0, ad.getClass()); - this.entryPoint = - AdapterMethodHandle.makeRetypeRaw(tepType, rawEntryPoint); - if (this.entryPoint == null) - throw new UnsupportedOperationException("cannot retype to "+entryType - +" from "+rawEntryPoint.type().dropParameterTypes(0, 1)); - this.returnConversion = computeReturnConversion(entryType, rawEntryTypeInit, false); - this.rawEntryType = rawEntryTypeInit; - this.adapter = ad; - this.invoker = makeRawArgumentFilter(invoker0, rawEntryTypeInit, entryType); - } - - static { - assert(MethodHandleNatives.workaroundWithoutRicochetFrames()); // this class is deprecated - } - - /** A generic argument list will be created by a call of type 'raw'. - * The values need to be reboxed for to match 'cooked'. - * Do this on the fly. - */ - // TO DO: Use a generic argument converter in a different file - static MethodHandle makeRawArgumentFilter(MethodHandle invoker, - MethodType raw, MethodType cooked) { - MethodHandle filteredInvoker = null; - for (int i = 0, nargs = raw.parameterCount(); i < nargs; i++) { - Class<?> src = raw.parameterType(i); - Class<?> dst = cooked.parameterType(i); - if (src == dst) continue; - assert(src.isPrimitive() && dst.isPrimitive()); - if (filteredInvoker == null) { - filteredInvoker = - AdapterMethodHandle.makeCheckCast( - invoker.type().generic(), invoker, 0, MethodHandle.class); - if (filteredInvoker == null) throw new UnsupportedOperationException("NYI"); - } - MethodHandle reboxer = ValueConversions.rebox(dst); - filteredInvoker = FilterGeneric.makeArgumentFilter(1+i, reboxer, filteredInvoker); - if (filteredInvoker == null) throw new InternalError(); - } - if (filteredInvoker == null) return invoker; - return AdapterMethodHandle.makeRetypeOnly(invoker.type(), filteredInvoker); - } - - /** - * Caller will be expecting a result from a call to {@code type}, - * while the internal adapter entry point is rawEntryType. - * Also, the internal target method will be returning a boxed value, - * as an untyped object. - * <p> - * Produce a value converter which will be typed to convert from - * {@code Object} to the return value of {@code rawEntryType}, and will - * in fact ensure that the value is compatible with the return type of - * {@code type}. - */ - private static MethodHandle computeReturnConversion( - MethodType type, MethodType rawEntryType, boolean mustCast) { - Class<?> tret = type.returnType(); - Class<?> rret = rawEntryType.returnType(); - if (mustCast || !tret.isPrimitive()) { - assert(!tret.isPrimitive()); - assert(!rret.isPrimitive()); - if (rret == Object.class && !mustCast) - return null; - return ValueConversions.cast(tret); - } else if (tret == rret) { - return ValueConversions.unbox(tret); - } else { - assert(rret.isPrimitive()); - assert(tret == double.class ? rret == long.class : rret == int.class); - return ValueConversions.unboxRaw(tret); - } - } - - Adapter makeInstance(MethodType type, MethodHandle genericTarget) { - genericTarget.getClass(); // check for NPE - MethodHandle convert = returnConversion; - if (primsAtEndOrder != null) - // reorder arguments passed to genericTarget, if primsAtEndOrder - throw new UnsupportedOperationException("NYI"); - if (type == entryType) { - if (convert == null) convert = ValueConversions.identity(); - return adapter.makeInstance(entryPoint, invoker, convert, genericTarget); - } - // my erased-type is not exactly the same as the desired type - assert(type.erase() == entryType); // else we are busted - if (convert == null) - convert = computeReturnConversion(type, rawEntryType, true); - // retype erased reference arguments (the cast makes it safe to do this) - MethodType tepType = type.insertParameterTypes(0, adapter.getClass()); - MethodHandle typedEntryPoint = - AdapterMethodHandle.makeRetypeRaw(tepType, entryPoint); - return adapter.makeInstance(typedEntryPoint, invoker, convert, genericTarget); - } - - /** Build an adapter of the given type, which invokes genericTarget - * on the incoming arguments, after boxing as necessary. - * The return value is unboxed if necessary. - * @param type the required type of the - * @param genericTarget the target, which must accept and return only Object values - * @return an adapter method handle - */ - public static MethodHandle make(MethodType type, MethodHandle genericTarget) { - MethodType gtype = genericTarget.type(); - if (type.generic() != gtype) - throw newIllegalArgumentException("type must be generic"); - if (type == gtype) return genericTarget; - return ToGeneric.of(type).makeInstance(type, genericTarget); - } - - /** Return the adapter information for this type's erasure. */ - static ToGeneric of(MethodType type) { - MethodTypeForm form = type.form(); - ToGeneric toGen = form.toGeneric; - if (toGen == null) - form.toGeneric = toGen = new ToGeneric(form.erasedType()); - return toGen; - } - - String debugString() { - return "ToGeneric"+entryType - +(primsAtEndOrder!=null?"[reorder]":""); - } - - /* Create an adapter for the given incoming call type. */ - static Adapter findAdapter(MethodType entryPointType) { - MethodTypeForm form = entryPointType.form(); - Class<?> rtype = entryPointType.returnType(); - int argc = form.parameterCount(); - int lac = form.longPrimitiveParameterCount(); - int iac = form.primitiveParameterCount() - lac; - String intsAndLongs = (iac > 0 ? "I"+iac : "")+(lac > 0 ? "J"+lac : ""); - String rawReturn = String.valueOf(Wrapper.forPrimitiveType(rtype).basicTypeChar()); - String iname0 = "invoke_"+rawReturn; - String iname1 = "invoke"; - String[] inames = { iname0, iname1 }; - String cname0 = rawReturn + argc; - String cname1 = "A" + argc; - String[] cnames = { cname1, cname1+intsAndLongs, cname0, cname0+intsAndLongs }; - // e.g., D5I2, D5, L5I2, L5 - for (String cname : cnames) { - Class<? extends Adapter> acls = Adapter.findSubClass(cname); - if (acls == null) continue; - // see if it has the required invoke method - for (String iname : inames) { - MethodHandle entryPoint = null; - try { - entryPoint = IMPL_LOOKUP. - findSpecial(acls, iname, entryPointType, acls); - } catch (ReflectiveOperationException ex) { - } - if (entryPoint == null) continue; - Constructor<? extends Adapter> ctor = null; - try { - // Prototype builder: - ctor = acls.getDeclaredConstructor(MethodHandle.class); - } catch (NoSuchMethodException ex) { - } catch (SecurityException ex) { - } - if (ctor == null) continue; - try { - return ctor.newInstance(entryPoint); - } catch (IllegalArgumentException ex) { - } catch (InvocationTargetException wex) { - Throwable ex = wex.getTargetException(); - if (ex instanceof Error) throw (Error)ex; - if (ex instanceof RuntimeException) throw (RuntimeException)ex; - } catch (InstantiationException ex) { - } catch (IllegalAccessException ex) { - } - } - } - return null; - } - - static Adapter buildAdapterFromBytecodes(MethodType entryPointType) { - throw new UnsupportedOperationException("NYI: "+entryPointType); - } - - /** - * The invoke method takes some particular but unconstrained spread - * of raw argument types, and returns a raw return type (in L/I/J/F/D). - * Internally, it converts the incoming arguments uniformly into objects. - * This series of objects is then passed to the {@code target} method, - * which returns a result object. This result is finally converted, - * via another method handle {@code convert}, which is responsible for - * converting the object result into the raw return value. - */ - static abstract class Adapter extends BoundMethodHandle { - /* - * class X<<R,A...>> extends Adapter { - * Object...=>Object target; - * Object=>R convert; - * R invoke(A... a...) = convert(invoker(target, a...))) - * } - */ - protected final MethodHandle invoker; // (MH, Object...) -> Object - protected final MethodHandle target; // Object... -> Object - protected final MethodHandle convert; // Object -> R - - @Override - String debugString() { - return target == null ? "prototype:"+convert : addTypeString(target, this); - } - - protected boolean isPrototype() { return target == null; } - /* Prototype constructor. */ - protected Adapter(MethodHandle entryPoint) { - super(entryPoint); - this.invoker = null; - this.convert = entryPoint; - this.target = null; - assert(isPrototype()); - } - protected MethodHandle prototypeEntryPoint() { - if (!isPrototype()) throw new InternalError(); - return convert; - } - - protected Adapter(MethodHandle entryPoint, MethodHandle invoker, MethodHandle convert, MethodHandle target) { - super(entryPoint); - this.invoker = invoker; - this.convert = convert; - this.target = target; - } - - /** Make a copy of self, with new fields. */ - protected abstract Adapter makeInstance(MethodHandle entryPoint, - MethodHandle invoker, MethodHandle convert, MethodHandle target); - // { return new ThisType(entryPoint, convert, target); } - - // Code to run when the arguments (<= 4) have all been boxed. - protected Object target() throws Throwable { return invoker.invokeExact(target); } - protected Object target(Object a0) throws Throwable { return invoker.invokeExact(target, a0); } - protected Object target(Object a0, Object a1) - throws Throwable { return invoker.invokeExact(target, a0, a1); } - protected Object target(Object a0, Object a1, Object a2) - throws Throwable { return invoker.invokeExact(target, a0, a1, a2); } - protected Object target(Object a0, Object a1, Object a2, Object a3) - throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3); } - /* - protected Object target_0(Object... av) throws Throwable { return invoker.invokeExact(target, av); } - protected Object target_1(Object a0, Object... av) - throws Throwable { return invoker.invokeExact(target, a0, (Object)av); } - protected Object target_2(Object a0, Object a1, Object... av) - throws Throwable { return invoker.invokeExact(target, a0, a1, (Object)av); } - protected Object target_3(Object a0, Object a1, Object a2, Object... av) - throws Throwable { return invoker.invokeExact(target, a0, a1, a2, (Object)av); } - protected Object target_4(Object a0, Object a1, Object a2, Object a3, Object... av) - throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, (Object)av); } - // */ - // (For more than 4 arguments, generate the code in the adapter itself.) - - // Code to run when the generic target has finished and produced a value. - protected Object return_L(Object res) throws Throwable { return (Object)convert.invokeExact(res); } - protected int return_I(Object res) throws Throwable { return (int) convert.invokeExact(res); } - protected long return_J(Object res) throws Throwable { return (long) convert.invokeExact(res); } - protected float return_F(Object res) throws Throwable { return (float) convert.invokeExact(res); } - protected double return_D(Object res) throws Throwable { return (double)convert.invokeExact(res); } - - static private final String CLASS_PREFIX; // "java.lang.invoke.ToGeneric$" - static { - String aname = Adapter.class.getName(); - String sname = Adapter.class.getSimpleName(); - if (!aname.endsWith(sname)) throw new InternalError(); - CLASS_PREFIX = aname.substring(0, aname.length() - sname.length()); - } - /** Find a sibing class of Adapter. */ - static Class<? extends Adapter> findSubClass(String name) { - String cname = Adapter.CLASS_PREFIX + name; - try { - return Class.forName(cname).asSubclass(Adapter.class); - } catch (ClassNotFoundException ex) { - return null; - } catch (ClassCastException ex) { - return null; - } - } - } - - /* generated classes follow this pattern: - static class A1 extends Adapter { - protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); } - protected Object target(Object a0) throws Throwable { return invoker.invokeExact(target, a0); } - protected Object targetA1(Object a0) throws Throwable { return target(a0); } - protected Object targetA1(int a0) throws Throwable { return target(a0); } - protected Object targetA1(long a0) throws Throwable { return target(a0); } - protected Object invoke_L(Object a0) throws Throwable { return return_L(targetA1(a0)); } - protected int invoke_I(Object a0) throws Throwable { return return_I(targetA1(a0)); } - protected long invoke_J(Object a0) throws Throwable { return return_J(targetA1(a0)); } - protected float invoke_F(Object a0) throws Throwable { return return_F(targetA1(a0)); } - protected double invoke_D(Object a0) throws Throwable { return return_D(targetA1(a0)); } - protected Object invoke_L(int a0) throws Throwable { return return_L(targetA1(a0)); } - protected int invoke_I(int a0) throws Throwable { return return_I(targetA1(a0)); } - protected long invoke_J(int a0) throws Throwable { return return_J(targetA1(a0)); } - protected float invoke_F(int a0) throws Throwable { return return_F(targetA1(a0)); } - protected double invoke_D(int a0) throws Throwable { return return_D(targetA1(a0)); } - protected Object invoke_L(long a0) throws Throwable { return return_L(targetA1(a0)); } - protected int invoke_I(long a0) throws Throwable { return return_I(targetA1(a0)); } - protected long invoke_J(long a0) throws Throwable { return return_J(targetA1(a0)); } - protected float invoke_F(long a0) throws Throwable { return return_F(targetA1(a0)); } - protected double invoke_D(long a0) throws Throwable { return return_D(targetA1(a0)); } - } - // */ - -/* -: SHELL; n=ToGeneric; cp -p $n.java $n.java-; sed < $n.java- > $n.java+ -e '/{{*{{/,/}}*}}/w /tmp/genclasses.java' -e '/}}*}}/q'; (cd /tmp; javac -d . genclasses.java; java -cp . genclasses) >> $n.java+; echo '}' >> $n.java+; mv $n.java+ $n.java; mv $n.java- $n.java~ -//{{{ -import java.util.*; -class genclasses { - static String[] TYPES = { "Object", "int ", "long ", "float ", "double" }; - static String[] TCHARS = { "L", "I", "J", "F", "D", "A" }; - static String[][] TEMPLATES = { { - "@for@ arity=0..3 rcat<=4 nrefs<=99 nints<=99 nlongs<=99", - "@for@ arity=4..4 rcat<=4 nrefs<=99 nints<=99 nlongs<=99", - "@for@ arity=5..5 rcat<=2 nrefs<=99 nints<=99 nlongs<=99", - "@for@ arity=6..10 rcat<=2 nrefs<=99 nints=0 nlongs<=99", - " //@each-cat@", - " static class @cat@ extends Adapter {", - " protected @cat@(MethodHandle entryPoint) { super(entryPoint); } // to build prototype", - " protected @cat@(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); }", - " protected @cat@ makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new @cat@(e, i, c, t); }", - " protected Object target(@Ovav@) throws Throwable { return invoker.invokeExact(target@comma@@av@); }", - " //@each-Tv@", - " protected Object target@cat@(@Tvav@) throws Throwable { return target(@av@); }", - " //@end-Tv@", - " //@each-Tv@", - " //@each-R@", - " protected @R@ invoke_@Rc@(@Tvav@) throws Throwable { return return_@Rc@(target@cat@(@av@)); }", - " //@end-R@", - " //@end-Tv@", - " }", - } }; - enum VAR { - cat, R, Rc, Tv, av, comma, Tvav, Ovav; - public final String pattern = "@"+toString().replace('_','.')+"@"; - public String binding; - static void makeBindings(boolean topLevel, int rcat, int nrefs, int nints, int nlongs) { - int nargs = nrefs + nints + nlongs; - if (topLevel) - VAR.cat.binding = catstr(ALL_RETURN_TYPES ? TYPES.length : rcat, nrefs, nints, nlongs); - VAR.R.binding = TYPES[rcat]; - VAR.Rc.binding = TCHARS[rcat]; - String[] Tv = new String[nargs]; - String[] av = new String[nargs]; - String[] Tvav = new String[nargs]; - String[] Ovav = new String[nargs]; - for (int i = 0; i < nargs; i++) { - int tcat = (i < nrefs) ? 0 : (i < nrefs + nints) ? 1 : 2; - Tv[i] = TYPES[tcat]; - av[i] = arg(i); - Tvav[i] = param(Tv[i], av[i]); - Ovav[i] = param("Object", av[i]); - } - VAR.Tv.binding = comma(Tv); - VAR.av.binding = comma(av); - VAR.comma.binding = (av.length == 0 ? "" : ", "); - VAR.Tvav.binding = comma(Tvav); - VAR.Ovav.binding = comma(Ovav); - } - static String arg(int i) { return "a"+i; } - static String param(String t, String a) { return t+" "+a; } - static String comma(String[] v) { return comma("", v); } - static String comma(String sep, String[] v) { - if (v.length == 0) return ""; - String res = sep+v[0]; - for (int i = 1; i < v.length; i++) res += ", "+v[i]; - return res; - } - static String transform(String string) { - for (VAR var : values()) - string = string.replaceAll(var.pattern, var.binding); - return string; - } - } - static String[] stringsIn(String[] strings, int beg, int end) { - return Arrays.copyOfRange(strings, beg, Math.min(end, strings.length)); - } - static String[] stringsBefore(String[] strings, int pos) { - return stringsIn(strings, 0, pos); - } - static String[] stringsAfter(String[] strings, int pos) { - return stringsIn(strings, pos, strings.length); - } - static int indexAfter(String[] strings, int pos, String tag) { - return Math.min(indexBefore(strings, pos, tag) + 1, strings.length); - } - static int indexBefore(String[] strings, int pos, String tag) { - for (int i = pos, end = strings.length; ; i++) { - if (i == end || strings[i].endsWith(tag)) return i; - } - } - static int MIN_ARITY, MAX_ARITY, MAX_RCAT, MAX_REFS, MAX_INTS, MAX_LONGS; - static boolean ALL_ARG_TYPES, ALL_RETURN_TYPES; - static HashSet<String> done = new HashSet<String>(); - public static void main(String... av) { - for (String[] template : TEMPLATES) { - int forLinesLimit = indexBefore(template, 0, "@each-cat@"); - String[] forLines = stringsBefore(template, forLinesLimit); - template = stringsAfter(template, forLinesLimit); - for (String forLine : forLines) - expandTemplate(forLine, template); - } - } - static void expandTemplate(String forLine, String[] template) { - String[] params = forLine.split("[^0-9]+"); - if (params[0].length() == 0) params = stringsAfter(params, 1); - System.out.println("//params="+Arrays.asList(params)); - int pcur = 0; - MIN_ARITY = Integer.valueOf(params[pcur++]); - MAX_ARITY = Integer.valueOf(params[pcur++]); - MAX_RCAT = Integer.valueOf(params[pcur++]); - MAX_REFS = Integer.valueOf(params[pcur++]); - MAX_INTS = Integer.valueOf(params[pcur++]); - MAX_LONGS = Integer.valueOf(params[pcur++]); - if (pcur != params.length) throw new RuntimeException("bad extra param: "+forLine); - if (MAX_RCAT >= TYPES.length) MAX_RCAT = TYPES.length - 1; - ALL_ARG_TYPES = (indexBefore(template, 0, "@each-Tv@") < template.length); - ALL_RETURN_TYPES = (indexBefore(template, 0, "@each-R@") < template.length); - for (int nargs = MIN_ARITY; nargs <= MAX_ARITY; nargs++) { - for (int rcat = 0; rcat <= MAX_RCAT; rcat++) { - expandTemplate(template, true, rcat, nargs, 0, 0); - if (ALL_ARG_TYPES) break; - expandTemplateForPrims(template, true, rcat, nargs, 1, 1); - if (ALL_RETURN_TYPES) break; - } - } - } - static String catstr(int rcat, int nrefs, int nints, int nlongs) { - int nargs = nrefs + nints + nlongs; - String cat = TCHARS[rcat] + nargs; - if (!ALL_ARG_TYPES) cat += (nints==0?"":"I"+nints)+(nlongs==0?"":"J"+nlongs); - return cat; - } - static void expandTemplateForPrims(String[] template, boolean topLevel, int rcat, int nargs, int minints, int minlongs) { - for (int isLong = 0; isLong <= 1; isLong++) { - for (int nprims = 1; nprims <= nargs; nprims++) { - int nrefs = nargs - nprims; - int nints = ((1-isLong) * nprims); - int nlongs = (isLong * nprims); - expandTemplate(template, topLevel, rcat, nrefs, nints, nlongs); - } - } - } - static void expandTemplate(String[] template, boolean topLevel, - int rcat, int nrefs, int nints, int nlongs) { - int nargs = nrefs + nints + nlongs; - if (nrefs > MAX_REFS || nints > MAX_INTS || nlongs > MAX_LONGS) return; - VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs); - if (topLevel && !done.add(VAR.cat.binding)) { - System.out.println(" //repeat "+VAR.cat.binding); - return; - } - for (int i = 0; i < template.length; i++) { - String line = template[i]; - if (line.endsWith("@each-cat@")) { - // ignore - } else if (line.endsWith("@each-R@")) { - int blockEnd = indexAfter(template, i, "@end-R@"); - String[] block = stringsIn(template, i+1, blockEnd-1); - for (int rcat1 = rcat; rcat1 <= MAX_RCAT; rcat1++) - expandTemplate(block, false, rcat1, nrefs, nints, nlongs); - VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs); - i = blockEnd-1; continue; - } else if (line.endsWith("@each-Tv@")) { - int blockEnd = indexAfter(template, i, "@end-Tv@"); - String[] block = stringsIn(template, i+1, blockEnd-1); - expandTemplate(block, false, rcat, nrefs, nints, nlongs); - expandTemplateForPrims(block, false, rcat, nargs, nints+1, nlongs+1); - VAR.makeBindings(topLevel, rcat, nrefs, nints, nlongs); - i = blockEnd-1; continue; - } else { - System.out.println(VAR.transform(line)); - } - } - } -} -//}}} */ -//params=[0, 3, 4, 99, 99, 99] - static class A0 extends Adapter { - protected A0(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A0(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A0 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A0(e, i, c, t); } - protected Object target() throws Throwable { return invoker.invokeExact(target); } - protected Object targetA0() throws Throwable { return target(); } - protected Object invoke_L() throws Throwable { return return_L(targetA0()); } - protected int invoke_I() throws Throwable { return return_I(targetA0()); } - protected long invoke_J() throws Throwable { return return_J(targetA0()); } - protected float invoke_F() throws Throwable { return return_F(targetA0()); } - protected double invoke_D() throws Throwable { return return_D(targetA0()); } - } - static class A1 extends Adapter { - protected A1(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A1(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A1 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A1(e, i, c, t); } - protected Object target(Object a0) throws Throwable { return invoker.invokeExact(target, a0); } - protected Object targetA1(Object a0) throws Throwable { return target(a0); } - protected Object targetA1(int a0) throws Throwable { return target(a0); } - protected Object targetA1(long a0) throws Throwable { return target(a0); } - protected Object invoke_L(Object a0) throws Throwable { return return_L(targetA1(a0)); } - protected int invoke_I(Object a0) throws Throwable { return return_I(targetA1(a0)); } - protected long invoke_J(Object a0) throws Throwable { return return_J(targetA1(a0)); } - protected float invoke_F(Object a0) throws Throwable { return return_F(targetA1(a0)); } - protected double invoke_D(Object a0) throws Throwable { return return_D(targetA1(a0)); } - protected Object invoke_L(int a0) throws Throwable { return return_L(targetA1(a0)); } - protected int invoke_I(int a0) throws Throwable { return return_I(targetA1(a0)); } - protected long invoke_J(int a0) throws Throwable { return return_J(targetA1(a0)); } - protected float invoke_F(int a0) throws Throwable { return return_F(targetA1(a0)); } - protected double invoke_D(int a0) throws Throwable { return return_D(targetA1(a0)); } - protected Object invoke_L(long a0) throws Throwable { return return_L(targetA1(a0)); } - protected int invoke_I(long a0) throws Throwable { return return_I(targetA1(a0)); } - protected long invoke_J(long a0) throws Throwable { return return_J(targetA1(a0)); } - protected float invoke_F(long a0) throws Throwable { return return_F(targetA1(a0)); } - protected double invoke_D(long a0) throws Throwable { return return_D(targetA1(a0)); } - } - static class A2 extends Adapter { - protected A2(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A2(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A2 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A2(e, i, c, t); } - protected Object target(Object a0, Object a1) throws Throwable { return invoker.invokeExact(target, a0, a1); } - protected Object targetA2(Object a0, Object a1) throws Throwable { return target(a0, a1); } - protected Object targetA2(Object a0, int a1) throws Throwable { return target(a0, a1); } - protected Object targetA2(int a0, int a1) throws Throwable { return target(a0, a1); } - protected Object targetA2(Object a0, long a1) throws Throwable { return target(a0, a1); } - protected Object targetA2(long a0, long a1) throws Throwable { return target(a0, a1); } - protected Object invoke_L(Object a0, Object a1) throws Throwable { return return_L(targetA2(a0, a1)); } - protected int invoke_I(Object a0, Object a1) throws Throwable { return return_I(targetA2(a0, a1)); } - protected long invoke_J(Object a0, Object a1) throws Throwable { return return_J(targetA2(a0, a1)); } - protected float invoke_F(Object a0, Object a1) throws Throwable { return return_F(targetA2(a0, a1)); } - protected double invoke_D(Object a0, Object a1) throws Throwable { return return_D(targetA2(a0, a1)); } - protected Object invoke_L(Object a0, int a1) throws Throwable { return return_L(targetA2(a0, a1)); } - protected int invoke_I(Object a0, int a1) throws Throwable { return return_I(targetA2(a0, a1)); } - protected long invoke_J(Object a0, int a1) throws Throwable { return return_J(targetA2(a0, a1)); } - protected float invoke_F(Object a0, int a1) throws Throwable { return return_F(targetA2(a0, a1)); } - protected double invoke_D(Object a0, int a1) throws Throwable { return return_D(targetA2(a0, a1)); } - protected Object invoke_L(int a0, int a1) throws Throwable { return return_L(targetA2(a0, a1)); } - protected int invoke_I(int a0, int a1) throws Throwable { return return_I(targetA2(a0, a1)); } - protected long invoke_J(int a0, int a1) throws Throwable { return return_J(targetA2(a0, a1)); } - protected float invoke_F(int a0, int a1) throws Throwable { return return_F(targetA2(a0, a1)); } - protected double invoke_D(int a0, int a1) throws Throwable { return return_D(targetA2(a0, a1)); } - protected Object invoke_L(Object a0, long a1) throws Throwable { return return_L(targetA2(a0, a1)); } - protected int invoke_I(Object a0, long a1) throws Throwable { return return_I(targetA2(a0, a1)); } - protected long invoke_J(Object a0, long a1) throws Throwable { return return_J(targetA2(a0, a1)); } - protected float invoke_F(Object a0, long a1) throws Throwable { return return_F(targetA2(a0, a1)); } - protected double invoke_D(Object a0, long a1) throws Throwable { return return_D(targetA2(a0, a1)); } - protected Object invoke_L(long a0, long a1) throws Throwable { return return_L(targetA2(a0, a1)); } - protected int invoke_I(long a0, long a1) throws Throwable { return return_I(targetA2(a0, a1)); } - protected long invoke_J(long a0, long a1) throws Throwable { return return_J(targetA2(a0, a1)); } - protected float invoke_F(long a0, long a1) throws Throwable { return return_F(targetA2(a0, a1)); } - protected double invoke_D(long a0, long a1) throws Throwable { return return_D(targetA2(a0, a1)); } - } - static class A3 extends Adapter { - protected A3(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A3(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A3 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A3(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2) throws Throwable { return invoker.invokeExact(target, a0, a1, a2); } - protected Object targetA3(Object a0, Object a1, Object a2) throws Throwable { return target(a0, a1, a2); } - protected Object targetA3(Object a0, Object a1, int a2) throws Throwable { return target(a0, a1, a2); } - protected Object targetA3(Object a0, int a1, int a2) throws Throwable { return target(a0, a1, a2); } - protected Object targetA3(int a0, int a1, int a2) throws Throwable { return target(a0, a1, a2); } - protected Object targetA3(Object a0, Object a1, long a2) throws Throwable { return target(a0, a1, a2); } - protected Object targetA3(Object a0, long a1, long a2) throws Throwable { return target(a0, a1, a2); } - protected Object targetA3(long a0, long a1, long a2) throws Throwable { return target(a0, a1, a2); } - protected Object invoke_L(Object a0, Object a1, Object a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(Object a0, Object a1, Object a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(Object a0, Object a1, Object a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(Object a0, Object a1, Object a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(Object a0, Object a1, Object a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - protected Object invoke_L(Object a0, Object a1, int a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(Object a0, Object a1, int a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(Object a0, Object a1, int a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(Object a0, Object a1, int a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(Object a0, Object a1, int a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - protected Object invoke_L(Object a0, int a1, int a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(Object a0, int a1, int a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(Object a0, int a1, int a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(Object a0, int a1, int a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(Object a0, int a1, int a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - protected Object invoke_L(int a0, int a1, int a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(int a0, int a1, int a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(int a0, int a1, int a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(int a0, int a1, int a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(int a0, int a1, int a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - protected Object invoke_L(Object a0, Object a1, long a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(Object a0, Object a1, long a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(Object a0, Object a1, long a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(Object a0, Object a1, long a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(Object a0, Object a1, long a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - protected Object invoke_L(Object a0, long a1, long a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(Object a0, long a1, long a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(Object a0, long a1, long a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(Object a0, long a1, long a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(Object a0, long a1, long a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - protected Object invoke_L(long a0, long a1, long a2) throws Throwable { return return_L(targetA3(a0, a1, a2)); } - protected int invoke_I(long a0, long a1, long a2) throws Throwable { return return_I(targetA3(a0, a1, a2)); } - protected long invoke_J(long a0, long a1, long a2) throws Throwable { return return_J(targetA3(a0, a1, a2)); } - protected float invoke_F(long a0, long a1, long a2) throws Throwable { return return_F(targetA3(a0, a1, a2)); } - protected double invoke_D(long a0, long a1, long a2) throws Throwable { return return_D(targetA3(a0, a1, a2)); } - } -//params=[4, 4, 4, 99, 99, 99] - static class A4 extends Adapter { - protected A4(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A4(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A4 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A4(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3); } - protected Object targetA4(Object a0, Object a1, Object a2, Object a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(Object a0, Object a1, Object a2, int a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(Object a0, Object a1, int a2, int a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(Object a0, int a1, int a2, int a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(int a0, int a1, int a2, int a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(Object a0, Object a1, Object a2, long a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(Object a0, Object a1, long a2, long a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(Object a0, long a1, long a2, long a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object targetA4(long a0, long a1, long a2, long a3) throws Throwable { return target(a0, a1, a2, a3); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, Object a1, Object a2, Object a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(Object a0, Object a1, Object a2, int a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, Object a1, Object a2, int a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, Object a1, Object a2, int a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, Object a1, Object a2, int a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, Object a1, Object a2, int a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(Object a0, Object a1, int a2, int a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, Object a1, int a2, int a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, Object a1, int a2, int a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, Object a1, int a2, int a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, Object a1, int a2, int a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(Object a0, int a1, int a2, int a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, int a1, int a2, int a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, int a1, int a2, int a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, int a1, int a2, int a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, int a1, int a2, int a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(int a0, int a1, int a2, int a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(int a0, int a1, int a2, int a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(int a0, int a1, int a2, int a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(int a0, int a1, int a2, int a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(int a0, int a1, int a2, int a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, Object a1, Object a2, long a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, Object a1, Object a2, long a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, Object a1, long a2, long a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, Object a1, long a2, long a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(Object a0, long a1, long a2, long a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(Object a0, long a1, long a2, long a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(Object a0, long a1, long a2, long a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(Object a0, long a1, long a2, long a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - protected Object invoke_L(long a0, long a1, long a2, long a3) throws Throwable { return return_L(targetA4(a0, a1, a2, a3)); } - protected int invoke_I(long a0, long a1, long a2, long a3) throws Throwable { return return_I(targetA4(a0, a1, a2, a3)); } - protected long invoke_J(long a0, long a1, long a2, long a3) throws Throwable { return return_J(targetA4(a0, a1, a2, a3)); } - protected float invoke_F(long a0, long a1, long a2, long a3) throws Throwable { return return_F(targetA4(a0, a1, a2, a3)); } - protected double invoke_D(long a0, long a1, long a2, long a3) throws Throwable { return return_D(targetA4(a0, a1, a2, a3)); } - } -//params=[5, 5, 2, 99, 99, 99] - static class A5 extends Adapter { - protected A5(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A5(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A5 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A5(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, Object a2, Object a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, Object a2, int a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, int a2, int a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, int a1, int a2, int a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(int a0, int a1, int a2, int a3, int a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, Object a2, Object a3, long a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, Object a2, long a3, long a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, Object a1, long a2, long a3, long a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(Object a0, long a1, long a2, long a3, long a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object targetA5(long a0, long a1, long a2, long a3, long a4) throws Throwable { return target(a0, a1, a2, a3, a4); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, int a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, int a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, int a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, Object a1, Object a2, int a3, int a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, Object a2, int a3, int a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, Object a2, int a3, int a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, Object a1, int a2, int a3, int a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, int a2, int a3, int a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, int a2, int a3, int a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, int a1, int a2, int a3, int a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, int a1, int a2, int a3, int a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, int a1, int a2, int a3, int a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(int a0, int a1, int a2, int a3, int a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(int a0, int a1, int a2, int a3, int a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(int a0, int a1, int a2, int a3, int a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, long a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, long a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3, long a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3, long a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3, long a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3, long a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3, long a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3, long a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3, long a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(Object a0, long a1, long a2, long a3, long a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(Object a0, long a1, long a2, long a3, long a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - protected Object invoke_L(long a0, long a1, long a2, long a3, long a4) throws Throwable { return return_L(targetA5(a0, a1, a2, a3, a4)); } - protected int invoke_I(long a0, long a1, long a2, long a3, long a4) throws Throwable { return return_I(targetA5(a0, a1, a2, a3, a4)); } - protected long invoke_J(long a0, long a1, long a2, long a3, long a4) throws Throwable { return return_J(targetA5(a0, a1, a2, a3, a4)); } - } -//params=[6, 10, 2, 99, 0, 99] - static class A6 extends Adapter { - protected A6(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A6(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A6 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A6(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5); } - protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object targetA6(Object a0, Object a1, Object a2, Object a3, Object a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object targetA6(Object a0, Object a1, Object a2, Object a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object targetA6(Object a0, Object a1, Object a2, long a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object targetA6(Object a0, Object a1, long a2, long a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object targetA6(Object a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object targetA6(long a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return target(a0, a1, a2, a3, a4, a5); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long a4, long a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, long a4, long a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, long a4, long a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3, long a4, long a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3, long a4, long a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3, long a4, long a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3, long a4, long a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3, long a4, long a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3, long a4, long a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(Object a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(Object a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - protected Object invoke_L(long a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return return_L(targetA6(a0, a1, a2, a3, a4, a5)); } - protected int invoke_I(long a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return return_I(targetA6(a0, a1, a2, a3, a4, a5)); } - protected long invoke_J(long a0, long a1, long a2, long a3, long a4, long a5) throws Throwable { return return_J(targetA6(a0, a1, a2, a3, a4, a5)); } - } - static class A7 extends Adapter { - protected A7(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A7(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A7 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A7(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(Object a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object targetA7(long a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(Object a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(Object a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected Object invoke_L(long a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_L(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected int invoke_I(long a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_I(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - protected long invoke_J(long a0, long a1, long a2, long a3, long a4, long a5, long a6) throws Throwable { return return_J(targetA7(a0, a1, a2, a3, a4, a5, a6)); } - } - static class A8 extends Adapter { - protected A8(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A8(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A8 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A8(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object targetA8(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected Object invoke_L(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_L(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected int invoke_I(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_I(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - protected long invoke_J(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7) throws Throwable { return return_J(targetA8(a0, a1, a2, a3, a4, a5, a6, a7)); } - } - static class A9 extends Adapter { - protected A9(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A9(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A9 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A9(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object targetA9(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected Object invoke_L(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_L(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected int invoke_I(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_I(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - protected long invoke_J(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) throws Throwable { return return_J(targetA9(a0, a1, a2, a3, a4, a5, a6, a7, a8)); } - } - static class A10 extends Adapter { - protected A10(MethodHandle entryPoint) { super(entryPoint); } // to build prototype - protected A10(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { super(e, i, c, t); } - protected A10 makeInstance(MethodHandle e, MethodHandle i, MethodHandle c, MethodHandle t) { return new A10(e, i, c, t); } - protected Object target(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return invoker.invokeExact(target, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object targetA10(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return target(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, Object a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, Object a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, Object a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, Object a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, Object a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, Object a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, Object a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, Object a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, Object a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(Object a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected Object invoke_L(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_L(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected int invoke_I(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_I(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - protected long invoke_J(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8, long a9) throws Throwable { return return_J(targetA10(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)); } - } -}
--- a/src/share/classes/javax/swing/plaf/basic/BasicComboPopup.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/plaf/basic/BasicComboPopup.java Fri Aug 05 16:03:00 2011 -0700 @@ -63,8 +63,7 @@ public class BasicComboPopup extends JPopupMenu implements ComboPopup { // An empty ListMode, this is used when the UI changes to allow // the JList to be gc'ed. - private static class EmptyListModelClass implements ListModel, - Serializable { + private static class EmptyListModelClass implements ListModel<Object>, Serializable { public int getSize() { return 0; } public Object getElementAt(int index) { return null; } public void addListDataListener(ListDataListener l) {}
--- a/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java Fri Aug 05 16:03:00 2011 -0700 @@ -810,10 +810,7 @@ putValue(Action.ACTION_COMMAND_KEY, FilePane.ACTION_CHANGE_TO_PARENT_DIRECTORY); } public void actionPerformed(ActionEvent e) { - Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); - if (focusOwner == null || !(focusOwner instanceof javax.swing.text.JTextComponent)) { - getFileChooser().changeToParentDirectory(); - } + getFileChooser().changeToParentDirectory(); } }
--- a/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/plaf/synth/SynthComboBoxUI.java Fri Aug 05 16:03:00 2011 -0700 @@ -444,7 +444,7 @@ * renderer installed on a Synth combo box is a JLabel. If this is changed, * then an assert will fail in SynthFileChooserUIImpl */ - private class SynthComboBoxRenderer extends JLabel implements ListCellRenderer, UIResource { + private class SynthComboBoxRenderer extends JLabel implements ListCellRenderer<Object>, UIResource { public SynthComboBoxRenderer() { super(); setName("ComboBox.renderer"); @@ -452,7 +452,7 @@ } @Override - public Component getListCellRendererComponent(JList list, Object value, + public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setName("ComboBox.listRenderer"); SynthLookAndFeel.resetSelectedUI();
--- a/src/share/classes/javax/swing/text/html/FormView.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Fri Aug 05 16:03:00 2011 -0700 @@ -725,11 +725,11 @@ } Object m = attr.getAttribute(StyleConstants.ModelAttribute); if (m instanceof OptionListModel) { - OptionListModel model = (OptionListModel)m; + OptionListModel<Option> model = (OptionListModel<Option>) m; for (int i = 0; i < model.getSize(); i++) { if (model.isSelectedIndex(i)) { - Option option = (Option) model.getElementAt(i); + Option option = model.getElementAt(i); appendBuffer(buffer, name, option.getValue()); } }
--- a/src/share/classes/javax/swing/text/html/HTMLDocument.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/text/html/HTMLDocument.java Fri Aug 05 16:03:00 2011 -0700 @@ -3358,13 +3358,13 @@ 1); boolean multiple = attr.getAttribute(HTML.Attribute.MULTIPLE) != null; if ((size > 1) || multiple) { - OptionListModel m = new OptionListModel(); + OptionListModel<Option> m = new OptionListModel<Option>(); if (multiple) { m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); } selectModel = m; } else { - selectModel = new OptionComboBoxModel(); + selectModel = new OptionComboBoxModel<Option>(); } attr.addAttribute(StyleConstants.ModelAttribute, selectModel); @@ -3376,14 +3376,14 @@ option = new Option(attr); if (selectModel instanceof OptionListModel) { - OptionListModel m = (OptionListModel)selectModel; + OptionListModel<Option> m = (OptionListModel<Option>) selectModel; m.addElement(option); if (option.isSelected()) { m.addSelectionInterval(optionCount, optionCount); m.setInitialSelection(optionCount); } } else if (selectModel instanceof OptionComboBoxModel) { - OptionComboBoxModel m = (OptionComboBoxModel)selectModel; + OptionComboBoxModel<Option> m = (OptionComboBoxModel<Option>) selectModel; m.addElement(option); if (option.isSelected()) { m.setSelectedItem(option);
--- a/src/share/classes/javax/swing/text/html/HTMLWriter.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/text/html/HTMLWriter.java Fri Aug 05 16:03:00 2011 -0700 @@ -527,17 +527,17 @@ Object model = attr.getAttribute(StyleConstants.ModelAttribute); incrIndent(); if (model instanceof OptionListModel) { - OptionListModel listModel = (OptionListModel)model; + OptionListModel<Option> listModel = (OptionListModel<Option>) model; int size = listModel.getSize(); for (int i = 0; i < size; i++) { - Option option = (Option)listModel.getElementAt(i); + Option option = listModel.getElementAt(i); writeOption(option); } } else if (model instanceof OptionComboBoxModel) { - OptionComboBoxModel comboBoxModel = (OptionComboBoxModel)model; + OptionComboBoxModel<Option> comboBoxModel = (OptionComboBoxModel<Option>) model; int size = comboBoxModel.getSize(); for (int i = 0; i < size; i++) { - Option option = (Option)comboBoxModel.getElementAt(i); + Option option = comboBoxModel.getElementAt(i); writeOption(option); } }
--- a/src/share/classes/javax/swing/text/html/OptionComboBoxModel.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/text/html/OptionComboBoxModel.java Fri Aug 05 16:03:00 2011 -0700 @@ -25,7 +25,6 @@ package javax.swing.text.html; import javax.swing.*; -import javax.swing.event.*; import java.io.Serializable; @@ -41,7 +40,7 @@ @author Sunita Mani */ -class OptionComboBoxModel extends DefaultComboBoxModel implements Serializable { +class OptionComboBoxModel<E> extends DefaultComboBoxModel<E> implements Serializable { private Option selectedOption = null;
--- a/src/share/classes/javax/swing/text/html/OptionListModel.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/javax/swing/text/html/OptionListModel.java Fri Aug 05 16:03:00 2011 -0700 @@ -26,7 +26,6 @@ import javax.swing.*; import javax.swing.event.*; -import java.util.EventListener; import java.util.BitSet; import java.io.Serializable; @@ -44,7 +43,7 @@ @author Sunita Mani */ -class OptionListModel extends DefaultListModel implements ListSelectionModel, Serializable { +class OptionListModel<E> extends DefaultListModel<E> implements ListSelectionModel, Serializable { private static final int MIN = -1;
--- a/src/share/classes/sun/awt/AWTAccessor.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/sun/awt/AWTAccessor.java Fri Aug 05 16:03:00 2011 -0700 @@ -25,15 +25,12 @@ package sun.awt; +import sun.misc.Unsafe; + import java.awt.*; import java.awt.event.InputEvent; import java.awt.geom.Point2D; -import java.awt.image.BufferedImage; - -import sun.misc.Unsafe; import java.awt.peer.ComponentPeer; - -import java.security.AccessController; import java.security.AccessControlContext; /** @@ -471,6 +468,17 @@ } /* + * An accessor for the ScrollPaneAdjustable class. + */ + public interface ScrollPaneAdjustableAccessor { + /* + * Sets the value of this scrollbar to the specified value. + */ + void setTypedValue(final ScrollPaneAdjustable adj, final int v, + final int type); + } + + /* * Accessor instances are initialized in the static initializers of * corresponding AWT classes by using setters defined below. */ @@ -485,6 +493,7 @@ private static EventQueueAccessor eventQueueAccessor; private static PopupMenuAccessor popupMenuAccessor; private static FileDialogAccessor fileDialogAccessor; + private static ScrollPaneAdjustableAccessor scrollPaneAdjustableAccessor; /* * Set an accessor object for the java.awt.Component class. @@ -675,4 +684,21 @@ return fileDialogAccessor; } + /* + * Set an accessor object for the java.awt.ScrollPaneAdjustable class. + */ + public static void setScrollPaneAdjustableAccessor(ScrollPaneAdjustableAccessor adj) { + scrollPaneAdjustableAccessor = adj; + } + + /* + * Retrieve the accessor object for the java.awt.ScrollPaneAdjustable + * class. + */ + public static ScrollPaneAdjustableAccessor getScrollPaneAdjustableAccessor() { + if (scrollPaneAdjustableAccessor == null) { + unsafe.ensureClassInitialized(ScrollPaneAdjustable.class); + } + return scrollPaneAdjustableAccessor; + } }
--- a/src/share/classes/sun/java2d/pipe/RenderingEngine.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/sun/java2d/pipe/RenderingEngine.java Fri Aug 05 16:03:00 2011 -0700 @@ -127,12 +127,8 @@ try { Class cls = Class.forName(ductusREClass); return cls.newInstance(); - } catch (ClassNotFoundException x) { + } catch (ReflectiveOperationException ignored) { // not found - } catch (IllegalAccessException x) { - // should not reach here - } catch (InstantiationException x) { - // should not reach here } }
--- a/src/share/classes/sun/swing/FilePane.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/sun/swing/FilePane.java Fri Aug 05 16:03:00 2011 -0700 @@ -570,7 +570,7 @@ public JPanel createList() { JPanel p = new JPanel(new BorderLayout()); final JFileChooser fileChooser = getFileChooser(); - final JList list = new JList() { + final JList<Object> list = new JList<Object>() { public int getNextMatch(String prefix, int startIndex, Position.Bias bias) { ListModel model = getModel(); int max = model.getSize(); @@ -641,7 +641,7 @@ /** * This model allows for sorting JList */ - private class SortableListModel extends AbstractListModel + private class SortableListModel extends AbstractListModel<Object> implements TableModelListener, RowSorterListener { public SortableListModel() {
--- a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java Fri Aug 05 16:03:00 2011 -0700 @@ -60,7 +60,7 @@ */ public class SynthFileChooserUIImpl extends SynthFileChooserUI { private JLabel lookInLabel; - private JComboBox directoryComboBox; + private JComboBox<File> directoryComboBox; private DirectoryComboBoxModel directoryComboBoxModel; private Action directoryComboBoxAction = new DirectoryComboBoxAction(); @@ -77,10 +77,9 @@ private JPanel buttonPanel; private JPanel bottomPanel; - private JComboBox filterComboBox; + private JComboBox<FileFilter> filterComboBox; private static final Dimension hstrut5 = new Dimension(5, 1); - private static final Dimension vstrut5 = new Dimension(1, 5); private static final Insets shrinkwrap = new Insets(0,0,0,0); @@ -217,7 +216,7 @@ topPanel.add(lookInLabel, BorderLayout.BEFORE_LINE_BEGINS); // CurrentDir ComboBox - directoryComboBox = new JComboBox(); + directoryComboBox = new JComboBox<File>(); directoryComboBox.getAccessibleContext().setAccessibleDescription(lookInLabelText); directoryComboBox.putClientProperty( "JComboBox.isTableCellEditor", Boolean.TRUE ); lookInLabel.setLabelFor(directoryComboBox); @@ -394,7 +393,7 @@ filterComboBoxModel = createFilterComboBoxModel(); fc.addPropertyChangeListener(filterComboBoxModel); - filterComboBox = new JComboBox(filterComboBoxModel); + filterComboBox = new JComboBox<FileFilter>(filterComboBoxModel); filterComboBox.getAccessibleContext().setAccessibleDescription(filesOfTypeLabelText); filesOfTypeLabel.setLabelFor(filterComboBox); filterComboBox.setRenderer(createFilterComboBoxRenderer()); @@ -671,16 +670,16 @@ // looking combo boxes. // So what we do here is delegate most jobs to the "real" or original renderer, // and simply monkey with the icon and text of the renderer. - private class DirectoryComboBoxRenderer implements ListCellRenderer { - private ListCellRenderer delegate; + private class DirectoryComboBoxRenderer implements ListCellRenderer<File> { + private ListCellRenderer<? super File> delegate; IndentIcon ii = new IndentIcon(); - private DirectoryComboBoxRenderer(ListCellRenderer delegate) { + private DirectoryComboBoxRenderer(ListCellRenderer<? super File> delegate) { this.delegate = delegate; } @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + public Component getListCellRendererComponent(JList<? extends File> list, File value, int index, boolean isSelected, boolean cellHasFocus) { Component c = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); assert c instanceof JLabel; @@ -689,9 +688,8 @@ label.setText(""); return label; } - File directory = (File) value; - label.setText(getFileChooser().getName(directory)); - Icon icon = getFileChooser().getIcon(directory); + label.setText(getFileChooser().getName(value)); + Icon icon = getFileChooser().getIcon(value); ii.icon = icon; ii.depth = directoryComboBoxModel.getDepth(index); label.setIcon(ii); @@ -736,7 +734,7 @@ /** * Data model for a type-face selection combo-box. */ - protected class DirectoryComboBoxModel extends AbstractListModel implements ComboBoxModel { + protected class DirectoryComboBoxModel extends AbstractListModel<File> implements ComboBoxModel<File> { Vector<File> directories = new Vector<File>(); int[] depths = null; File selectedDirectory = null; @@ -857,7 +855,7 @@ return directories.size(); } - public Object getElementAt(int index) { + public File getElementAt(int index) { return directories.elementAt(index); } } @@ -890,18 +888,19 @@ /** * Render different type sizes and styles. */ - public class FilterComboBoxRenderer implements ListCellRenderer { - private ListCellRenderer delegate; - private FilterComboBoxRenderer(ListCellRenderer delegate) { + public class FilterComboBoxRenderer implements ListCellRenderer<FileFilter> { + private ListCellRenderer<? super FileFilter> delegate; + private FilterComboBoxRenderer(ListCellRenderer<? super FileFilter> delegate) { this.delegate = delegate; } - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + public Component getListCellRendererComponent(JList<? extends FileFilter> list, FileFilter value, int index, + boolean isSelected, boolean cellHasFocus) { Component c = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); String text = null; - if (value != null && value instanceof FileFilter) { - text = ((FileFilter) value).getDescription(); + if (value != null) { + text = value.getDescription(); } //this should always be true, since SynthComboBoxUI's SynthComboBoxRenderer @@ -924,7 +923,8 @@ /** * Data model for a type-face selection combo-box. */ - protected class FilterComboBoxModel extends AbstractListModel implements ComboBoxModel, PropertyChangeListener { + protected class FilterComboBoxModel extends AbstractListModel<FileFilter> implements ComboBoxModel<FileFilter>, + PropertyChangeListener { protected FileFilter[] filters; protected FilterComboBoxModel() { super(); @@ -977,7 +977,7 @@ } } - public Object getElementAt(int index) { + public FileFilter getElementAt(int index) { if(index > getSize() - 1) { // This shouldn't happen. Try to recover gracefully. return getFileChooser().getFileFilter();
--- a/src/share/classes/sun/swing/text/TextComponentPrintable.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/sun/swing/text/TextComponentPrintable.java Fri Aug 05 16:03:00 2011 -0700 @@ -47,15 +47,7 @@ import java.util.concurrent.FutureTask; import java.util.concurrent.atomic.AtomicReference; -import javax.swing.BorderFactory; -import javax.swing.CellRendererPane; -import javax.swing.JTextField; -import javax.swing.JTextArea; -import javax.swing.JEditorPane; -import javax.swing.JViewport; -import javax.swing.JScrollPane; -import javax.swing.JTextPane; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.TitledBorder; import javax.swing.text.BadLocationException; @@ -336,7 +328,22 @@ assert SwingUtilities.isEventDispatchThread(); JTextComponent ret = null; - if (textComponent instanceof JTextField) { + if (textComponent instanceof JPasswordField) { + ret = + new JPasswordField() { + { + setEchoChar(((JPasswordField) textComponent).getEchoChar()); + setHorizontalAlignment( + ((JTextField) textComponent).getHorizontalAlignment()); + } + @Override + public FontMetrics getFontMetrics(Font font) { + return (frc.get() == null) + ? super.getFontMetrics(font) + : FontDesignMetrics.getMetrics(font, frc.get()); + } + }; + } else if (textComponent instanceof JTextField) { ret = new JTextField() { {
--- a/src/share/classes/sun/text/bidi/BidiBase.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/classes/sun/text/bidi/BidiBase.java Fri Aug 05 16:03:00 2011 -0700 @@ -2690,6 +2690,7 @@ public void setPara(AttributedCharacterIterator paragraph) { byte paraLvl; + char ch = paragraph.first(); Boolean runDirection = (Boolean) paragraph.getAttribute(TextAttributeConstants.RUN_DIRECTION); Object shaper = paragraph.getAttribute(TextAttributeConstants.NUMERIC_SHAPING); @@ -2705,7 +2706,6 @@ byte[] embeddingLevels = new byte[len]; char[] txt = new char[len]; int i = 0; - char ch = paragraph.first(); while (ch != AttributedCharacterIterator.DONE) { txt[i] = ch; Integer embedding = @@ -3411,18 +3411,21 @@ * Display the bidi internal state, used in debugging. */ public String toString() { - StringBuffer buf = new StringBuffer(super.toString()); + StringBuilder buf = new StringBuilder(getClass().getName()); - buf.append("[dir: " + direction); - buf.append(" baselevel: " + paraLevel); - buf.append(" length: " + length); + buf.append("[dir: "); + buf.append(direction); + buf.append(" baselevel: "); + buf.append(paraLevel); + buf.append(" length: "); + buf.append(length); buf.append(" runs: "); if (levels == null) { - buf.append("null"); + buf.append("none"); } else { buf.append('['); buf.append(levels[0]); - for (int i = 0; i < levels.length; i++) { + for (int i = 1; i < levels.length; i++) { buf.append(' '); buf.append(levels[i]); } @@ -3430,12 +3433,11 @@ } buf.append(" text: [0x"); buf.append(Integer.toHexString(text[0])); - for (int i = 0; i < text.length; i++) { + for (int i = 1; i < text.length; i++) { buf.append(" 0x"); buf.append(Integer.toHexString(text[i])); } - buf.append(']'); - buf.append(']'); + buf.append("]]"); return buf.toString(); }
--- a/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h Thu Aug 04 08:53:16 2011 -0700 +++ b/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h Fri Aug 05 16:03:00 2011 -0700 @@ -30,6 +30,8 @@ extern "C" { #endif +#include <stddef.h> + #include "java_awt_AlphaComposite.h" #include "SurfaceData.h" @@ -484,7 +486,9 @@ #define ArraySize(A) (sizeof(A) / sizeof(A[0])) #define PtrAddBytes(p, b) ((void *) (((intptr_t) (p)) + (b))) -#define PtrCoord(p, x, xinc, y, yinc) PtrAddBytes(p, (y)*(yinc) + (x)*(xinc)) +#define PtrCoord(p, x, xinc, y, yinc) PtrAddBytes(p, \ + ((ptrdiff_t)(y))*(yinc) + \ + ((ptrdiff_t)(x))*(xinc)) /* * The function to call with an array of NativePrimitive structures
--- a/src/solaris/classes/sun/awt/X11/XButtonPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XButtonPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -33,12 +33,9 @@ import javax.swing.plaf.basic.*; import javax.swing.SwingUtilities; import javax.swing.SwingConstants; - public class XButtonPeer extends XComponentPeer implements ButtonPeer { - - boolean pressed; - boolean armed; - + private boolean pressed; + private boolean armed; private Insets focusInsets; private Insets borderInsets; private Insets contentAreaInsets; @@ -86,11 +83,6 @@ this.label = label; repaint(); } - - public void paint(Graphics g) { - paint(g,target); - } - public void setBackground(Color c) { updateMotifColors(c); super.setBackground(c); @@ -133,16 +125,10 @@ case MouseEvent.MOUSE_ENTERED: if (pressed) armed = true; -// repaint(); - break; - case MouseEvent.MOUSE_EXITED: armed = false; -// repaint(); - break; - } } @@ -209,18 +195,14 @@ public Dimension minimumSize() { return getMinimumSize(); } - - - /* - This method is called from Toolkit Thread and so it should not call any client code - - */ - public void paint(Graphics g, Component c) - { - if (!disposed && (g != null)) - { + /** + * This method is called from Toolkit Thread and so it should not call any + * client code. + */ + @Override + void paintPeer(final Graphics g) { + if (!disposed) { Dimension size = getPeerSize(); - g.setColor( getPeerBackground() ); /* erase the existing button remains */ g.fillRect(0,0, size.width , size.height); paintBorder(g,borderInsets.left, @@ -239,11 +221,9 @@ viewRect.width = size.width - (contentAreaInsets.left+contentAreaInsets.right); viewRect.height = size.height - (contentAreaInsets.top+contentAreaInsets.bottom); - viewRect.x = contentAreaInsets.left; - viewRect.y = contentAreaInsets.right; + viewRect.y = contentAreaInsets.top; String llabel = (label != null) ? label : ""; - // layout the text and icon String text = SwingUtilities.layoutCompoundLabel( fm, llabel, null, @@ -309,10 +289,9 @@ else { /*** paint the text disabled ***/ g.setColor(getPeerBackground().brighter()); - BasicGraphicsUtils.drawStringUnderlineCharAt(g,text, mnemonicIndex, textRect.x, textRect.y + fm.getAscent()); - g.setColor(c.getBackground().darker()); + g.setColor(getPeerBackground().darker()); BasicGraphicsUtils.drawStringUnderlineCharAt(g,text, mnemonicIndex, textRect.x - 1, textRect.y + fm.getAscent() - 1); }
--- a/src/solaris/classes/sun/awt/X11/XCheckboxPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XCheckboxPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -297,40 +297,33 @@ double fsize = (double) checkBoxSize; myCheckMark = AffineTransform.getScaleInstance(fsize / MASTER_SIZE, fsize / MASTER_SIZE).createTransformedShape(MASTER_CHECKMARK); - } - - public void paint(Graphics g) { - if (g != null) { - //layout(); - Dimension size = getPeerSize(); - Font f = getPeerFont(); - - flush(); - g.setColor(getPeerBackground()); // erase the existing button - g.fillRect(0,0, size.width, size.height); + @Override + void paintPeer(final Graphics g) { + //layout(); + Dimension size = getPeerSize(); + Font f = getPeerFont(); + flush(); + g.setColor(getPeerBackground()); // erase the existing button + g.fillRect(0,0, size.width, size.height); + if (label != null) { + g.setFont(f); + paintText(g, textRect, label); + } - if (label != null) { - g.setFont(f); - paintText(g, textRect, label); - } - - if (hasFocus()) { - paintFocus(g, - focusRect.x, - focusRect.y, - focusRect.width, - focusRect.height); - } - - // Paint the checkbox or radio button - if (checkBoxGroup == null) { - paintCheckbox(g, cbX, cbY, checkBoxSize, checkBoxSize); - } - else { - paintRadioButton(g, cbX, cbY, checkBoxSize, checkBoxSize); - } - + if (hasFocus()) { + paintFocus(g, + focusRect.x, + focusRect.y, + focusRect.width, + focusRect.height); + } + // Paint the checkbox or radio button + if (checkBoxGroup == null) { + paintCheckbox(g, cbX, cbY, checkBoxSize, checkBoxSize); + } + else { + paintRadioButton(g, cbX, cbY, checkBoxSize, checkBoxSize); } flush(); }
--- a/src/solaris/classes/sun/awt/X11/XChoicePeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XChoicePeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -550,10 +550,10 @@ /** * Paint the choice */ - public void paint(Graphics g) { + @Override + void paintPeer(final Graphics g) { flush(); Dimension size = getPeerSize(); - // TODO: when mouse is down over button, widget should be drawn depressed g.setColor(getPeerBackground()); g.fillRect(0, 0, width, height); @@ -912,16 +912,22 @@ /* * fillRect with current Background color on the whole dropdown list. */ - public void paintBackground(){ - Graphics g = getGraphics(); - g.setColor(getPeerBackground()); - g.fillRect(0, 0, width, height); + public void paintBackground() { + final Graphics g = getGraphics(); + if (g != null) { + try { + g.setColor(getPeerBackground()); + g.fillRect(0, 0, width, height); + } finally { + g.dispose(); + } + } } - /* * 6405689. In some cases we should erase background to eliminate painting * artefacts. */ + @Override public void repaint() { if (!isVisible()) { return; @@ -931,8 +937,8 @@ } super.repaint(); } - - public void paint(Graphics g) { + @Override + public void paintPeer(Graphics g) { //System.out.println("UC.paint()"); Choice choice = (Choice)target; Color colors[] = XChoicePeer.this.getGUIcolors();
--- a/src/solaris/classes/sun/awt/X11/XComponentPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XComponentPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -38,7 +38,6 @@ import java.awt.GraphicsConfiguration; import java.awt.Image; import java.awt.Insets; -import java.awt.KeyboardFocusManager; import java.awt.Rectangle; import java.awt.SystemColor; import java.awt.Toolkit; @@ -59,15 +58,11 @@ import java.awt.image.VolatileImage; import java.awt.peer.ComponentPeer; import java.awt.peer.ContainerPeer; -import java.awt.peer.LightweightPeer; import java.lang.reflect.*; import java.security.*; import java.util.Collection; -import java.util.HashSet; import java.util.Set; -import java.util.Vector; import sun.util.logging.PlatformLogger; - import sun.awt.*; import sun.awt.event.IgnorePaintEvent; import sun.awt.image.SunVolatileImage; @@ -428,27 +423,23 @@ public void disable() { setEnabled(false); } - - public void paint(Graphics g) { + @Override + public void paint(final Graphics g) { + super.paint(g); + // allow target to change the picture + target.paint(g); } - public void repaint(long tm, int x, int y, int width, int height) { - repaint(); - } - public Graphics getGraphics() { return getGraphics(surfaceData, getPeerForeground(), getPeerBackground(), getPeerFont()); } - - - public void print(Graphics g) { // clear rect here to emulate X clears rect before Expose g.setColor(target.getBackground()); g.fillRect(0, 0, target.getWidth(), target.getHeight()); g.setColor(target.getForeground()); // paint peer - paint(g); + paintPeer(g); // allow target to change the picture target.print(g); }
--- a/src/solaris/classes/sun/awt/X11/XLabelPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XLabelPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -85,7 +85,8 @@ */ // NOTE: This method is called by privileged threads. // DO NOT INVOKE CLIENT CODE ON THIS THREAD! - public void paint(Graphics g) { + @Override + void paintPeer(final Graphics g) { int textX = 0; int textY = 0; g.setColor(getPeerBackground());
--- a/src/solaris/classes/sun/awt/X11/XListPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XListPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -363,9 +363,7 @@ return Math.min(items.size()-1, itemsInWindow()-1); } } - public void repaintScrollbarRequest(XScrollbar scrollbar) { - Graphics g = getGraphics(); if (scrollbar == hsb) { repaint(PAINT_HSCROLL); } @@ -373,9 +371,6 @@ repaint(PAINT_VSCROLL); } } - - - /** * Overridden for performance */ @@ -410,18 +405,20 @@ * @param distance the distance to copy the source area */ private void repaint(int firstItem, int lastItem, int options, Rectangle source, Point distance) { - Graphics g = getGraphics(); - try { - painter.paint(g, firstItem, lastItem, options, source, distance); - } finally { - g.dispose(); + final Graphics g = getGraphics(); + if (g != null) { + try { + painter.paint(g, firstItem, lastItem, options, source, distance); + target.paint(g); + } finally { + g.dispose(); + } } } - - public void paint(Graphics g) { + @Override + void paintPeer(final Graphics g) { painter.paint(g, getFirstVisibleItem(), getLastVisibleItem(), PAINT_ALL); } - public boolean isFocusable() { return true; } // TODO: share/promote the Focus methods?
--- a/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -415,7 +415,7 @@ * Overriden XWindow painting & printing * ************************************************/ - public void paint(Graphics g) { + public void paintPeer(Graphics g) { resetColors(); /* Calculate menubar dimension. */ int width = getWidth();
--- a/src/solaris/classes/sun/awt/X11/XMenuWindow.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XMenuWindow.java Fri Aug 05 16:03:00 2011 -0700 @@ -432,9 +432,9 @@ /** * Paints menu window */ - public void paint(Graphics g) { + @Override + public void paintPeer(Graphics g) { resetColors(); - int width = getWidth(); int height = getHeight();
--- a/src/solaris/classes/sun/awt/X11/XPanelPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XPanelPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -60,14 +60,13 @@ public Insets getInsets() { return new Insets(0, 0, 0, 0); } - public void paint(Graphics g) { super.paint(g); - /* SunGraphicsCallback.PaintHeavyweightComponentsCallback.getInstance(). - runComponents(((Container)target).getComponents(), g, - SunGraphicsCallback.LIGHTWEIGHTS | - SunGraphicsCallback.HEAVYWEIGHTS); - */ } + SunGraphicsCallback.PaintHeavyweightComponentsCallback.getInstance(). + runComponents(((Container)target).getComponents(), g, + SunGraphicsCallback.LIGHTWEIGHTS | + SunGraphicsCallback.HEAVYWEIGHTS); + } public void print(Graphics g) { super.print(g); SunGraphicsCallback.PrintHeavyweightComponentsCallback.getInstance().
--- a/src/solaris/classes/sun/awt/X11/XRepaintArea.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XRepaintArea.java Fri Aug 05 16:03:00 2011 -0700 @@ -53,9 +53,9 @@ */ protected void updateComponent(Component comp, Graphics g) { if (comp != null) { - ComponentPeer peer = comp.getPeer(); + final XComponentPeer peer = (XComponentPeer) comp.getPeer(); if (peer != null) { - peer.paint(g); + peer.paintPeer(g); } super.updateComponent(comp, g); } @@ -66,9 +66,9 @@ */ protected void paintComponent(Component comp, Graphics g) { if (comp != null) { - ComponentPeer peer = comp.getPeer(); + final XComponentPeer peer = (XComponentPeer) comp.getPeer(); if (peer != null) { - peer.paint(g); + peer.paintPeer(g); } super.paintComponent(comp, g); }
--- a/src/solaris/classes/sun/awt/X11/XScrollPanePeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XScrollPanePeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -29,6 +29,8 @@ import java.awt.event.*; import java.awt.peer.*; import java.lang.reflect.*; + +import sun.awt.AWTAccessor; import sun.awt.SunToolkit; class XScrollPanePeer extends XComponentPeer implements ScrollPanePeer, XScrollbarClient { @@ -41,9 +43,7 @@ public final static int VERTICAL = 1 << 0; public final static int HORIZONTAL = 1 << 1; - private static Method m_setValue; static { - m_setValue = SunToolkit.getMethod(ScrollPaneAdjustable.class, "setTypedValue", new Class[] {Integer.TYPE, Integer.TYPE}); SCROLLBAR = XToolkit.getUIDefaults().getInt("ScrollBar.defaultWidth"); } @@ -293,10 +293,12 @@ setAdjustableValue(hadj, hsb.getValue(), type); sx = -(hsb.getValue()); Graphics g = getGraphics(); - try { - paintHorScrollbar(g, colors, true); - } finally { - g.dispose(); + if (g != null) { + try { + paintHorScrollbar(g, colors, true); + } finally { + g.dispose(); + } } } if ((flag & VERTICAL) != 0) { @@ -305,36 +307,38 @@ setAdjustableValue(vadj, vsb.getValue(), type); sy = -(vsb.getValue()); Graphics g = getGraphics(); - try { - paintVerScrollbar(g, colors, true); - } finally { - g.dispose(); + if (g != null) { + try { + paintVerScrollbar(g, colors, true); + } finally { + g.dispose(); + } } } } c.move(sx, sy); } - void setAdjustableValue(ScrollPaneAdjustable adj, int value, int type) { - try { - m_setValue.invoke(adj, new Object[] {Integer.valueOf(value), Integer.valueOf(type)}); - } catch (IllegalAccessException iae) { - adj.setValue(value); - } catch (IllegalArgumentException iae2) { - adj.setValue(value); - } catch (InvocationTargetException ite) { - adj.setValue(value); - ite.getCause().printStackTrace(); + private void setAdjustableValue(final ScrollPaneAdjustable adj, final int value, + final int type) { + AWTAccessor.getScrollPaneAdjustableAccessor().setTypedValue(adj, value, + type); + } + @Override + void paintPeer(final Graphics g) { + final Color[] colors = getGUIcolors(); + g.setColor(colors[BACKGROUND_COLOR]); + final int h = height - hsbSpace; + final int w = width - vsbSpace; + g.fillRect(0, 0, w, h); + // paint rectangular region between scrollbars + g.fillRect(w, h, vsbSpace, hsbSpace); + if (MARGIN > 0) { + draw3DRect(g, colors, 0, 0, w - 1, h - 1, false); } + paintScrollBars(g, colors); } - - - public void paint(Graphics g) { - paintComponent(g); - } - - - void paintScrollBars(Graphics g, Color[] colors) { + private void paintScrollBars(Graphics g, Color[] colors) { if (vsbSpace > 0) { paintVerScrollbar(g, colors, true); // paint the whole scrollbar @@ -345,51 +349,32 @@ // paint the whole scrollbar } } - - void repaintScrollBars() { - Graphics g = getGraphics(); - Color colors[] = getGUIcolors(); - if (g != null) { - paintScrollBars(g,colors); - } - g.dispose(); - } - - public void repaintScrollbarRequest(XScrollbar sb) { - Graphics g = getGraphics(); - Color colors[] = getGUIcolors(); - if (g != null) { - if (sb == vsb) { - paintVerScrollbar(g,colors,true); - } - else if (sb == hsb) { - paintHorScrollbar(g,colors,true); - } - } + void repaintScrollBars() { + Graphics g = getGraphics(); + Color colors[] = getGUIcolors(); + if (g != null) { + try { + paintScrollBars(g, colors); + } finally { + g.dispose(); + } + } } - - /** - * Paint the scrollpane. - */ - public void paintComponent(Graphics g) { - + public void repaintScrollbarRequest(XScrollbar sb) { + Graphics g = getGraphics(); Color colors[] = getGUIcolors(); - g.setColor(colors[BACKGROUND_COLOR]); - int h = height - hsbSpace; - int w = width - vsbSpace; - - g.fillRect(0, 0, w, h); - - // paint rectangular region between scrollbars - g.fillRect(w, h, vsbSpace, hsbSpace); - - if (MARGIN > 0) { - draw3DRect(g, colors, 0, 0, w - 1, h - 1, false); + if (g != null) { + try { + if (sb == vsb) { + paintVerScrollbar(g, colors, true); + } else if (sb == hsb) { + paintHorScrollbar(g, colors, true); + } + } finally { + g.dispose(); + } } - - paintScrollBars(g,colors); } - public void handleEvent(java.awt.AWTEvent e) { super.handleEvent(e);
--- a/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -90,18 +90,12 @@ ? new Dimension(getDefaultDimension(), DEFAULT_LENGTH) : new Dimension(DEFAULT_LENGTH, getDefaultDimension()); } - - public void repaint() { - Graphics g = getGraphics(); - if (g != null) paint(g); - } - /** * Paint the scrollbar. */ - public void paint(Graphics g) { - Scrollbar sb = (Scrollbar)target; - Color colors[] = getGUIcolors(); + @Override + void paintPeer(final Graphics g) { + final Color[] colors = getGUIcolors(); g.setColor(colors[BACKGROUND_COLOR]); tsb.paint(g, colors, true); // paint the whole scrollbar
--- a/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -185,11 +185,8 @@ */ @Override public void pSetCursor(Cursor cursor, boolean ignoreSubComponents) { - Point onScreen = getLocationOnScreen(); if (ignoreSubComponents || - javaMouseEventHandler == null || - onScreen == null) - { + javaMouseEventHandler == null) { super.pSetCursor(cursor, true); return; } @@ -197,6 +194,7 @@ Point cursorPos = new Point(); ((XGlobalCursorManager)XGlobalCursorManager.getCursorManager()).getCursorPos(cursorPos); + final Point onScreen = getLocationOnScreen(); Point localPoint = new Point(cursorPos.x - onScreen.x, cursorPos.y - onScreen.y ); javaMouseEventHandler.setPointerToUnderPoint(localPoint); @@ -300,15 +298,14 @@ * Paint the component * this method is called when the repaint instruction has been used */ - public void repaint() { if (textPane != null) { //textPane.validate(); textPane.repaint(); } } - - public void paint(Graphics g) { + @Override + void paintPeer(final Graphics g) { if (textPane != null) { textPane.paint(g); }
--- a/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -370,12 +370,11 @@ public void repaint() { if (xtext != null) xtext.repaint(); } - - public void paint(Graphics g) { + @Override + void paintPeer(final Graphics g) { if (xtext != null) xtext.paint(g); } - public void print(Graphics g) { if (xtext != null) { xtext.print(g);
--- a/src/solaris/classes/sun/awt/X11/XWarningWindow.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XWarningWindow.java Fri Aug 05 16:03:00 2011 -0700 @@ -241,16 +241,19 @@ Font getFont () { return ownerWindow.getFont(); } + + @Override public void repaint() { - Rectangle bounds = getBounds(); - Graphics g = getGraphics(); - try { - paint(g, 0, 0, bounds.width, bounds.height); - } finally { - g.dispose(); + final Rectangle bounds = getBounds(); + final Graphics g = getGraphics(); + if (g != null) { + try { + paint(g, 0, 0, bounds.width, bounds.height); + } finally { + g.dispose(); + } } } - @Override public void handleExposeEvent(XEvent xev) { super.handleExposeEvent(xev); @@ -263,11 +266,13 @@ SunToolkit.executeOnEventHandlerThread(target, new Runnable() { public void run() { - Graphics g = getGraphics(); - try { - paint(g, x, y, width, height); - } finally { - g.dispose(); + final Graphics g = getGraphics(); + if (g != null) { + try { + paint(g, x, y, width, height); + } finally { + g.dispose(); + } } } });
--- a/src/solaris/classes/sun/awt/X11/XWindow.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/awt/X11/XWindow.java Fri Aug 05 16:03:00 2011 -0700 @@ -502,9 +502,8 @@ public boolean isEmbedded() { return embedded; } - public void repaint(int x,int y, int width, int height) { - if (!isVisible()) { + if (!isVisible() || getWidth() == 0 || getHeight() == 0) { return; } Graphics g = getGraphics(); @@ -517,12 +516,11 @@ } } } - - public void repaint() { - if (!isVisible()) { + void repaint() { + if (!isVisible() || getWidth() == 0 || getHeight() == 0) { return; } - Graphics g = getGraphics(); + final Graphics g = getGraphics(); if (g != null) { try { paint(g); @@ -531,10 +529,13 @@ } } } - - void paint(Graphics g) { + public void paint(final Graphics g) { + // paint peer + paintPeer(g); } + void paintPeer(final Graphics g) { + } //used by Peers to avoid flickering withing paint() protected void flush(){ XToolkit.awtLock();
--- a/src/solaris/classes/sun/font/FontConfigManager.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/solaris/classes/sun/font/FontConfigManager.java Fri Aug 05 16:03:00 2011 -0700 @@ -347,6 +347,11 @@ name = name.toLowerCase(); initFontConfigFonts(false); + if (fontConfigFonts == null) { + // This avoids an immediate NPE if fontconfig look up failed + // but doesn't guarantee this is a recoverable situation. + return null; + } FcCompFont fcInfo = null; for (int i=0; i<fontConfigFonts.length; i++) {
--- a/src/windows/classes/sun/awt/windows/WMenuItemPeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/classes/sun/awt/windows/WMenuItemPeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -183,7 +183,9 @@ */ private static native void initIDs(); - // Needed for MenuComponentPeer. - public void setFont(Font f) { + private native void _setFont(Font f); + + public void setFont(final Font f) { + _setFont(f); } }
--- a/src/windows/classes/sun/awt/windows/WScrollPanePeer.java Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/classes/sun/awt/windows/WScrollPanePeer.java Fri Aug 05 16:03:00 2011 -0700 @@ -27,6 +27,8 @@ import java.awt.*; import java.awt.event.AdjustmentEvent; import java.awt.peer.ScrollPanePeer; + +import sun.awt.AWTAccessor; import sun.awt.PeerEvent; import sun.util.logging.PlatformLogger; @@ -169,8 +171,6 @@ } } - native void setTypedValue(ScrollPaneAdjustable adjustable, int newpos, int type); - /* * Runnable for the ScrollEvent that performs the adjustment. */ @@ -247,8 +247,9 @@ // Fix for 4075484 - consider type information when creating AdjustmentEvent // We can't just call adj.setValue() because it creates AdjustmentEvent with type=TRACK // Instead, we call private method setTypedValue of ScrollPaneAdjustable. - // Because ScrollPaneAdjustable is in another package we should call it through native code. - setTypedValue(adj, newpos, type); + AWTAccessor.getScrollPaneAdjustableAccessor().setTypedValue(adj, + newpos, + type); // Paint the exposed area right away. To do this - find // the heavyweight ancestor of the scroll child.
--- a/src/windows/native/sun/windows/awt_Choice.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_Choice.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -396,12 +396,6 @@ DASSERT(::IsWindow(hwnd)); - // This branch is required for the proper work of AwtComponent::GetComponent() method - // while hovering drop-down list - if (message == WmAwtIsComponent) { - return (LRESULT)TRUE; - } - switch (message) { case WM_LBUTTONDOWN: { DWORD curPos = ::GetMessagePos();
--- a/src/windows/native/sun/windows/awt_Component.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_Component.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -364,6 +364,7 @@ AwtComponent *component = (AwtComponent *)::GetWindowLongPtr(hWnd, GWLP_USERDATA); DASSERT(!component || !IsBadReadPtr(component, sizeof(AwtComponent)) ); + DASSERT(!component || component->GetHWnd() == hWnd ); return component; }
--- a/src/windows/native/sun/windows/awt_Menu.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_Menu.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -119,6 +119,41 @@ return menu; } +void AwtMenu::UpdateLayout() +{ + UpdateLayout(GetHMenu()); + RedrawMenuBar(); +} + +void AwtMenu::UpdateLayout(const HMENU hmenu) +{ + const int nMenuItemCount = ::GetMenuItemCount(hmenu); + static MENUITEMINFO mii; + for (int idx = 0; idx < nMenuItemCount; ++idx) { + memset(&mii, 0, sizeof(mii)); + mii.cbSize = sizeof(mii); + mii.fMask = MIIM_CHECKMARKS | MIIM_DATA | MIIM_ID + | MIIM_STATE | MIIM_SUBMENU | MIIM_TYPE; + if (::GetMenuItemInfo(hmenu, idx, TRUE, &mii)) { + VERIFY(::RemoveMenu(hmenu, idx, MF_BYPOSITION)); + VERIFY(::InsertMenuItem(hmenu, idx, TRUE, &mii)); + if (mii.hSubMenu != NULL) { + UpdateLayout(mii.hSubMenu); + } + } + } +} + +void AwtMenu::UpdateContainerLayout() +{ + AwtMenu* menu = GetMenuContainer(); + if (menu != NULL) { + menu->UpdateLayout(); + } else { + UpdateLayout(); + } +} + AwtMenuBar* AwtMenu::GetMenuBar() { return (GetMenuContainer() == NULL) ? NULL : GetMenuContainer()->GetMenuBar(); }
--- a/src/windows/native/sun/windows/awt_Menu.h Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_Menu.h Fri Aug 05 16:03:00 2011 -0700 @@ -72,6 +72,8 @@ virtual AwtMenuBar* GetMenuBar(); void AddSeparator(); + virtual void UpdateContainerLayout(); + void UpdateLayout(); virtual void AddItem(AwtMenuItem *item); virtual void DeleteItem(UINT index); @@ -103,6 +105,7 @@ virtual void RemoveCmdID() { /* do nothing */ } private: + void UpdateLayout(const HMENU hmenu); HMENU m_hMenu; };
--- a/src/windows/native/sun/windows/awt_MenuBar.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_MenuBar.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -198,7 +198,15 @@ if (hOwnerWnd != NULL) { VERIFY(::InvalidateRect(hOwnerWnd,0,TRUE)); } - ::DrawMenuBar(GetOwnerHWnd()); + RedrawMenuBar(); +} + +/** + * If the menu changes after the system has created the window, + * this function must be called to draw the changed menu bar. + */ +void AwtMenuBar::RedrawMenuBar() { + VERIFY(::DrawMenuBar(GetOwnerHWnd())); } LRESULT AwtMenuBar::WinThreadExecProc(ExecuteArgs * args) @@ -232,7 +240,7 @@ if (::IsWindow(m->GetOwnerHWnd())) { /* The menu was already created and added during peer creation -- redraw */ - ::DrawMenuBar(m->GetOwnerHWnd()); + m->RedrawMenuBar(); } ret: env->DeleteGlobalRef(self);
--- a/src/windows/native/sun/windows/awt_MenuBar.h Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_MenuBar.h Fri Aug 05 16:03:00 2011 -0700 @@ -65,6 +65,7 @@ INLINE AwtFrame* GetFrame() { return m_frame; } virtual HWND GetOwnerHWnd(); + virtual void RedrawMenuBar(); AwtMenuItem* GetItem(jobject target, long index); int CountItem(jobject menuBar);
--- a/src/windows/native/sun/windows/awt_MenuItem.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_MenuItem.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -626,7 +626,7 @@ mii.dwTypeData = (LPTSTR)(*sb); // find index by menu item id - int nMenuItemCount = ::GetMenuItemCount(hMenu);; + int nMenuItemCount = ::GetMenuItemCount(hMenu); int idx; for (idx = 0; (idx < nMenuItemCount); idx++) { memset(&mii1, 0, sizeof(MENUITEMINFO)); @@ -639,10 +639,7 @@ ::RemoveMenu(hMenu, idx, MF_BYPOSITION); ::InsertMenuItem(hMenu, idx, TRUE, &mii); - // Redraw menu bar if it was affected. - if (menu->GetMenuBar() == menu) { - ::DrawMenuBar(menu->GetOwnerHWnd()); - } + RedrawMenuBar(); } void AwtMenuItem::Enable(BOOL isEnabled) @@ -658,10 +655,7 @@ MF_BYCOMMAND | (isEnabled ? MF_ENABLED : MF_GRAYED)) != 0xFFFFFFFF); - // Redraw menu bar if it was affected. - if (menu->GetMenuBar() == menu) { - ::DrawMenuBar(menu->GetOwnerHWnd()); - } + RedrawMenuBar(); } void AwtMenuItem::SetState(BOOL isChecked) @@ -676,23 +670,31 @@ MF_BYCOMMAND | (isChecked ? MF_CHECKED : MF_UNCHECKED)) != 0xFFFFFFFF); - // Redraw menu bar if it was affected. - if (menu->GetMenuBar() == menu) { - ::DrawMenuBar(menu->GetOwnerHWnd()); + RedrawMenuBar(); +} + +/** + * If the menu changes after the system has created the window, + * this function must be called to draw the changed menu bar. + */ +void AwtMenuItem::RedrawMenuBar() { + AwtMenu* menu = GetMenuContainer(); + if (menu != NULL && menu->GetMenuBar() == menu){ + menu->RedrawMenuBar(); + } +} + +void AwtMenuItem::UpdateContainerLayout() { + AwtMenu* menu = GetMenuContainer(); + if (menu != NULL) { + DASSERT(menu != NULL && GetID() >= 0); + menu->UpdateLayout(); } } LRESULT AwtMenuItem::WinThreadExecProc(ExecuteArgs * args) { switch( args->cmdId ) { - case MENUITEM_SETLABEL: - { - LPCTSTR sb = (LPCTSTR)args->param1; - DASSERT(!IsBadStringPtr(sb, 20)); - this->SetLabel(sb); - } - break; - case MENUITEM_ENABLE: { BOOL isEnabled = (BOOL)args->param1; @@ -714,75 +716,98 @@ return 0L; } -void AwtMenuItem::_SetLabel(void *param) -{ - JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); +void AwtMenuItem::_SetLabel(void *param) { + if (AwtToolkit::IsMainThread()) { + JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); - SetLabelStruct *sls = (SetLabelStruct *)param; - jobject self = sls->menuitem; - jstring label = sls->label; + SetLabelStruct *sls = (SetLabelStruct *)param; + jobject self = sls->menuitem; + jstring label = sls->label; - int badAlloc = 0; - AwtMenuItem *m = NULL; + int badAlloc = 0; + AwtMenuItem *m = NULL; - PDATA pData; - JNI_CHECK_PEER_GOTO(self, ret); - m = (AwtMenuItem *)pData; + PDATA pData; + JNI_CHECK_PEER_GOTO(self, ret); + m = (AwtMenuItem *)pData; // if (::IsWindow(m->GetOwnerHWnd())) - { - // fix for bug 4251036 MenuItem setLabel(null/"") behaves differently - // under Win32 and Solaris - jstring empty = NULL; - if (JNU_IsNull(env, label)) { - empty = JNU_NewStringPlatform(env, TEXT("")); - } - LPCTSTR labelPtr; - if (empty != NULL) - { - labelPtr = JNU_GetStringPlatformChars(env, empty, 0); - } - else - { - labelPtr = JNU_GetStringPlatformChars(env, label, 0); - } - if (labelPtr == NULL) - { - badAlloc = 1; - } - else - { - ExecuteArgs args; - args.cmdId = MENUITEM_SETLABEL; - args.param1 = (LPARAM)labelPtr; - m->WinThreadExecProc(&args); + // fix for bug 4251036 MenuItem setLabel(null/"") behaves differently + // under Win32 and Solaris + jstring empty = NULL; + if (JNU_IsNull(env, label)) + { + empty = JNU_NewStringPlatform(env, TEXT("")); + } + LPCTSTR labelPtr; if (empty != NULL) { - JNU_ReleaseStringPlatformChars(env, empty, labelPtr); + labelPtr = JNU_GetStringPlatformChars(env, empty, 0); + } + else + { + labelPtr = JNU_GetStringPlatformChars(env, label, 0); + } + if (labelPtr == NULL) + { + badAlloc = 1; } else { - JNU_ReleaseStringPlatformChars(env, label, labelPtr); + DASSERT(!IsBadStringPtr(labelPtr, 20)); + m->SetLabel(labelPtr); + if (empty != NULL) + { + JNU_ReleaseStringPlatformChars(env, empty, labelPtr); + } + else + { + JNU_ReleaseStringPlatformChars(env, label, labelPtr); + } + } + if (empty != NULL) + { + env->DeleteLocalRef(empty); } } - if (empty != NULL) - { - env->DeleteLocalRef(empty); - } - } ret: - env->DeleteGlobalRef(self); - if (label != NULL) - { - env->DeleteGlobalRef(label); + env->DeleteGlobalRef(self); + if (label != NULL) + { + env->DeleteGlobalRef(label); + } + + delete sls; + + if (badAlloc) + { + throw std::bad_alloc(); + } + } else { + AwtToolkit::GetInstance().InvokeFunction(AwtMenuItem::_SetLabel, param); } +} - delete sls; +void AwtMenuItem::_UpdateLayout(void *param) +{ + if (AwtToolkit::IsMainThread()) { + JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); + + jobject self = (jobject)param; + + AwtMenuItem *m = NULL; - if (badAlloc) - { - throw std::bad_alloc(); + PDATA pData; + JNI_CHECK_PEER_GOTO(self, ret); + + m = (AwtMenuItem *)pData; + + m->UpdateContainerLayout(); +ret: + env->DeleteGlobalRef(self); + } else { + AwtToolkit::GetInstance().InvokeFunction(AwtMenuItem::_UpdateLayout, param); } } @@ -883,8 +908,8 @@ /* * Class: sun_awt_windows_WMenuItemPeer - * Method: _setLabel - * Signature: (Ljava/lang/String;)V + * Method: initIDs + * Signature: ()V */ JNIEXPORT void JNICALL Java_sun_awt_windows_WMenuItemPeer_initIDs(JNIEnv *env, jclass cls) @@ -927,6 +952,26 @@ /* * Class: sun_awt_windows_WMenuItemPeer + * Method: _setFont + * Signature: (Ljava/awt/Font;)V + */ +JNIEXPORT void JNICALL +Java_sun_awt_windows_WMenuItemPeer__1setFont(JNIEnv *env, jobject self, jobject) +{ + TRY; + + jobject selfGlobalRef = env->NewGlobalRef(self); + + // Current implementation of AwtMenuItem get font attribute from the peer + // directly, so we ignore it here, but update current menu layout. + AwtToolkit::GetInstance().SyncCall(AwtMenuItem::_UpdateLayout, selfGlobalRef); + // selfGlobalRef is deleted in _UpdateLayout + + CATCH_BAD_ALLOC; +} + +/* + * Class: sun_awt_windows_WMenuItemPeer * Method: create * Signature: (Lsun/awt/windows/WMenuPeer;)V */
--- a/src/windows/native/sun/windows/awt_MenuItem.h Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_MenuItem.h Fri Aug 05 16:03:00 2011 -0700 @@ -48,7 +48,6 @@ public: // id's for methods executed on toolkit thread enum { - MENUITEM_SETLABEL, MENUITEM_ENABLE, MENUITEM_SETSTATE, MENUITEM_LAST @@ -78,7 +77,6 @@ virtual LPCTSTR GetClassName(); - void AwtMenuItem::LinkObjects(jobject peer); static AwtMenuItem* Create(jobject self, jobject menu); INLINE AwtMenu* GetMenuContainer() { return m_menuContainer; } @@ -148,6 +146,8 @@ void SetLabel(LPCTSTR sb); virtual void Enable(BOOL isEnabled); + virtual void UpdateContainerLayout(); + virtual void RedrawMenuBar(); void SetState(BOOL isChecked); /* @@ -163,6 +163,7 @@ // invoked on Toolkit thread static void _SetLabel(void *param); + static void _UpdateLayout(void *param); protected: AwtMenu* m_menuContainer; /* The menu object containing this item */
--- a/src/windows/native/sun/windows/awt_PrintJob.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_PrintJob.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -4137,7 +4137,7 @@ AwtPrintDialog::controlID = env->GetFieldID(cls, "pjob", "Ljava/awt/print/PrinterJob;"); - jclass printDialogPeerClass = env->FindClass("Lsun/awt/windows/WPrintDialogPeer;"); + jclass printDialogPeerClass = env->FindClass("sun/awt/windows/WPrintDialogPeer"); AwtPrintDialog::setHWndMID = env->GetMethodID(printDialogPeerClass, "setHWnd", "(J)V");
--- a/src/windows/native/sun/windows/awt_ScrollPane.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_ScrollPane.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -808,29 +808,4 @@ CATCH_BAD_ALLOC; } -/* - * Class: sun_awt_windows_WScrollPanePeer - * Method: setTypedValue - * Signature: (Ljava/awt/ScrollPaneAdjustable;II)V - */ -JNIEXPORT void JNICALL -Java_sun_awt_windows_WScrollPanePeer_setTypedValue(JNIEnv *env, jobject peer, jobject adjustable, jint value, jint type) -{ - // need this global ref to make the class unloadable (see 6500204) - static jclass scrollPaneAdj; - static jmethodID setTypedValueMID = 0; - if (setTypedValueMID == NULL) { - jclass clazz = env->FindClass("java/awt/ScrollPaneAdjustable"); - if (safe_ExceptionOccurred(env)) { - env->ExceptionDescribe(); - env->ExceptionClear(); - } - setTypedValueMID = env->GetMethodID(clazz, "setTypedValue", "(II)V"); - scrollPaneAdj = (jclass) env->NewGlobalRef(clazz); - env->DeleteLocalRef(clazz); - DASSERT(setTypedValueMID != NULL); - } - env->CallVoidMethod(adjustable, setTypedValueMID, value, type); -} - } /* extern "C" */
--- a/src/windows/native/sun/windows/awt_Toolkit.cpp Thu Aug 04 08:53:16 2011 -0700 +++ b/src/windows/native/sun/windows/awt_Toolkit.cpp Fri Aug 05 16:03:00 2011 -0700 @@ -1444,7 +1444,6 @@ AwtComponent* mouseComp = AwtComponent::GetComponent(hWndFromPoint); // Need extra copies for non-client area issues - AwtComponent* mouseWheelComp = mouseComp; HWND hWndForWheel = hWndFromPoint; // If the point under the mouse isn't in the client area, @@ -1510,9 +1509,9 @@ */ if (msg.message == WM_MOUSEWHEEL && - mouseWheelComp != NULL) { //i.e. mouse is over client area for this - //window - msg.hwnd = hWndForWheel; + AwtToolkit::MainThread() == ::GetWindowThreadProcessId(hWndForWheel, NULL)) { + //i.e. mouse is over client area for this window + msg.hwnd = hWndForWheel; } /*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java Fri Aug 05 16:03:00 2011 -0700 @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + @test + @bug 7050935 + @summary closed/java/awt/Choice/WheelEventsConsumed/WheelEventsConsumed.html fails on win32 + @author Oleg Pekhovskiy: area=awt-choice + @run main ChoiceMouseWheelTest +*/ + +import test.java.awt.regtesthelpers.Util; + +import java.awt.*; +import java.awt.event.*; + +public class ChoiceMouseWheelTest extends Frame { + + private volatile boolean itemChanged = false; + private volatile boolean wheelMoved = false; + private volatile boolean frameExited = false; + + public static void main(String[] args) { + new ChoiceMouseWheelTest(); + } + + ChoiceMouseWheelTest() { + super("ChoiceMouseWheelTest"); + setLayout(new FlowLayout()); + + Choice choice = new Choice(); + + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + + for(Integer i = 0; i < 50; i++) { + choice.add(i.toString()); + } + + choice.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + itemChanged = true; + } + }); + choice.addMouseWheelListener(new MouseWheelListener() { + public void mouseWheelMoved(MouseWheelEvent e) { + wheelMoved = true; + } + }); + + addMouseListener(new MouseAdapter() { + @Override + public void mouseExited(MouseEvent e) { + frameExited = true; + } + }); + + add(choice); + setSize(200, 300); + setVisible(true); + toFront(); + + try { + Robot robot = new Robot(); + robot.setAutoDelay(20); + Util.waitForIdle(robot); + + Point pt = choice.getLocationOnScreen(); + Dimension size = choice.getSize(); + int x = pt.x + size.width / 3; + robot.mouseMove(x, pt.y + size.height / 2); + + // Test mouse wheel over the choice + String name = Toolkit.getDefaultToolkit().getClass().getName(); + if(!name.equals("sun.awt.X11.XToolkit")) { // mouse wheel doesn't work for the choice on X11, so skip it + robot.mouseWheel(1); + Util.waitForIdle(robot); + + if(!wheelMoved || !itemChanged) { + throw new RuntimeException("Mouse Wheel over the choice failed!"); + } + } + + // Test mouse wheel over the drop-down list + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + Util.waitForIdle(robot); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + Util.waitForIdle(robot); + + int y = getLocationOnScreen().y + getSize().height; + while(!frameExited && y >= 0) { // move to the bottom of drop-down list + robot.mouseMove(x, --y); + Util.waitForIdle(robot); + } + + if(x < 0) { + throw new RuntimeException("Could not enter drop-down list!"); + } + + y -= choice.getHeight() / 2; + robot.mouseMove(x, y); // move to the last visible item in the drop-down list + Util.waitForIdle(robot); + + robot.mouseWheel(choice.getItemCount()); // wheel to the last item + Util.waitForIdle(robot); + + // click the last item + itemChanged = false; + robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); + Util.waitForIdle(robot); + robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); + Util.waitForIdle(robot); + + if(!itemChanged || choice.getSelectedIndex() != choice.getItemCount() - 1) { + throw new RuntimeException("Mouse Wheel scroll position error!"); + } + + System.exit(0); + + } catch (AWTException e) { + throw new RuntimeException("AWTException occurred - problem creating robot!"); + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/Component/PaintAll/PaintAll.java Fri Aug 05 16:03:00 2011 -0700 @@ -0,0 +1,301 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import sun.awt.SunToolkit; + +import java.awt.Button; +import java.awt.Canvas; +import java.awt.Checkbox; +import java.awt.Choice; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.GridLayout; +import java.awt.Label; +import java.awt.List; +import java.awt.Panel; +import java.awt.ScrollPane; +import java.awt.Scrollbar; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.Toolkit; +import java.awt.image.BufferedImage; + +/* + @test + @bug 6596915 + @summary Test Component.paintAll() method + @author sergey.bylokhov@oracle.com: area=awt.component + @run main PaintAll +*/ +public class PaintAll { + + private static volatile boolean lwPainted; + private static volatile boolean buttonPainted; + private static volatile boolean canvasPainted; + private static volatile boolean checkboxPainted; + private static volatile boolean choicePainted; + private static volatile boolean containerPainted; + private static volatile boolean framePainted; + private static volatile boolean labelPainted; + private static volatile boolean listPainted; + private static volatile boolean panelPainted; + private static volatile boolean scrollbarPainted; + private static volatile boolean scrollPanePainted; + private static volatile boolean textAreaPainted; + private static volatile boolean textFieldPainted; + + private static final Button buttonStub = new Button() { + @Override + public void paint(final Graphics g) { + buttonPainted = true; + } + }; + + private static final Canvas canvasStub = new Canvas() { + @Override + public void paint(final Graphics g) { + canvasPainted = true; + } + }; + + private static final Checkbox checkboxStub = new Checkbox() { + @Override + public void paint(final Graphics g) { + checkboxPainted = true; + } + }; + + private static final Choice choiceStub = new Choice() { + @Override + public void paint(final Graphics g) { + choicePainted = true; + } + }; + + private static final Component lwComponentStub = new Component() { + @Override + public void paint(final Graphics g) { + lwPainted = true; + } + }; + + private static final Container containerStub = new Container() { + @Override + public void paint(final Graphics g) { + containerPainted = true; + } + }; + + private static final Frame frame = new Frame() { + @Override + public void paint(final Graphics g) { + super.paint(g); + framePainted = true; + } + }; + + private static final Label labelStub = new Label() { + @Override + public void paint(final Graphics g) { + labelPainted = true; + } + }; + + private static final List listStub = new List() { + @Override + public void paint(final Graphics g) { + listPainted = true; + } + }; + + private static final Panel panelStub = new Panel() { + @Override + public void paint(final Graphics g) { + panelPainted = true; + } + }; + + private static final Scrollbar scrollbarStub = new Scrollbar() { + @Override + public void paint(final Graphics g) { + scrollbarPainted = true; + } + }; + + private static final ScrollPane scrollPaneStub = new ScrollPane() { + @Override + public void paint(final Graphics g) { + scrollPanePainted = true; + } + }; + + private static final TextArea textAreaStub = new TextArea() { + @Override + public void paint(final Graphics g) { + textAreaPainted = true; + } + }; + + private static final TextField textFieldStub = new TextField() { + @Override + public void paint(final Graphics g) { + textFieldPainted = true; + } + }; + + public static void main(final String[] args) throws Exception { + //Frame initialisation + final BufferedImage graphicsProducer = + new BufferedImage(BufferedImage.TYPE_INT_ARGB, 1, 1); + + final Graphics g = graphicsProducer.getGraphics(); + + frame.setLayout(new GridLayout()); + frame.add(buttonStub); + frame.add(canvasStub); + frame.add(checkboxStub); + frame.add(choiceStub); + frame.add(lwComponentStub); + frame.add(containerStub); + frame.add(labelStub); + frame.add(listStub); + frame.add(panelStub); + frame.add(scrollbarStub); + frame.add(scrollPaneStub); + frame.add(textAreaStub); + frame.add(textFieldStub); + frame.setSize(new Dimension(500, 500)); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + sleep(); + + //Check results. + validation(); + + //Reset all flags to 'false'. + initPaintedFlags(); + + //Tested method. + frame.paintAll(g); + sleep(); + + //Check results. + validation(); + cleanup(); + } + + private static void initPaintedFlags() { + lwPainted = false; + buttonPainted = false; + canvasPainted = false; + checkboxPainted = false; + choicePainted = false; + containerPainted = false; + framePainted = false; + labelPainted = false; + listPainted = false; + panelPainted = false; + scrollbarPainted = false; + scrollPanePainted = false; + textAreaPainted = false; + textFieldPainted = false; + } + + private static void validation() { + if (!buttonPainted) { + fail("Paint is not called a Button " + + "when paintAll() invoked on a parent"); + } + if (!canvasPainted) { + fail("Paint is not called a Canvas " + + "when paintAll() invoked on a parent"); + } + if (!checkboxPainted) { + fail("Paint is not called a Checkbox " + + "when paintAll() invoked on a parent"); + } + if (!choicePainted) { + fail("Paint is not called a Choice " + + "when paintAll() invoked on a parent"); + } + if (!lwPainted) { + fail("Paint is not called on a lightweight" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!containerPainted) { + fail("Paint is not called on a Container" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!labelPainted) { + fail("Paint is not called on a Label" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!listPainted) { + fail("Paint is not called on a List" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!panelPainted) { + fail("Paint is not called on a Panel" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!scrollbarPainted) { + fail("Paint is not called on a Scrollbar" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!scrollPanePainted) { + fail("Paint is not called on a ScrollPane" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!textAreaPainted) { + fail("Paint is not called on a TextArea" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!textFieldPainted) { + fail("Paint is not called on a TextField" + + " subcomponent when paintAll() invoked on a parent"); + } + if (!framePainted) { + fail("Paint is not called on a Frame when paintAll()"); + } + } + + private static void sleep() { + ((SunToolkit) Toolkit.getDefaultToolkit()).realSync(); + try { + Thread.sleep(500L); + } catch (InterruptedException ignored) { + } + } + + private static void fail(final String message) { + cleanup(); + throw new RuntimeException(message); + } + + private static void cleanup() { + frame.dispose(); + } +}
--- a/test/java/lang/invoke/JavaDocExamplesTest.java Thu Aug 04 08:53:16 2011 -0700 +++ b/test/java/lang/invoke/JavaDocExamplesTest.java Fri Aug 05 16:03:00 2011 -0700 @@ -69,6 +69,7 @@ testDropArguments(); testFilterArguments(); testFoldArguments(); + testFoldArguments2(); testMethodHandlesSummary(); testAsSpreader(); testAsCollector(); @@ -490,6 +491,47 @@ }} } + @Test public void testFoldArguments2() throws Throwable { + {{ +{} /// JAVADOC +// argument-based dispatch for methods of the form boolean x.___(y: String) +Lookup lookup = publicLookup(); +// first, a tracing hack: +MethodHandle println = lookup.findVirtual(java.io.PrintStream.class, "println", methodType(void.class, String.class)); +MethodHandle arrayToString = lookup.findStatic(Arrays.class, "toString", methodType(String.class, Object[].class)); +MethodHandle concat = lookup.findVirtual(String.class, "concat", methodType(String.class, String.class)); +MethodHandle arrayToString_DIS = filterReturnValue(arrayToString, concat.bindTo("DIS:")); +MethodHandle arrayToString_INV = filterReturnValue(arrayToString, concat.bindTo("INV:")); +MethodHandle printArgs_DIS = filterReturnValue(arrayToString_DIS, println.bindTo(System.out)).asVarargsCollector(Object[].class); +MethodHandle printArgs_INV = filterReturnValue(arrayToString_INV, println.bindTo(System.out)).asVarargsCollector(Object[].class); +// metaobject protocol: +MethodType mtype = methodType(boolean.class, String.class); +MethodHandle findVirtual = lookup.findVirtual(Lookup.class, + "findVirtual", methodType(MethodHandle.class, Class.class, String.class, MethodType.class)); +MethodHandle getClass = lookup.findVirtual(Object.class, + "getClass", methodType(Class.class)); +MethodHandle dispatch = findVirtual; +dispatch = filterArguments(dispatch, 1, getClass); +dispatch = insertArguments(dispatch, 3, mtype); +dispatch = dispatch.bindTo(lookup); +assertEquals(methodType(MethodHandle.class, Object.class, String.class), dispatch.type()); +MethodHandle invoker = invoker(mtype.insertParameterTypes(0, Object.class)); +// wrap tracing around the dispatch and invoke steps: +dispatch = foldArguments(dispatch, printArgs_DIS.asType(dispatch.type().changeReturnType(void.class))); +invoker = foldArguments(invoker, printArgs_INV.asType(invoker.type().changeReturnType(void.class))); +invoker = dropArguments(invoker, 2, String.class); // ignore selector +// compose the dispatcher and the invoker: +MethodHandle invokeDispatched = foldArguments(invoker, dispatch); +Object x = "football", y = new java.util.Scanner("bar"); +assert( (boolean) invokeDispatched.invokeExact(x, "startsWith", "foo")); +assert(!(boolean) invokeDispatched.invokeExact(x, "startsWith", "#")); +assert( (boolean) invokeDispatched.invokeExact(x, "endsWith", "all")); +assert(!(boolean) invokeDispatched.invokeExact(x, "endsWith", "foo")); +assert( (boolean) invokeDispatched.invokeExact(y, "hasNext", "[abc]+[rst]")); +assert(!(boolean) invokeDispatched.invokeExact(y, "hasNext", "[123]+[789]")); + }} + } + /* ---- TEMPLATE ---- @Test public void testFoo() throws Throwable { {{
--- a/test/java/lang/invoke/MethodHandlesTest.java Thu Aug 04 08:53:16 2011 -0700 +++ b/test/java/lang/invoke/MethodHandlesTest.java Fri Aug 05 16:03:00 2011 -0700 @@ -37,7 +37,6 @@ import java.util.*; import org.junit.*; import static org.junit.Assert.*; -import static org.junit.Assume.*; /** @@ -45,10 +44,13 @@ * @author jrose */ public class MethodHandlesTest { + static final Class<?> THIS_CLASS = MethodHandlesTest.class; // How much output? static int verbosity = 0; static { - String vstr = System.getProperty("test.java.lang.invoke.MethodHandlesTest.verbosity"); + String vstr = System.getProperty(THIS_CLASS.getSimpleName()+".verbosity"); + if (vstr == null) + vstr = System.getProperty(THIS_CLASS.getName()+".verbosity"); if (vstr != null) verbosity = Integer.parseInt(vstr); } @@ -58,9 +60,9 @@ static boolean CAN_SKIP_WORKING = false; //static { CAN_SKIP_WORKING = true; } - // Set true to test more calls. If false, some tests are just - // lookups, without exercising the actual method handle. - static boolean DO_MORE_CALLS = true; + // Set 'true' to do about 15x fewer tests, especially those redundant with RicochetTest. + // This might be useful with -Xcomp stress tests that compile all method handles. + static boolean CAN_TEST_LIGHTLY = Boolean.getBoolean(THIS_CLASS.getName()+".CAN_TEST_LIGHTLY"); @Test public void testFirst() throws Throwable { @@ -70,37 +72,37 @@ } // current failures - @Test @Ignore("failure in call to makeRawRetypeOnly in ToGeneric") + @Test //@Ignore("failure in call to makeRawRetypeOnly in ToGeneric") public void testFail_1() throws Throwable { // AMH.<init>: IllegalArgumentException: bad adapter (conversion=0xfffab300): adapter pushes too many parameters testSpreadArguments(int.class, 0, 6); } - @Test @Ignore("failure in JVM when expanding the stack using asm stub for _adapter_spread_args") + @Test //@Ignore("failure in JVM when expanding the stack using asm stub for _adapter_spread_args") public void testFail_2() throws Throwable { // if CONV_OP_IMPLEMENTED_MASK includes OP_SPREAD_ARGS, this crashes: testSpreadArguments(Object.class, 0, 2); } - @Test @Ignore("IllArgEx failure in call to ToGeneric.make") + @Test //@Ignore("IllArgEx failure in call to ToGeneric.make") public void testFail_3() throws Throwable { // ToGeneric.<init>: UnsupportedOperationException: NYI: primitive parameters must follow references; entryType = (int,java.lang.Object)java.lang.Object testSpreadArguments(int.class, 1, 2); } - @Test @Ignore("IllArgEx failure in call to ToGeneric.make") + @Test //@Ignore("IllArgEx failure in call to ToGeneric.make") public void testFail_4() throws Throwable { // ToGeneric.<init>: UnsupportedOperationException: NYI: primitive parameters must follow references; entryType = (int,java.lang.Object)java.lang.Object testCollectArguments(int.class, 1, 2); } - @Test @Ignore("cannot collect leading primitive types") + @Test //@Ignore("cannot collect leading primitive types") public void testFail_5() throws Throwable { // ToGeneric.<init>: UnsupportedOperationException: NYI: primitive parameters must follow references; entryType = (int,java.lang.Object)java.lang.Object testInvokers(MethodType.genericMethodType(2).changeParameterType(0, int.class)); } - @Test @Ignore("should not insert arguments beyond MethodHandlePushLimit") + @Test //@Ignore("should not insert arguments beyond MethodHandlePushLimit") public void testFail_6() throws Throwable { // ValueConversions.varargsArray: UnsupportedOperationException: NYI: cannot form a varargs array of length 13 testInsertArguments(0, 0, MAX_ARG_INCREASE+10); } - @Test @Ignore("permuteArguments has trouble with double slots") + @Test //@Ignore("permuteArguments has trouble with double slots") public void testFail_7() throws Throwable { testPermuteArguments(new Object[]{10, 200L}, new Class<?>[]{Integer.class, long.class}, @@ -123,7 +125,7 @@ testPermuteArguments(new Object[]{10, 200L, 5000L}, new Class<?>[]{Integer.class, long.class, long.class}, new int[]{2,2,0,1}); - testPermuteArguments(4, Integer.class, 2, long.class, 6); + //testPermuteArguments(4, Integer.class, 2, long.class, 6); } static final int MAX_ARG_INCREASE = 3; @@ -167,7 +169,7 @@ @AfterClass public static void tearDownClass() throws Exception { int posTests = allPosTests, negTests = allNegTests; - if (verbosity >= 2 && (posTests | negTests) != 0) { + if (verbosity >= 0 && (posTests | negTests) != 0) { System.out.println(); if (posTests != 0) System.out.println("=== "+posTests+" total positive test cases"); if (negTests != 0) System.out.println("=== "+negTests+" total negative test cases"); @@ -383,6 +385,13 @@ MethodType ttype2 = MethodType.methodType(targetType.returnType(), argTypes); return target.asType(ttype2); } + static MethodHandle addTrailingArgs(MethodHandle target, int nargs, Class<?> argClass) { + int targetLen = target.type().parameterCount(); + int extra = (nargs - targetLen); + if (extra <= 0) return target; + List<Class<?>> fakeArgs = Collections.<Class<?>>nCopies(extra, argClass); + return MethodHandles.dropArguments(target, targetLen, fakeArgs); + } // This lookup is good for all members in and under MethodHandlesTest. static final Lookup PRIVATE = MethodHandles.lookup(); @@ -419,6 +428,10 @@ public static Object s6(int x, long y) { return called("s6", x, y); } public static Object s7(float x, double y) { return called("s7", x, y); } + // for testing findConstructor: + public Example(String x, int y) { this.name = x+y; called("Example.<init>", x, y); } + public Example(int x, String y) { this.name = x+y; called("Example.<init>", x, y); } + static final Lookup EXAMPLE = MethodHandles.lookup(); // for testing findSpecial } static final Lookup EXAMPLE = Example.EXAMPLE; @@ -521,7 +534,6 @@ if (!positive) return; // negative test failed as expected assertEquals(type, target.type()); assertNameStringContains(target, name); - if (!DO_MORE_CALLS && lookup != PRIVATE) return; Object[] args = randomArgs(params); printCalled(target, name, args); target.invokeWithArguments(args); @@ -604,7 +616,6 @@ MethodType typeWithSelf = MethodType.methodType(ret, paramsWithSelf); assertEquals(typeWithSelf, target.type()); assertNameStringContains(target, methodName); - if (!DO_MORE_CALLS && lookup != PRIVATE) return; Object[] argsWithSelf = randomArgs(paramsWithSelf); if (rcvc != defc) argsWithSelf[0] = randomArg(rcvc); printCalled(target, name, argsWithSelf); @@ -666,7 +677,6 @@ Class<?>[] paramsWithSelf = cat(array(Class[].class, (Class)specialCaller), params); MethodType typeWithSelf = MethodType.methodType(ret, paramsWithSelf); assertNameStringContains(target, name); - if (!DO_MORE_CALLS && lookup != PRIVATE && lookup != EXAMPLE) return; Object[] args = randomArgs(paramsWithSelf); printCalled(target, name, args); target.invokeWithArguments(args); @@ -674,6 +684,43 @@ } @Test + public void testFindConstructor() throws Throwable { + if (CAN_SKIP_WORKING) return; + startTest("findConstructor"); + testFindConstructor(true, EXAMPLE, Example.class); + testFindConstructor(true, EXAMPLE, Example.class, int.class); + testFindConstructor(true, EXAMPLE, Example.class, String.class); + } + void testFindConstructor(boolean positive, Lookup lookup, + Class<?> defc, Class<?>... params) throws Throwable { + countTest(positive); + MethodType type = MethodType.methodType(void.class, params); + MethodHandle target = null; + Exception noAccess = null; + try { + if (verbosity >= 4) System.out.println("lookup via "+lookup+" of "+defc+" <init>"+type); + target = lookup.findConstructor(defc, type); + } catch (ReflectiveOperationException ex) { + noAccess = ex; + assertTrue(noAccess instanceof IllegalAccessException); + } + if (verbosity >= 3) + System.out.println("findConstructor "+defc.getName()+".<init>/"+type+" => "+target + +(target == null ? "" : target.type()) + +(noAccess == null ? "" : " !! "+noAccess)); + if (positive && noAccess != null) throw noAccess; + assertEquals(positive ? "positive test" : "negative test erroneously passed", positive, target != null); + if (!positive) return; // negative test failed as expected + assertEquals(type.changeReturnType(defc), target.type()); + Object[] args = randomArgs(params); + printCalled(target, defc.getSimpleName(), args); + Object obj = target.invokeWithArguments(args); + if (!(defc == Example.class && params.length < 2)) + assertCalled(defc.getSimpleName()+".<init>", args); + assertTrue("instance of "+defc.getName(), defc.isInstance(obj)); + } + + @Test public void testBind() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("bind"); @@ -956,6 +1003,8 @@ public void testAccessor(boolean positive, MethodHandles.Lookup lookup, Object fieldRef, Object value, int testMode0) throws Throwable { + if (verbosity >= 4) + System.out.println("testAccessor"+Arrays.asList(positive, lookup, fieldRef, value, testMode0)); boolean isGetter = ((testMode0 & TEST_SETTER) == 0); int testMode = testMode0 & ~TEST_SETTER; boolean isStatic; @@ -1150,7 +1199,7 @@ public void testArrayElementGetterSetter(Object array, boolean testSetter) throws Throwable { countTest(true); - if (verbosity >= 2) System.out.println("array type = "+array.getClass().getComponentType().getName()+"["+Array.getLength(array)+"]"); + if (verbosity > 2) System.out.println("array type = "+array.getClass().getComponentType().getName()+"["+Array.getLength(array)+"]"); Class<?> arrayType = array.getClass(); Class<?> elemType = arrayType.getComponentType(); MethodType expType = !testSetter @@ -1326,9 +1375,10 @@ public void testPermuteArguments() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("permuteArguments"); + testPermuteArguments(4, Integer.class, 2, long.class, 6); + if (CAN_TEST_LIGHTLY) return; testPermuteArguments(4, Integer.class, 2, String.class, 0); testPermuteArguments(6, Integer.class, 0, null, 30); - //testPermuteArguments(4, Integer.class, 2, long.class, 6); // FIXME Fail_7 } public void testPermuteArguments(int max, Class<?> type1, int t2c, Class<?> type2, int dilution) throws Throwable { if (verbosity >= 2) @@ -1354,7 +1404,9 @@ casStep++; testPermuteArguments(args, types, outargs, numcases, casStep); numcases *= inargs; + if (CAN_TEST_LIGHTLY && outargs < max-2) continue; if (dilution > 10 && outargs >= 4) { + if (CAN_TEST_LIGHTLY) continue; int[] reorder = new int[outargs]; // Do some special patterns, which we probably missed. // Replication of a single argument or argument pair. @@ -1392,6 +1444,7 @@ reorder[i] = c % inargs; c /= inargs; } + if (CAN_TEST_LIGHTLY && outargs >= 3 && (reorder[0] == reorder[1] || reorder[1] == reorder[2])) continue; testPermuteArguments(args, types, reorder); } } @@ -1464,12 +1517,13 @@ for (Class<?> argType : new Class[]{Object.class, Integer.class, int.class}) { if (verbosity >= 3) System.out.println("spreadArguments "+argType); - // FIXME: enable _adapter_spread_args and fix Fail_2 - for (int nargs = 0; nargs < 10; nargs++) { - if (argType == int.class && nargs >= 6) continue; // FIXME Fail_1 - for (int pos = 0; pos < nargs; pos++) { - if (argType == int.class && pos > 0) continue; // FIXME Fail_3 - testSpreadArguments(argType, pos, nargs); + for (int nargs = 0; nargs < 50; nargs++) { + if (CAN_TEST_LIGHTLY && nargs > 7) break; + for (int pos = 0; pos <= nargs; pos++) { + if (CAN_TEST_LIGHTLY && pos > 2 && pos < nargs-2) continue; + if (nargs > 10 && pos > 4 && pos < nargs-4 && pos % 10 != 3) + continue; + testSpreadArguments(argType, pos, nargs); } } } @@ -1557,9 +1611,12 @@ for (Class<?> argType : new Class[]{Object.class, Integer.class, int.class}) { if (verbosity >= 3) System.out.println("collectArguments "+argType); - for (int nargs = 0; nargs < 10; nargs++) { - for (int pos = 0; pos < nargs; pos++) { - if (argType == int.class) continue; // FIXME Fail_4 + for (int nargs = 0; nargs < 50; nargs++) { + if (CAN_TEST_LIGHTLY && nargs > 7) break; + for (int pos = 0; pos <= nargs; pos++) { + if (CAN_TEST_LIGHTLY && pos > 2 && pos < nargs-2) continue; + if (nargs > 10 && pos > 4 && pos < nargs-4 && pos % 10 != 3) + continue; testCollectArguments(argType, pos, nargs); } } @@ -1593,10 +1650,15 @@ public void testInsertArguments() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("insertArguments"); - for (int nargs = 0; nargs <= 4; nargs++) { - for (int ins = 0; ins <= 4; ins++) { - if (ins > MAX_ARG_INCREASE) continue; // FIXME Fail_6 + for (int nargs = 0; nargs < 50; nargs++) { + if (CAN_TEST_LIGHTLY && nargs > 7) break; + for (int ins = 0; ins <= nargs; ins++) { + if (nargs > 10 && ins > 4 && ins < nargs-4 && ins % 10 != 3) + continue; for (int pos = 0; pos <= nargs; pos++) { + if (nargs > 10 && pos > 4 && pos < nargs-4 && pos % 10 != 3) + continue; + if (CAN_TEST_LIGHTLY && pos > 2 && pos < nargs-2) continue; testInsertArguments(nargs, pos, ins); } } @@ -1634,8 +1696,8 @@ for (Class<?> rtype : new Class[] { Object.class, List.class, int.class, - //byte.class, //FIXME: add this - //long.class, //FIXME: add this + byte.class, + long.class, CharSequence.class, String.class }) { testFilterReturnValue(nargs, rtype); @@ -1780,6 +1842,7 @@ // exactInvoker, genericInvoker, varargsInvoker[0..N], dynamicInvoker Set<MethodType> done = new HashSet<MethodType>(); for (int i = 0; i <= 6; i++) { + if (CAN_TEST_LIGHTLY && i > 3) break; MethodType gtype = MethodType.genericMethodType(i); for (Class<?> argType : new Class[]{Object.class, Integer.class, int.class}) { for (int j = -1; j < i; j++) { @@ -1790,7 +1853,6 @@ continue; else type = type.changeParameterType(j, argType); - if (argType.isPrimitive() && j != i-1) continue; // FIXME Fail_5 if (done.add(type)) testInvokers(type); MethodType vtype = type.changeReturnType(void.class); @@ -1890,6 +1952,7 @@ } for (int k = 0; k <= nargs; k++) { // varargs invoker #0..N + if (CAN_TEST_LIGHTLY && (k > 1 || k < nargs - 1)) continue; countTest(); calledLog.clear(); inv = MethodHandles.spreadInvoker(type, k); @@ -1933,6 +1996,7 @@ } private static final String MISSING_ARG = "missingArg"; + private static final String MISSING_ARG_2 = "missingArg#2"; static Object targetIfEquals() { return called("targetIfEquals"); } @@ -1968,28 +2032,39 @@ public void testGuardWithTest() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("guardWithTest"); - for (int nargs = 0; nargs <= 3; nargs++) { - if (nargs != 2) continue; // FIXME: test more later + for (int nargs = 0; nargs <= 50; nargs++) { + if (CAN_TEST_LIGHTLY && nargs > 7) break; testGuardWithTest(nargs, Object.class); testGuardWithTest(nargs, String.class); } } void testGuardWithTest(int nargs, Class<?> argClass) throws Throwable { + testGuardWithTest(nargs, 0, argClass); + if (nargs <= 5 || nargs % 10 == 3) { + for (int testDrops = 1; testDrops <= nargs; testDrops++) + testGuardWithTest(nargs, testDrops, argClass); + } + } + void testGuardWithTest(int nargs, int testDrops, Class<?> argClass) throws Throwable { countTest(); + int nargs1 = Math.min(3, nargs); MethodHandle test = PRIVATE.findVirtual(Object.class, "equals", MethodType.methodType(boolean.class, Object.class)); - MethodHandle target = PRIVATE.findStatic(MethodHandlesTest.class, "targetIfEquals", MethodType.genericMethodType(nargs)); - MethodHandle fallback = PRIVATE.findStatic(MethodHandlesTest.class, "fallbackIfNotEquals", MethodType.genericMethodType(nargs)); - while (test.type().parameterCount() < nargs) - test = MethodHandles.dropArguments(test, test.type().parameterCount()-1, Object.class); + MethodHandle target = PRIVATE.findStatic(MethodHandlesTest.class, "targetIfEquals", MethodType.genericMethodType(nargs1)); + MethodHandle fallback = PRIVATE.findStatic(MethodHandlesTest.class, "fallbackIfNotEquals", MethodType.genericMethodType(nargs1)); while (test.type().parameterCount() > nargs) + // 0: test = constant(MISSING_ARG.equals(MISSING_ARG)) + // 1: test = lambda (_) MISSING_ARG.equals(_) test = MethodHandles.insertArguments(test, 0, MISSING_ARG); if (argClass != Object.class) { test = changeArgTypes(test, argClass); target = changeArgTypes(target, argClass); fallback = changeArgTypes(fallback, argClass); } - MethodHandle mh = MethodHandles.guardWithTest(test, target, fallback); - assertEquals(target.type(), mh.type()); + int testArgs = nargs - testDrops; + assert(testArgs >= 0); + test = addTrailingArgs(test, Math.min(testArgs, nargs), argClass); + target = addTrailingArgs(target, nargs, argClass); + fallback = addTrailingArgs(fallback, nargs, argClass); Object[][] argLists = { { }, { "foo" }, { MISSING_ARG }, @@ -1997,7 +2072,19 @@ { "foo", "foo", "baz" }, { "foo", "bar", "baz" } }; for (Object[] argList : argLists) { - if (argList.length != nargs) continue; + Object[] argList1 = argList; + if (argList.length != nargs) { + if (argList.length != nargs1) continue; + argList1 = Arrays.copyOf(argList, nargs); + Arrays.fill(argList1, nargs1, nargs, MISSING_ARG_2); + } + MethodHandle test1 = test; + if (test1.type().parameterCount() > testArgs) { + int pc = test1.type().parameterCount(); + test1 = MethodHandles.insertArguments(test, testArgs, Arrays.copyOfRange(argList1, testArgs, pc)); + } + MethodHandle mh = MethodHandles.guardWithTest(test1, target, fallback); + assertEquals(target.type(), mh.type()); boolean equals; switch (nargs) { case 0: equals = true; break; @@ -2007,7 +2094,7 @@ String willCall = (equals ? "targetIfEquals" : "fallbackIfNotEquals"); if (verbosity >= 3) System.out.println(logEntry(willCall, argList)); - Object result = mh.invokeWithArguments(argList); + Object result = mh.invokeWithArguments(argList1); assertCalled(willCall, argList); } } @@ -2016,49 +2103,102 @@ public void testCatchException() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("catchException"); - for (int nargs = 2; nargs <= 6; nargs++) { - for (int ti = 0; ti <= 1; ti++) { - boolean throwIt = (ti != 0); - testCatchException(int.class, new ClassCastException("testing"), throwIt, nargs); - testCatchException(void.class, new java.io.IOException("testing"), throwIt, nargs); - testCatchException(String.class, new LinkageError("testing"), throwIt, nargs); + for (int nargs = 0; nargs < 40; nargs++) { + if (CAN_TEST_LIGHTLY && nargs > 7) break; + for (int throwMode = 0; throwMode < THROW_MODE_LIMIT; throwMode++) { + testCatchException(int.class, new ClassCastException("testing"), throwMode, nargs); + if (CAN_TEST_LIGHTLY && nargs > 3) continue; + testCatchException(void.class, new java.io.IOException("testing"), throwMode, nargs); + testCatchException(String.class, new LinkageError("testing"), throwMode, nargs); } } } + static final int THROW_NOTHING = 0, THROW_CAUGHT = 1, THROW_UNCAUGHT = 2, THROW_THROUGH_ADAPTER = 3, THROW_MODE_LIMIT = 4; + + void testCatchException(Class<?> returnType, Throwable thrown, int throwMode, int nargs) throws Throwable { + testCatchException(returnType, thrown, throwMode, nargs, 0); + if (nargs <= 5 || nargs % 10 == 3) { + for (int catchDrops = 1; catchDrops <= nargs; catchDrops++) + testCatchException(returnType, thrown, throwMode, nargs, catchDrops); + } + } + private static <T extends Throwable> Object throwOrReturn(Object normal, T exception) throws T { - if (exception != null) throw exception; + if (exception != null) { + called("throwOrReturn/throw", normal, exception); + throw exception; + } + called("throwOrReturn/normal", normal, exception); return normal; } + private int fakeIdentityCount; + private Object fakeIdentity(Object x) { + System.out.println("should throw through this!"); + fakeIdentityCount++; + return x; + } - void testCatchException(Class<?> returnType, Throwable thrown, boolean throwIt, int nargs) throws Throwable { + void testCatchException(Class<?> returnType, Throwable thrown, int throwMode, int nargs, int catchDrops) throws Throwable { countTest(); if (verbosity >= 3) - System.out.println("catchException rt="+returnType+" throw="+throwIt+" nargs="+nargs); + System.out.println("catchException rt="+returnType+" throw="+throwMode+" nargs="+nargs+" drops="+catchDrops); Class<? extends Throwable> exType = thrown.getClass(); + if (throwMode > THROW_CAUGHT) thrown = new UnsupportedOperationException("do not catch this"); MethodHandle throwOrReturn = PRIVATE.findStatic(MethodHandlesTest.class, "throwOrReturn", MethodType.methodType(Object.class, Object.class, Throwable.class)); + if (throwMode == THROW_THROUGH_ADAPTER) { + MethodHandle fakeIdentity + = PRIVATE.findVirtual(MethodHandlesTest.class, "fakeIdentity", + MethodType.methodType(Object.class, Object.class)).bindTo(this); + for (int i = 0; i < 10; i++) + throwOrReturn = MethodHandles.filterReturnValue(throwOrReturn, fakeIdentity); + } + int nargs1 = Math.max(2, nargs); MethodHandle thrower = throwOrReturn.asType(MethodType.genericMethodType(2)); - while (thrower.type().parameterCount() < nargs) - thrower = MethodHandles.dropArguments(thrower, thrower.type().parameterCount(), Object.class); - MethodHandle catcher = varargsList(1+nargs).asType(MethodType.genericMethodType(1+nargs)); - MethodHandle target = MethodHandles.catchException(thrower, - thrown.getClass(), catcher); + thrower = addTrailingArgs(thrower, nargs, Object.class); + int catchArgc = 1 + nargs - catchDrops; + MethodHandle catcher = varargsList(catchArgc).asType(MethodType.genericMethodType(catchArgc)); + Object[] args = randomArgs(nargs, Object.class); + Object arg0 = MISSING_ARG; + Object arg1 = (throwMode == THROW_NOTHING) ? (Throwable) null : thrown; + if (nargs > 0) arg0 = args[0]; + if (nargs > 1) args[1] = arg1; + assertEquals(nargs1, thrower.type().parameterCount()); + if (nargs < nargs1) { + Object[] appendArgs = { arg0, arg1 }; + appendArgs = Arrays.copyOfRange(appendArgs, nargs, nargs1); + thrower = MethodHandles.insertArguments(thrower, nargs, appendArgs); + } + assertEquals(nargs, thrower.type().parameterCount()); + MethodHandle target = MethodHandles.catchException(thrower, exType, catcher); assertEquals(thrower.type(), target.type()); + assertEquals(nargs, target.type().parameterCount()); //System.out.println("catching with "+target+" : "+throwOrReturn); - Object[] args = randomArgs(nargs, Object.class); - args[1] = (throwIt ? thrown : null); - Object returned = target.invokeWithArguments(args); + Object returned; + try { + returned = target.invokeWithArguments(args); + } catch (Throwable ex) { + assertSame("must get the out-of-band exception", thrown, ex); + if (throwMode <= THROW_CAUGHT) + assertEquals(THROW_UNCAUGHT, throwMode); + returned = ex; + } + assertCalled("throwOrReturn/"+(throwMode == THROW_NOTHING ? "normal" : "throw"), arg0, arg1); //System.out.println("return from "+target+" : "+returned); - if (!throwIt) { - assertSame(args[0], returned); - } else { + if (throwMode == THROW_NOTHING) { + assertSame(arg0, returned); + } else if (throwMode == THROW_CAUGHT) { List<Object> catchArgs = new ArrayList<Object>(Arrays.asList(args)); + // catcher receives an initial subsequence of target arguments: + catchArgs.subList(nargs - catchDrops, nargs).clear(); + // catcher also receives the exception, prepended: catchArgs.add(0, thrown); assertEquals(catchArgs, returned); } + assertEquals(0, fakeIdentityCount); } @Test @@ -2093,6 +2233,48 @@ } @Test + public void testInterfaceCast() throws Throwable { + for (Class<?> ctype : new Class<?>[]{ Object.class, String.class, CharSequence.class, Number.class, Iterable.class}) { + testInterfaceCast(ctype, false, false); + testInterfaceCast(ctype, true, false); + testInterfaceCast(ctype, false, true); + testInterfaceCast(ctype, true, true); + } + } + public void testInterfaceCast(Class<?> ctype, boolean doret, boolean docast) throws Throwable { + String str = "normal return value"; + MethodHandle mh = MethodHandles.identity(String.class); + MethodType mt = mh.type(); + if (doret) mt = mt.changeReturnType(ctype); + else mt = mt.changeParameterType(0, ctype); + if (docast) mh = MethodHandles.explicitCastArguments(mh, mt); + else mh = mh.asType(mt); + // this bit is needed to make the interface types disappear for invokeWithArguments: + mh = MethodHandles.explicitCastArguments(mh, mt.generic()); + boolean expectFail = !ctype.isInstance(str); + if (ctype.isInterface()) { + // special rules: interfaces slide by more frequently + if (docast || !doret) expectFail = false; + } + Object res; + try { + res = mh.invokeWithArguments(str); + } catch (Exception ex) { + res = ex; + } + boolean sawFail = !(res instanceof String); + if (sawFail != expectFail) { + System.out.println("*** testInterfaceCast: "+mh+" was "+mt+" => "+res+(docast ? " (explicitCastArguments)" : "")); + } + if (!sawFail) { + assertFalse(res.toString(), expectFail); + assertEquals(str, res); + } else { + assertTrue(res.toString(), expectFail); + } + } + + @Test public void testCastFailure() throws Throwable { if (CAN_SKIP_WORKING) return; startTest("testCastFailure"); @@ -2234,47 +2416,106 @@ static void runForRunnable() { called("runForRunnable"); } - private interface Fooable { - Object foo(Fooable x, Object y); - // this is for randomArg: - public class Impl implements Fooable { - public Object foo(Fooable x, Object y) { - throw new RuntimeException("do not call"); - } - final String name; - public Impl() { name = "Fooable#"+nextArg(); } - @Override public String toString() { return name; } - } + public interface Fooable { + // overloads: + Object foo(Object x, String y); + List foo(String x, int y); + Object foo(String x); } - static Object fooForFooable(Fooable x, Object y) { - return called("fooForFooable", x, y); + static Object fooForFooable(String x, Object... y) { + return called("fooForFooable/"+x, y); + } + public static class MyCheckedException extends Exception { } - private static class MyCheckedException extends Exception { + public interface WillThrow { + void willThrow() throws MyCheckedException; } - private interface WillThrow { - void willThrow() throws MyCheckedException; + /*non-public*/ interface PrivateRunnable { + public void run(); } @Test - public void testAsInstance() throws Throwable { + public void testAsInterfaceInstance() throws Throwable { if (CAN_SKIP_WORKING) return; + startTest("testAsInterfaceInstance"); Lookup lookup = MethodHandles.lookup(); + // test typical case: Runnable.run { + countTest(); + if (verbosity >= 2) System.out.println("Runnable"); MethodType mt = MethodType.methodType(void.class); MethodHandle mh = lookup.findStatic(MethodHandlesTest.class, "runForRunnable", mt); Runnable proxy = MethodHandleProxies.asInterfaceInstance(Runnable.class, mh); proxy.run(); assertCalled("runForRunnable"); } + // well known single-name overloaded interface: Appendable.append { - MethodType mt = MethodType.methodType(Object.class, Fooable.class, Object.class); - MethodHandle mh = lookup.findStatic(MethodHandlesTest.class, "fooForFooable", mt); + countTest(); + if (verbosity >= 2) System.out.println("Appendable"); + ArrayList<List> appendResults = new ArrayList<List>(); + MethodHandle append = lookup.bind(appendResults, "add", MethodType.methodType(boolean.class, Object.class)); + append = append.asType(MethodType.methodType(void.class, List.class)); // specialize the type + MethodHandle asList = lookup.findStatic(Arrays.class, "asList", MethodType.methodType(List.class, Object[].class)); + MethodHandle mh = MethodHandles.filterReturnValue(asList, append).asVarargsCollector(Object[].class); + Appendable proxy = MethodHandleProxies.asInterfaceInstance(Appendable.class, mh); + proxy.append("one"); + proxy.append("two", 3, 4); + proxy.append('5'); + assertEquals(Arrays.asList(Arrays.asList("one"), + Arrays.asList("two", 3, 4), + Arrays.asList('5')), + appendResults); + if (verbosity >= 3) System.out.println("appendResults="+appendResults); + appendResults.clear(); + Formatter formatter = new Formatter(proxy); + String fmt = "foo str=%s char='%c' num=%d"; + Object[] fmtArgs = { "str!", 'C', 42 }; + String expect = String.format(fmt, fmtArgs); + formatter.format(fmt, fmtArgs); + String actual = ""; + if (verbosity >= 3) System.out.println("appendResults="+appendResults); + for (List l : appendResults) { + Object x = l.get(0); + switch (l.size()) { + case 1: actual += x; continue; + case 3: actual += ((String)x).substring((int)l.get(1), (int)l.get(2)); continue; + } + actual += l; + } + if (verbosity >= 3) System.out.println("expect="+expect); + if (verbosity >= 3) System.out.println("actual="+actual); + assertEquals(expect, actual); + } + // test case of an single name which is overloaded: Fooable.foo(...) + { + if (verbosity >= 2) System.out.println("Fooable"); + MethodHandle mh = lookup.findStatic(MethodHandlesTest.class, "fooForFooable", + MethodType.methodType(Object.class, String.class, Object[].class)); Fooable proxy = MethodHandleProxies.asInterfaceInstance(Fooable.class, mh); - Object[] args = randomArgs(mt.parameterArray()); - Object result = proxy.foo((Fooable) args[0], args[1]); - assertCalled("fooForFooable", args); - assertEquals(result, logEntry("fooForFooable", args)); + for (Method m : Fooable.class.getDeclaredMethods()) { + countTest(); + assertSame("foo", m.getName()); + if (verbosity > 3) + System.out.println("calling "+m); + MethodHandle invoker = lookup.unreflect(m); + MethodType mt = invoker.type(); + Class<?>[] types = mt.parameterArray(); + types[0] = int.class; // placeholder + Object[] args = randomArgs(types); + args[0] = proxy; + if (verbosity > 3) + System.out.println("calling "+m+" on "+Arrays.asList(args)); + Object result = invoker.invokeWithArguments(args); + if (verbosity > 4) + System.out.println("result = "+result); + String name = "fooForFooable/"+args[1]; + Object[] argTail = Arrays.copyOfRange(args, 2, args.length); + assertCalled(name, argTail); + assertEquals(result, logEntry(name, argTail)); + } } + // test processing of thrown exceptions: for (Throwable ex : new Throwable[] { new NullPointerException("ok"), new InternalError("ok"), new Throwable("fail"), @@ -2285,11 +2526,12 @@ mh = MethodHandles.insertArguments(mh, 0, ex); WillThrow proxy = MethodHandleProxies.asInterfaceInstance(WillThrow.class, mh); try { + countTest(); proxy.willThrow(); System.out.println("Failed to throw: "+ex); assertTrue(false); } catch (Throwable ex1) { - if (verbosity > 2) { + if (verbosity > 3) { System.out.println("throw "+ex); System.out.println("catch "+(ex == ex1 ? "UNWRAPPED" : ex1)); } @@ -2300,23 +2542,84 @@ assertSame("must pass declared exception out without wrapping", ex, ex1); } else { assertNotSame("must pass undeclared checked exception with wrapping", ex, ex1); + if (!(ex1 instanceof UndeclaredThrowableException) || ex1.getCause() != ex) { + ex1.printStackTrace(); + } + assertSame(ex, ex1.getCause()); UndeclaredThrowableException utex = (UndeclaredThrowableException) ex1; - assertSame(ex, utex.getCause()); } } } - // Test error checking: - for (Class<?> nonSAM : new Class[] { Object.class, + // Test error checking on bad interfaces: + for (Class<?> nonSMI : new Class[] { Object.class, String.class, CharSequence.class, + java.io.Serializable.class, + PrivateRunnable.class, Example.class }) { + if (verbosity > 2) System.out.println(nonSMI.getName()); try { - MethodHandleProxies.asInterfaceInstance(nonSAM, varargsArray(0)); - System.out.println("Failed to throw"); - assertTrue(false); + countTest(false); + MethodHandleProxies.asInterfaceInstance(nonSMI, varargsArray(0)); + assertTrue("Failed to throw on "+nonSMI.getName(), false); } catch (IllegalArgumentException ex) { + if (verbosity > 2) System.out.println(nonSMI.getSimpleName()+": "+ex); + // Object: java.lang.IllegalArgumentException: + // not a public interface: java.lang.Object + // String: java.lang.IllegalArgumentException: + // not a public interface: java.lang.String + // CharSequence: java.lang.IllegalArgumentException: + // not a single-method interface: java.lang.CharSequence + // Serializable: java.lang.IllegalArgumentException: + // not a single-method interface: java.io.Serializable + // PrivateRunnable: java.lang.IllegalArgumentException: + // not a public interface: test.java.lang.invoke.MethodHandlesTest$PrivateRunnable + // Example: java.lang.IllegalArgumentException: + // not a public interface: test.java.lang.invoke.MethodHandlesTest$Example } } + // Test error checking on interfaces with the wrong method type: + for (Class<?> intfc : new Class[] { Runnable.class /*arity 0*/, + Fooable.class /*arity 1 & 2*/ }) { + int badArity = 1; // known to be incompatible + if (verbosity > 2) System.out.println(intfc.getName()); + try { + countTest(false); + MethodHandleProxies.asInterfaceInstance(intfc, varargsArray(badArity)); + assertTrue("Failed to throw on "+intfc.getName(), false); + } catch (WrongMethodTypeException ex) { + if (verbosity > 2) System.out.println(intfc.getSimpleName()+": "+ex); + // Runnable: java.lang.invoke.WrongMethodTypeException: + // cannot convert MethodHandle(Object)Object[] to ()void + // Fooable: java.lang.invoke.WrongMethodTypeException: + // cannot convert MethodHandle(Object)Object[] to (Object,String)Object + } + } + } + + @Test + public void testRunnableProxy() throws Throwable { + if (CAN_SKIP_WORKING) return; + startTest("testRunnableProxy"); + MethodHandles.Lookup lookup = MethodHandles.lookup(); + MethodHandle run = lookup.findStatic(lookup.lookupClass(), "runForRunnable", MethodType.methodType(void.class)); + Runnable r = MethodHandleProxies.asInterfaceInstance(Runnable.class, run); + testRunnableProxy(r); + assertCalled("runForRunnable"); + } + private static void testRunnableProxy(Runnable r) { + //7058630: JSR 292 method handle proxy violates contract for Object methods + r.run(); + Object o = r; + r = null; + boolean eq = (o == o); + int hc = System.identityHashCode(o); + String st = o.getClass().getName() + "@" + Integer.toHexString(hc); + Object expect = Arrays.asList(st, eq, hc); + if (verbosity >= 2) System.out.println("expect st/eq/hc = "+expect); + Object actual = Arrays.asList(o.toString(), o.equals(o), o.hashCode()); + if (verbosity >= 2) System.out.println("actual st/eq/hc = "+actual); + assertEquals(expect, actual); } } // Local abbreviated copy of sun.invoke.util.ValueConversions @@ -2380,8 +2683,7 @@ public static MethodHandle varargsArray(int nargs) { if (nargs < ARRAYS.length) return ARRAYS[nargs]; - // else need to spin bytecode or do something else fancy - throw new UnsupportedOperationException("NYI: cannot form a varargs array of length "+nargs); + return MethodHandles.identity(Object[].class).asCollector(Object[].class, nargs); } public static MethodHandle varargsArray(Class<?> arrayType, int nargs) { Class<?> elemType = arrayType.getComponentType(); @@ -2463,6 +2765,12 @@ return lists.toArray(new MethodHandle[0]); } static final MethodHandle[] LISTS = makeLists(); + static final MethodHandle AS_LIST; + static { + try { + AS_LIST = IMPL_LOOKUP.findStatic(Arrays.class, "asList", MethodType.methodType(List.class, Object[].class)); + } catch (Exception ex) { throw new RuntimeException(ex); } + } /** Return a method handle that takes the indicated number of Object * arguments and returns List. @@ -2470,8 +2778,7 @@ public static MethodHandle varargsList(int nargs) { if (nargs < LISTS.length) return LISTS[nargs]; - // else need to spin bytecode or do something else fancy - throw new UnsupportedOperationException("NYI"); + return AS_LIST.asCollector(Object[].class, nargs); } } // This guy tests access from outside the same package member, but inside
--- a/test/java/lang/invoke/RicochetTest.java Thu Aug 04 08:53:16 2011 -0700 +++ b/test/java/lang/invoke/RicochetTest.java Fri Aug 05 16:03:00 2011 -0700 @@ -82,6 +82,7 @@ testLongSpreads(); testIntCollects(); testReturns(); + testRecursion(); } @Test @@ -371,6 +372,61 @@ //System.out.println("faultCount="+faultCount); } + @Test + public void testRecursion() throws Throwable { + if (!startTest("testRecursion")) return; + final int LIMIT = 10; + for (int i = 0; i < LIMIT; i++) { + RFCB rfcb = new RFCB(i); + Object x = "x", y = "y"; + Object result = rfcb.recursiveFunction(x, y); + verbose(1, result); + } + } + /** Recursive Function Control Block */ + private static class RFCB { + java.util.Random random; + final MethodHandle[] fns; + int depth; + RFCB(int seed) throws Throwable { + this.random = new java.util.Random(seed); + this.fns = new MethodHandle[Math.max(29, (1 << MAX_DEPTH-2)/3)]; + java.util.Arrays.fill(fns, lookup().bind(this, "recursiveFunction", genericMethodType(2))); + for (int i = 5; i < fns.length; i++) { + switch (i % 4) { + case 0: fns[i] = filterArguments(fns[i - 5], 0, insertArguments(fns[i - 4], 1, ".")); break; + case 1: fns[i] = filterArguments(fns[i - 5], 1, insertArguments(fns[i - 3], 1, ".")); break; + case 2: fns[i] = filterReturnValue(fns[i - 5], insertArguments(fns[i - 2], 1, ".")); break; + } + } + } + Object recursiveFunction(Object x, Object y) throws Throwable { + depth++; + try { + final int ACTION_COUNT = 11; + switch (random.nextInt(ACTION_COUNT)) { + case 1: + Throwable ex = new RuntimeException(); + ex.fillInStackTrace(); + if (VERBOSITY >= 2) ex.printStackTrace(); + x = "ST; " + x; + break; + case 2: + System.gc(); + x = "GC; " + x; + break; + } + boolean isLeaf = (depth >= MAX_DEPTH); + if (isLeaf) { + return Arrays.asList(x, y).toString(); + } + return fns[random.nextInt(fns.length)].invokeExact(x, y); + } finally { + depth--; + } + } + } + private static MethodHandle sequence(MethodHandle mh1, MethodHandle... mhs) { MethodHandle res = mh1; for (MethodHandle mh2 : mhs) @@ -536,6 +592,7 @@ } // stress modes: + private static final int MAX_DEPTH = getProperty("MAX_DEPTH", 5); private static final int REPEAT = getProperty("REPEAT", 0); private static final int STRESS = getProperty("STRESS", 0); private static /*v*/ int STRESS_COUNT;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/lang/invoke/ThrowExceptionsTest.java Fri Aug 05 16:03:00 2011 -0700 @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + * @summary unit tests for method handles which permute their arguments + * @run junit test.java.lang.invoke.ThrowExceptionsTest + */ + +package test.java.lang.invoke; + +import org.junit.*; + +import java.util.*; +import java.lang.reflect.*; + +import java.lang.invoke.*; +import static java.lang.invoke.MethodHandles.*; +import static java.lang.invoke.MethodType.*; + +public class ThrowExceptionsTest { + private static final Class CLASS = ThrowExceptionsTest.class; + private static final Lookup LOOKUP = lookup(); + + public static void main(String argv[]) throws Throwable { + new ThrowExceptionsTest().testAll((argv.length == 0 ? null : Arrays.asList(argv).toString())); + } + + @Test + public void testWMT() throws Throwable { + // mostly call testWMTCallee, but sometimes call its void-returning variant + MethodHandle mh = testWMTCallee(); + MethodHandle mh1 = mh.asType(mh.type().changeReturnType(void.class)); + assert(mh1 != mh); + testWMT(mh, mh1, 1000); + } + + @Test + public void testBoundWMT() throws Throwable { + // mostly call exactInvoker.bindTo(testWMTCallee), but sometimes call its void-returning variant + MethodHandle callee = testWMTCallee(); + MethodHandle callee1 = callee.asType(callee.type().changeReturnType(void.class)); + MethodHandle invoker = exactInvoker(callee.type()); + MethodHandle mh = invoker.bindTo(callee); + MethodHandle mh1 = invoker.bindTo(callee1); + testWMT(mh, mh1, 1000); + } + + @Test + public void testFoldWMT() throws Throwable { + // mostly call exactInvoker.fold(constant(testWMTCallee)), but sometimes call its void-returning variant + MethodHandle callee = testWMTCallee(); + MethodHandle callee1 = callee.asType(callee.type().changeReturnType(void.class)); + MethodHandle invoker = exactInvoker(callee.type()); + MethodHandle mh = foldArguments(invoker, constant(MethodHandle.class, callee)); + MethodHandle mh1 = foldArguments(invoker, constant(MethodHandle.class, callee1)); + testWMT(mh, mh1, 1000); + } + + @Test + public void testFoldCCE() throws Throwable { + MethodHandle callee = testWMTCallee(); + MethodHandle callee1 = callee.asType(callee.type().changeParameterType(1, Number.class)).asType(callee.type()); + MethodHandle invoker = exactInvoker(callee.type()); + MethodHandle mh = foldArguments(invoker, constant(MethodHandle.class, callee)); + MethodHandle mh1 = foldArguments(invoker, constant(MethodHandle.class, callee1)); + testWMT(mh, mh1, 1000); + } + + @Test + public void testStackOverflow() throws Throwable { + MethodHandle callee = testWMTCallee(); + MethodHandle callee1 = makeStackOverflow().asType(callee.type()); + MethodHandle invoker = exactInvoker(callee.type()); + MethodHandle mh = foldArguments(invoker, constant(MethodHandle.class, callee)); + MethodHandle mh1 = foldArguments(invoker, constant(MethodHandle.class, callee1)); + for (int i = 0; i < REPEAT; i++) { + try { + testWMT(mh, mh1, 1000); + } catch (StackOverflowError ex) { + // OK, try again + } + } + } + + private static MethodHandle makeStackOverflow() { + MethodType cellType = methodType(void.class); + MethodHandle[] cell = { null }; // recursion point + MethodHandle getCell = insertArguments(arrayElementGetter(cell.getClass()), 0, cell, 0); + MethodHandle invokeCell = foldArguments(exactInvoker(cellType), getCell); + assert(invokeCell.type() == cellType); + cell[0] = invokeCell; + // make it conformable to any type: + invokeCell = dropArguments(invokeCell, 0, Object[].class).asVarargsCollector(Object[].class); + return invokeCell; + } + + static int testCases; + + private void testAll(String match) throws Throwable { + testCases = 0; + Lookup lookup = lookup(); + for (Method m : CLASS.getDeclaredMethods()) { + String name = m.getName(); + if (name.startsWith("test") && + (match == null || match.contains(name.substring("test".length()))) && + m.getParameterTypes().length == 0 && + Modifier.isPublic(m.getModifiers()) && + !Modifier.isStatic(m.getModifiers())) { + System.out.println("["+name+"]"); + int tc = testCases; + try { + m.invoke(this); + } catch (Throwable ex) { + System.out.println("*** "+ex); + ex.printStackTrace(); + } + if (testCases == tc) testCases++; + } + } + if (testCases == 0) throw new RuntimeException("no test cases found"); + System.out.println("ran a total of "+testCases+" test cases"); + } + + private static MethodHandle findStatic(String name) { + return findMethod(name, true); + } + private static MethodHandle findVirtual(String name) { + return findMethod(name, false); + } + private static MethodHandle findMethod(String name, boolean isStatic) { + MethodHandle mh = null; + for (Method m : CLASS.getDeclaredMethods()) { + if (m.getName().equals(name) && + Modifier.isStatic(m.getModifiers()) == isStatic) { + if (mh != null) + throw new RuntimeException("duplicate methods: "+name); + try { + mh = LOOKUP.unreflect(m); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } + } + if (mh == null) + throw new RuntimeException("no method: "+name); + return mh; + } + + int testWMTCallee; + private int testWMTCallee(String x) { + return testWMTCallee++; + } + private static MethodHandle testWMTCallee() { + MethodHandle callee = findVirtual("testWMTCallee"); + // FIXME: should not have to retype callee + callee = callee.asType(callee.type().changeParameterType(0, Object.class)); + return callee; + } + + private Exception testWMT(MethodHandle[] mhs, int reps) throws Throwable { + testCases += 1; + testWMTCallee = 0; + int catches = 0; + Exception savedEx = null; + for (int i = 0; i < reps; i++) { + MethodHandle mh = mhs[i % mhs.length]; + int n; + try { + // FIXME: should not have to retype this + n = (int) mh.invokeExact((Object)this, "x"); + assertEquals(n, i - catches); + // Using the exact type for this causes endless deopt due to + // 'non_cached_result' in SystemDictionary::find_method_handle_invoke. + // The problem is that the compiler thread needs to access a cached + // invoke method, but invoke methods are not cached if one of the + // component types is not on the BCP. + } catch (Exception ex) { + savedEx = ex; + catches++; + } + } + //VERBOSE: System.out.println("reps="+reps+" catches="+catches); + return savedEx; + } + + private static final int REPEAT = Integer.getInteger(CLASS.getSimpleName()+".REPEAT", 10); + + private Exception testWMT(MethodHandle mh, MethodHandle mh1, int reps) throws Throwable { + //VERBOSE: System.out.println("mh="+mh+" mh1="+mh1); + MethodHandle[] mhs = new MethodHandle[100]; + Arrays.fill(mhs, mh); + int patch = mhs.length-1; + Exception savedEx = null; + for (int i = 0; i < REPEAT; i++) { + mhs[patch] = mh; + testWMT(mhs, 10000); + mhs[patch] = mh1; + savedEx = testWMT(mhs, reps); + } + return savedEx; + } + + private static void assertEquals(Object x, Object y) { + if (x == y || x != null && x.equals(y)) return; + throw new RuntimeException(x+" != "+y); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/text/Bidi/Bug7042148.java Fri Aug 05 16:03:00 2011 -0700 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7042148 + * @summary verify that Bidi.baseIsLeftToRight() returns the correct value even if an incorrect position is set in the given AttributedCharacterIterator. + */ +import java.awt.font.*; +import java.text.*; +import java.util.*; + +public class Bug7042148 { + + private static boolean err = false; + + public static void main(String[] args) { + testDirection(); + + if (err) { + throw new RuntimeException("Failed"); + } else { + System.out.println("Passed."); + } + } + + private static void testDirection() { + Map attrLTR = new HashMap(); + attrLTR.put(TextAttribute.RUN_DIRECTION, + TextAttribute.RUN_DIRECTION_LTR); + Map attrRTL = new HashMap(); + attrRTL.put(TextAttribute.RUN_DIRECTION, + TextAttribute.RUN_DIRECTION_RTL); + + String str1 = "A\u05e0"; + String str2 = "\u05e0B"; + + test(str1, attrLTR, Bidi.DIRECTION_LEFT_TO_RIGHT); + test(str1, attrRTL, Bidi.DIRECTION_RIGHT_TO_LEFT); + test(str2, attrLTR, Bidi.DIRECTION_LEFT_TO_RIGHT); + test(str2, attrRTL, Bidi.DIRECTION_RIGHT_TO_LEFT); + } + + private static void test(String text, Map attr, int dirFlag) { + boolean expected = (dirFlag == Bidi.DIRECTION_LEFT_TO_RIGHT); + + Bidi bidi = new Bidi(text, dirFlag); + boolean got = bidi.baseIsLeftToRight(); + if (got != expected) { + err = true; + System.err.println("wrong Bidi(String, int).baseIsLeftToRight() value: " + + "\n\ttext=" + text + + "\n\tExpected=" + expected + + "\n\tGot=" + got); + } + + AttributedString as = new AttributedString(text, attr); + AttributedCharacterIterator itr = as.getIterator(); + itr.last(); + itr.next(); + bidi = new Bidi(itr); + got = bidi.baseIsLeftToRight(); + if (got != expected) { + err = true; + System.err.println("Wrong Bidi(AttributedCharacterIterator).baseIsLeftToRight() value: " + + "\n\ttext=" + text + + "\n\tExpected=" + expected + + "\n\tGot=" + got); + } + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/text/Bidi/Bug7051769.java Fri Aug 05 16:03:00 2011 -0700 @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7051769 + * @summary verify that Bidi.toString() returns the corect result. + */ +import java.awt.font.*; +import java.text.*; +import java.util.*; + +public class Bug7051769 { + + private static boolean err = false; + + public static void main(String[] args) { + testNumericShaping(); + + if (err) { + throw new RuntimeException("Failed"); + } else { + System.out.println("Passed."); + } + } + + private static void testNumericShaping() { + Map attrNS = new HashMap(); + attrNS.put(TextAttribute.NUMERIC_SHAPING, + NumericShaper.getContextualShaper(NumericShaper.ARABIC)); + attrNS.put(TextAttribute.RUN_DIRECTION, + TextAttribute.RUN_DIRECTION_RTL); + + String text = "\u0623\u0643\u062a\u0648\u0628\u0631 10"; + String expected = "sun.text.bidi.BidiBase[dir: 2 baselevel: 1 length: 9 runs: [1 1 1 1 1 1 1 2 2] text: [0x623 0x643 0x62a 0x648 0x628 0x631 0x20 0x661 0x660]]"; + + AttributedString as = new AttributedString(text, attrNS); + AttributedCharacterIterator itr = as.getIterator(); + itr.last(); + itr.next(); + Bidi bidi = new Bidi(itr); + String got = bidi.toString(); + + if (!got.equals(expected)) { + err = true; + System.err.println("Wrong toString() output: " + + "\n\tExpected=" + expected + + "\n\tGot=" + got); + } + } + +}