Path: blob/master/test/hotspot/jtreg/compiler/jvmci/compilerToVM/ConstantPoolTestsHelper.java
41153 views
/*1* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223package compiler.jvmci.compilerToVM;2425import compiler.jvmci.common.testcases.MultipleAbstractImplementer;26import compiler.jvmci.common.testcases.MultipleImplementer2;27import compiler.jvmci.common.testcases.MultipleImplementersInterface;28import compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes;29import compiler.jvmci.compilerToVM.ConstantPoolTestCase.TestedCPEntry;30import jdk.internal.access.SharedSecrets;31import jdk.internal.org.objectweb.asm.Opcodes;32import jdk.internal.reflect.ConstantPool;33import jdk.internal.reflect.ConstantPool.Tag;34import jdk.vm.ci.meta.MetaAccessProvider;35import jdk.vm.ci.meta.ResolvedJavaMethod;36import jdk.vm.ci.meta.ResolvedJavaType;37import jdk.vm.ci.runtime.JVMCI;38import sun.hotspot.WhiteBox;3940import java.util.HashMap;41import java.util.Map;4243import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_CLASS;44import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_FIELDREF;45import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_INTERFACEMETHODREF;46import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_INVOKEDYNAMIC;47import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_METHODHANDLE;48import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_METHODREF;49import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_METHODTYPE;50import static compiler.jvmci.compilerToVM.ConstantPoolTestCase.ConstantTypes.CONSTANT_STRING;5152/**53* Class contains hard-coded constant pool tables for dummy classes used for54* jdk.vm.ci.hotspot.CompilerToVM constant pool methods55*/56public class ConstantPoolTestsHelper {5758public static final int NO_CP_CACHE_PRESENT = Integer.MAX_VALUE;59private static final MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess();6061public enum DummyClasses {62DUMMY_CLASS(MultipleImplementer2.class, CP_MAP_FOR_CLASS),63DUMMY_ABS_CLASS(MultipleAbstractImplementer.class, CP_MAP_FOR_ABS_CLASS),64DUMMY_INTERFACE(MultipleImplementersInterface.class, CP_MAP_FOR_INTERFACE);6566private static final WhiteBox WB = WhiteBox.getWhiteBox();67public final Class<?> klass;68public final ConstantPool constantPoolSS;69public final Map<ConstantTypes, TestedCPEntry[]> testedCP;7071DummyClasses(Class<?> klass, Map<ConstantTypes, TestedCPEntry[]> testedCP) {72this.klass = klass;73this.constantPoolSS = SharedSecrets.getJavaLangAccess().getConstantPool(klass);74this.testedCP = testedCP;75}7677public int getCPCacheIndex(int cpi) {78int cacheLength = WB.getConstantPoolCacheLength(this.klass);79int indexTag = WB.getConstantPoolCacheIndexTag();80for (int cpci = indexTag; cpci < cacheLength + indexTag; cpci++) {81if (WB.remapInstructionOperandFromCPCache(this.klass, cpci) == cpi) {82if (constantPoolSS.getTagAt(cpi).equals(Tag.INVOKEDYNAMIC)) {83return WB.encodeConstantPoolIndyIndex(cpci) + indexTag;84}85return cpci;86}87}88return NO_CP_CACHE_PRESENT;89}90}9192/**93* Obtain a resolved Java method declared by a given type.94*95* @param type the declaring type96* @param the method's name97*98* Currently, the lookup is based only on the method's name99* but not on the method's signature (i.e., the first method100* with a matching name declared on {@code type} is returned).101*/102private static ResolvedJavaMethod getMethod(ResolvedJavaType type, String methodName) {103if (methodName.equals("<clinit>")) {104return type.getClassInitializer();105}106107if (methodName.equals("<init>")) {108ResolvedJavaMethod[] initializers = type.getDeclaredConstructors();109if (initializers.length >= 0) {110return initializers[0];111} else {112throw new IllegalArgumentException();113}114}115116for (ResolvedJavaMethod method : type.getDeclaredMethods()) {117if (method.getName().equals(methodName)) {118return method;119}120}121122throw new IllegalArgumentException();123}124125private static ResolvedJavaType getType(Class<?> clazz) {126ResolvedJavaType type = metaAccess.lookupJavaType(clazz);127type.initialize();128return type;129}130131private static final Map<ConstantTypes, TestedCPEntry[]> CP_MAP_FOR_CLASS = new HashMap<>();132static {133CP_MAP_FOR_CLASS.put(CONSTANT_CLASS,134new TestedCPEntry[] {135new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementersInterface", null, null),136new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2", null, null),137new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2$1", null, null),138new TestedCPEntry("java/lang/invoke/MethodHandles$Lookup", null, null),139}140);141CP_MAP_FOR_CLASS.put(CONSTANT_FIELDREF,142new TestedCPEntry[] {143new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",144"intStaticField",145"I",146new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},147Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC),148new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",149"longStaticField",150"J",151new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},152Opcodes.ACC_FINAL | Opcodes.ACC_STATIC),153new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",154"floatStaticField",155"F",156new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},157Opcodes.ACC_VOLATILE | Opcodes.ACC_STATIC),158new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",159"doubleStaticField",160"D",161new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},162Opcodes.ACC_STATIC),163new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",164"stringStaticField",165"Ljava/lang/String;",166new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},167Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC),168new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",169"objectStaticField",170"Ljava/lang/Object;",171new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},172Opcodes.ACC_PROTECTED | Opcodes.ACC_STATIC),173new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",174"intField",175"I",176new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},177Opcodes.ACC_PUBLIC),178new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",179"longField",180"J",181new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},182Opcodes.ACC_PRIVATE),183new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",184"floatField",185"F",186new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},187Opcodes.ACC_PROTECTED),188new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",189"doubleField",190"D",191new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},192Opcodes.ACC_TRANSIENT),193new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",194"objectField",195"Ljava/lang/Object;",196new ResolvedJavaMethod[] { getMethod(getType(MultipleImplementer2.class), "<init>"), null },197new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},198Opcodes.ACC_FINAL),199new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",200"stringField",201"Ljava/lang/String;",202new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},203Opcodes.ACC_VOLATILE),204new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",205"stringFieldEmpty",206"Ljava/lang/String;",207new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},2080),209}210);211CP_MAP_FOR_CLASS.put(CONSTANT_METHODREF,212new TestedCPEntry[] {213new TestedCPEntry("java/lang/System",214"getProperties",215"()Ljava/util/Properties;",216new byte[] {(byte) Opcodes.INVOKESTATIC}),217new TestedCPEntry("java/util/HashMap",218"<init>",219"()V",220new byte[] {(byte) Opcodes.INVOKESPECIAL}),221new TestedCPEntry("java/lang/Object",222"toString",223"()Ljava/lang/String;",224new byte[] {(byte) Opcodes.INVOKESPECIAL,225(byte) Opcodes.INVOKEVIRTUAL}),226new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2$1",227"<init>",228"(Lcompiler/jvmci/common/testcases/MultipleImplementer2;)V",229new byte[0]),230new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer$1",231"run",232"()V",233new byte[0]),234}235);236CP_MAP_FOR_CLASS.put(CONSTANT_INTERFACEMETHODREF,237new TestedCPEntry[] {238new TestedCPEntry("java/util/Map",239"put",240"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",241new byte[] {(byte) Opcodes.INVOKEINTERFACE}),242new TestedCPEntry("java/util/Map",243"remove",244"(Ljava/lang/Object;)Ljava/lang/Object;",245new byte[] {(byte) Opcodes.INVOKEINTERFACE}),246}247);248CP_MAP_FOR_CLASS.put(CONSTANT_STRING,249new TestedCPEntry[] {250new TestedCPEntry(null, "Message", null),251new TestedCPEntry(null, "", null),252}253);254CP_MAP_FOR_CLASS.put(CONSTANT_METHODHANDLE,255new TestedCPEntry[] {256new TestedCPEntry("java/lang/invoke/LambdaMetafactory",257"metafactory",258"(Ljava/lang/invoke/MethodHandles$Lookup;"259+ "Ljava/lang/String;"260+ "Ljava/lang/invoke/MethodType;"261+ "Ljava/lang/invoke/MethodType;"262+ "Ljava/lang/invoke/MethodHandle;"263+ "Ljava/lang/invoke/MethodType;)"264+ "Ljava/lang/invoke/CallSite;",265null),266new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementer2",267"testMethod",268"()V"),269}270);271CP_MAP_FOR_CLASS.put(CONSTANT_METHODTYPE,272new TestedCPEntry[] {273new TestedCPEntry(null, null, "()V"),274}275);276CP_MAP_FOR_CLASS.put(CONSTANT_INVOKEDYNAMIC,277new TestedCPEntry[] {278new TestedCPEntry(null,279"run",280"(Lcompiler/jvmci/common/testcases/MultipleImplementer2;)"281+ "Ljava/lang/Runnable;"),282}283);284}285286private static final Map<ConstantTypes, TestedCPEntry[]> CP_MAP_FOR_ABS_CLASS287= new HashMap<>();288static {289CP_MAP_FOR_ABS_CLASS.put(CONSTANT_CLASS,290new TestedCPEntry[] {291new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementersInterface", null, null),292new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer", null, null),293new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer$1", null, null),294new TestedCPEntry("java/lang/invoke/MethodHandles$Lookup", null, null),295}296);297CP_MAP_FOR_ABS_CLASS.put(CONSTANT_FIELDREF,298new TestedCPEntry[] {299new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",300"intStaticField",301"I",302new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},303Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC),304new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",305"longStaticField",306"J",307new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},308Opcodes.ACC_FINAL | Opcodes.ACC_STATIC),309new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",310"floatStaticField",311"F",312new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},313Opcodes.ACC_VOLATILE | Opcodes.ACC_STATIC),314new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",315"doubleStaticField",316"D",317new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},318Opcodes.ACC_STATIC),319new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",320"stringStaticField",321"Ljava/lang/String;",322new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},323Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC),324new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",325"objectStaticField",326"Ljava/lang/Object;",327new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},328Opcodes.ACC_PROTECTED | Opcodes.ACC_STATIC),329new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",330"intField",331"I",332new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},333Opcodes.ACC_PUBLIC),334new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",335"longField",336"J",337new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},338Opcodes.ACC_PRIVATE),339new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",340"floatField",341"F",342new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},343Opcodes.ACC_PROTECTED),344new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",345"doubleField",346"D",347new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},348Opcodes.ACC_TRANSIENT),349new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",350"objectField",351"Ljava/lang/Object;",352new ResolvedJavaMethod[] { getMethod(getType(MultipleAbstractImplementer.class), "<init>"), null },353new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},354Opcodes.ACC_FINAL),355new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",356"stringField",357"Ljava/lang/String;",358new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},359Opcodes.ACC_VOLATILE),360new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",361"stringFieldEmpty",362"Ljava/lang/String;",363new byte[] {(byte) Opcodes.PUTFIELD | (byte) Opcodes.GETFIELD},3640),365}366);367CP_MAP_FOR_ABS_CLASS.put(CONSTANT_METHODREF,368new TestedCPEntry[] {369new TestedCPEntry("java/lang/System",370"getProperties",371"()Ljava/util/Properties;",372new byte[] {(byte) Opcodes.INVOKESTATIC}),373new TestedCPEntry("java/util/HashMap",374"<init>",375"()V",376new byte[] {(byte) Opcodes.INVOKESPECIAL}),377new TestedCPEntry("java/lang/Object",378"toString",379"()Ljava/lang/String;",380new byte[] {(byte) Opcodes.INVOKESPECIAL,381(byte) Opcodes.INVOKEVIRTUAL}),382new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer$1",383"<init>",384"(Lcompiler/jvmci/common/testcases/MultipleAbstractImplementer;)V",385new byte[0]),386new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer$1",387"run",388"()V",389new byte[0]),390}391);392CP_MAP_FOR_ABS_CLASS.put(CONSTANT_INTERFACEMETHODREF,393new TestedCPEntry[] {394new TestedCPEntry("java/util/Map",395"put",396"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",397new byte[] {(byte) Opcodes.INVOKEINTERFACE}),398new TestedCPEntry("java/util/Map",399"remove",400"(Ljava/lang/Object;)Ljava/lang/Object;",401new byte[] {(byte) Opcodes.INVOKEINTERFACE}),402}403);404CP_MAP_FOR_ABS_CLASS.put(CONSTANT_STRING,405new TestedCPEntry[] {406new TestedCPEntry(null, "Message", null),407new TestedCPEntry(null, "", null),408}409);410CP_MAP_FOR_ABS_CLASS.put(CONSTANT_METHODHANDLE,411new TestedCPEntry[] {412new TestedCPEntry("java/lang/invoke/LambdaMetafactory",413"metafactory",414"(Ljava/lang/invoke/MethodHandles$Lookup;"415+ "Ljava/lang/String;"416+ "Ljava/lang/invoke/MethodType;"417+ "Ljava/lang/invoke/MethodType;"418+ "Ljava/lang/invoke/MethodHandle;"419+ "Ljava/lang/invoke/MethodType;)"420+ "Ljava/lang/invoke/CallSite;",421null),422new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer",423"testMethod",424"()V"),425}426);427CP_MAP_FOR_ABS_CLASS.put(CONSTANT_METHODTYPE,428new TestedCPEntry[] {429new TestedCPEntry(null, null, "()V"),430}431);432CP_MAP_FOR_ABS_CLASS.put(CONSTANT_INVOKEDYNAMIC,433new TestedCPEntry[] {434new TestedCPEntry(null,435"run",436"(Lcompiler/jvmci/common/testcases/MultipleAbstractImplementer;)"437+ "Ljava/lang/Runnable;"),438}439);440}441442private static final Map<ConstantTypes, TestedCPEntry[]> CP_MAP_FOR_INTERFACE443= new HashMap<>();444static {445CP_MAP_FOR_INTERFACE.put(CONSTANT_CLASS,446new TestedCPEntry[] {447new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementersInterface", null, null),448new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementersInterface$1", null, null),449new TestedCPEntry("java/lang/Object", null, null),450new TestedCPEntry("java/lang/invoke/MethodHandles$Lookup", null, null),451}452);453CP_MAP_FOR_INTERFACE.put(CONSTANT_FIELDREF,454new TestedCPEntry[] {455new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementersInterface",456"OBJECT_CONSTANT",457"Ljava/lang/Object;",458new ResolvedJavaMethod[] { getMethod(getType(MultipleImplementersInterface.class), "<clinit>"), null },459new byte[] {(byte) Opcodes.PUTSTATIC, (byte) Opcodes.GETSTATIC},460Opcodes.ACC_STATIC | Opcodes.ACC_FINAL | Opcodes.ACC_PUBLIC),461}462);463CP_MAP_FOR_INTERFACE.put(CONSTANT_METHODREF,464new TestedCPEntry[] {465new TestedCPEntry("java/lang/System",466"getProperties",467"()Ljava/util/Properties;",468new byte[] {(byte) Opcodes.INVOKESTATIC}),469new TestedCPEntry("java/util/HashMap",470"<init>",471"()V",472new byte[] {(byte) Opcodes.INVOKESPECIAL}),473new TestedCPEntry("java/lang/Object",474"toString",475"()Ljava/lang/String;",476new byte[] {(byte) Opcodes.INVOKEVIRTUAL}),477new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer$1",478"<init>",479"(Lcompiler/jvmci/common/testcases/MultipleAbstractImplementer;)V",480new byte[0]),481new TestedCPEntry("compiler/jvmci/common/testcases/MultipleAbstractImplementer$1",482"run",483"()V",484new byte[0]),485}486);487CP_MAP_FOR_INTERFACE.put(CONSTANT_INTERFACEMETHODREF,488new TestedCPEntry[] {489new TestedCPEntry("java/util/Map",490"put",491"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",492new byte[] {(byte) Opcodes.INVOKEINTERFACE}),493new TestedCPEntry("java/util/Map",494"remove",495"(Ljava/lang/Object;)Ljava/lang/Object;",496new byte[] {(byte) Opcodes.INVOKEINTERFACE}),497}498);499CP_MAP_FOR_INTERFACE.put(CONSTANT_STRING,500new TestedCPEntry[] {501new TestedCPEntry(null, "Hello", null),502new TestedCPEntry(null, "", null),503}504);505CP_MAP_FOR_INTERFACE.put(CONSTANT_METHODHANDLE,506new TestedCPEntry[] {507new TestedCPEntry("java/lang/invoke/LambdaMetafactory",508"metafactory",509"(Ljava/lang/invoke/MethodHandles$Lookup;"510+ "Ljava/lang/String;Ljava/lang/invoke/MethodType;"511+ "Ljava/lang/invoke/MethodType;"512+ "Ljava/lang/invoke/MethodHandle;"513+ "Ljava/lang/invoke/MethodType;)"514+ "Ljava/lang/invoke/CallSite;"),515new TestedCPEntry("compiler/jvmci/common/testcases/MultipleImplementersInterface",516"defaultMethod",517"()V"),518}519);520CP_MAP_FOR_INTERFACE.put(CONSTANT_METHODTYPE,521new TestedCPEntry[] {522new TestedCPEntry(null, null, "()V"),523}524);525CP_MAP_FOR_INTERFACE.put(CONSTANT_INVOKEDYNAMIC,526new TestedCPEntry[] {527new TestedCPEntry(null,528"run",529"(Lcompiler/jvmci/common/testcases/MultipleImplementersInterface;)"530+ "Ljava/lang/Runnable;"),531}532);533}534}535536537