TestHelper.java revision 10526:cfb6c135aef4
1343171Sdim/* 2343171Sdim * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 3353358Sdim * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4353358Sdim * 5353358Sdim * This code is free software; you can redistribute it and/or modify it 6343171Sdim * under the terms of the GNU General Public License version 2 only, as 7343171Sdim * published by the Free Software Foundation. 8343171Sdim * 9343171Sdim * This code is distributed in the hope that it will be useful, but WITHOUT 10343171Sdim * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11343171Sdim * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12343171Sdim * version 2 for more details (a copy is included in the LICENSE file that 13343171Sdim * accompanied this code). 14343171Sdim * 15343171Sdim * You should have received a copy of the GNU General Public License version 16343171Sdim * 2 along with this work; if not, write to the Free Software Foundation, 17343171Sdim * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18343171Sdim * 19343171Sdim * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20343171Sdim * or visit www.oracle.com if you need additional information or have any 21343171Sdim * questions. 22343171Sdim */ 23343171Sdim 24343171Sdimpackage jdk.vm.ci.hotspot.test; 25343171Sdim 26343171Sdimimport java.lang.reflect.Field; 27343171Sdimimport java.util.HashMap; 28343171Sdimimport java.util.Map; 29343171Sdimimport jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; 30343171Sdimimport jdk.vm.ci.meta.JavaConstant; 31343171Sdimimport jdk.vm.ci.meta.MetaAccessProvider; 32343171Sdimimport jdk.vm.ci.meta.ResolvedJavaField; 33343171Sdimimport jdk.vm.ci.runtime.JVMCI; 34343171Sdim 35343171Sdimpublic class TestHelper { 36343171Sdim 37343171Sdim public static final DummyClass DUMMY_CLASS_INSTANCE = new DummyClass(); 38343171Sdim public static final HotSpotConstantReflectionProvider CONSTANT_REFLECTION_PROVIDER 39343171Sdim = (HotSpotConstantReflectionProvider) JVMCI.getRuntime().getHostJVMCIBackend().getConstantReflection(); 40343171Sdim public static final JavaConstant DUMMY_CLASS_CONSTANT 41343171Sdim = CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE); 42343171Sdim 43360784Sdim public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FIELDS_MAP 44360784Sdim = new HashMap<>(); 45343171Sdim 46343171Sdim static { 47343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanField"), 48343171Sdim JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.booleanField)); 49360784Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "byteField"), 50343171Sdim JavaConstant.forByte(DUMMY_CLASS_INSTANCE.byteField)); 51343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "shortField"), 52343171Sdim JavaConstant.forShort(DUMMY_CLASS_INSTANCE.shortField)); 53343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "charField"), 54343171Sdim JavaConstant.forChar(DUMMY_CLASS_INSTANCE.charField)); 55343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "intField"), 56343171Sdim JavaConstant.forInt(DUMMY_CLASS_INSTANCE.intField)); 57343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "longField"), 58343171Sdim JavaConstant.forLong(DUMMY_CLASS_INSTANCE.longField)); 59343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "floatField"), 60343171Sdim JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.floatField)); 61343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleField"), 62343171Sdim JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.doubleField)); 63343171Sdim INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "objectField"), 64343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 65343171Sdim DUMMY_CLASS_INSTANCE.objectField)); 66343171Sdim } 67343171Sdim 68353358Sdim public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FINAL_FIELDS_MAP 69353358Sdim = new HashMap<>(); 70343171Sdim 71343171Sdim static { 72343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalBooleanField"), 73343171Sdim JavaConstant.forBoolean( 74343171Sdim DUMMY_CLASS_INSTANCE.finalBooleanField)); 75343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalByteField"), 76343171Sdim JavaConstant.forByte(DUMMY_CLASS_INSTANCE.finalByteField)); 77343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalShortField"), 78343171Sdim JavaConstant.forShort(DUMMY_CLASS_INSTANCE.finalShortField)); 79343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalCharField"), 80343171Sdim JavaConstant.forChar(DUMMY_CLASS_INSTANCE.finalCharField)); 81343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalIntField"), 82343171Sdim JavaConstant.forInt(DUMMY_CLASS_INSTANCE.finalIntField)); 83343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalLongField"), 84343171Sdim JavaConstant.forLong(DUMMY_CLASS_INSTANCE.finalLongField)); 85343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalFloatField"), 86343171Sdim JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.finalFloatField)); 87343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalDoubleField"), 88343171Sdim JavaConstant.forDouble( 89343171Sdim DUMMY_CLASS_INSTANCE.finalDoubleField)); 90343171Sdim INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalObjectField"), 91343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 92343171Sdim DUMMY_CLASS_INSTANCE.finalObjectField)); 93343171Sdim } 94343171Sdim 95343171Sdim public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FINAL_DEFAULT_FIELDS_MAP 96343171Sdim = new HashMap<>(); 97343171Sdim 98343171Sdim static { 99343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 100343171Sdim "finalDefaultBooleanField"), 101343171Sdim JavaConstant.forBoolean( 102343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultBooleanField)); 103343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 104343171Sdim "finalDefaultByteField"), 105343171Sdim JavaConstant.forByte( 106343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultByteField)); 107353358Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 108343171Sdim "finalDefaultShortField"), 109343171Sdim JavaConstant.forShort( 110343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultShortField)); 111343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 112343171Sdim "finalDefaultCharField"), 113343171Sdim JavaConstant.forChar( 114343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultCharField)); 115343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 116353358Sdim "finalDefaultIntField"), 117353358Sdim JavaConstant.forInt( 118343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultIntField)); 119343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 120343171Sdim "finalDefaultLongField"), 121343171Sdim JavaConstant.forLong( 122343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultLongField)); 123353358Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 124343171Sdim "finalDefaultFloatField"), 125343171Sdim JavaConstant.forFloat( 126343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultFloatField)); 127343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 128343171Sdim "finalDefaultDoubleField"), 129343171Sdim JavaConstant.forDouble( 130343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultDoubleField)); 131343171Sdim INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 132343171Sdim "finalDefaultObjectField"), 133343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 134343171Sdim DUMMY_CLASS_INSTANCE.finalDefaultObjectField)); 135343171Sdim } 136343171Sdim 137343171Sdim public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_STABLE_FIELDS_MAP 138343171Sdim = new HashMap<>(); 139343171Sdim 140343171Sdim static { 141343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableBooleanField"), 142343171Sdim JavaConstant.forBoolean( 143343171Sdim DUMMY_CLASS_INSTANCE.stableBooleanField)); 144343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteField"), 145343171Sdim JavaConstant.forByte(DUMMY_CLASS_INSTANCE.stableByteField)); 146343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortField"), 147343171Sdim JavaConstant.forShort( 148343171Sdim DUMMY_CLASS_INSTANCE.stableShortField)); 149343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharField"), 150343171Sdim JavaConstant.forChar(DUMMY_CLASS_INSTANCE.stableCharField)); 151343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntField"), 152343171Sdim JavaConstant.forInt(DUMMY_CLASS_INSTANCE.stableIntField)); 153343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongField"), 154360784Sdim JavaConstant.forLong(DUMMY_CLASS_INSTANCE.stableLongField)); 155343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatField"), 156343171Sdim JavaConstant.forFloat( 157343171Sdim DUMMY_CLASS_INSTANCE.stableFloatField)); 158343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleField"), 159343171Sdim JavaConstant.forDouble( 160343171Sdim DUMMY_CLASS_INSTANCE.stableDoubleField)); 161343171Sdim INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectField"), 162343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 163343171Sdim DUMMY_CLASS_INSTANCE.stableObjectField)); 164343171Sdim } 165343171Sdim 166343171Sdim public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_STABLE_DEFAULT_FIELDS_MAP 167343171Sdim = new HashMap<>(); 168343171Sdim 169343171Sdim static { 170343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 171343171Sdim "stableDefaultBooleanField"), 172343171Sdim JavaConstant.forBoolean( 173343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultBooleanField)); 174343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 175343171Sdim "stableDefaultByteField"), 176343171Sdim JavaConstant.forByte( 177343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultByteField)); 178343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 179343171Sdim "stableDefaultShortField"), 180343171Sdim JavaConstant.forShort( 181343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultShortField)); 182343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 183343171Sdim "stableDefaultCharField"), 184343171Sdim JavaConstant.forChar( 185343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultCharField)); 186343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 187343171Sdim "stableDefaultIntField"), 188343171Sdim JavaConstant.forInt( 189343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultIntField)); 190343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 191343171Sdim "stableDefaultLongField"), 192343171Sdim JavaConstant.forLong( 193343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultLongField)); 194343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 195343171Sdim "stableDefaultFloatField"), 196343171Sdim JavaConstant.forFloat( 197343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultFloatField)); 198343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 199343171Sdim "stableDefaultDoubleField"), 200343171Sdim JavaConstant.forDouble( 201353358Sdim DUMMY_CLASS_INSTANCE.stableDefaultDoubleField)); 202343171Sdim INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 203353358Sdim "stableDefaultObjectField"), 204343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 205343171Sdim DUMMY_CLASS_INSTANCE.stableDefaultObjectField)); 206360784Sdim } 207343171Sdim 208343171Sdim public static final Map<ResolvedJavaField, JavaConstant> STATIC_FIELDS_MAP = new HashMap<>(); 209343171Sdim 210343171Sdim static { 211343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticBooleanField"), 212343171Sdim JavaConstant.forBoolean(DummyClass.staticBooleanField)); 213343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticByteField"), 214343171Sdim JavaConstant.forByte(DummyClass.staticByteField)); 215343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticShortField"), 216343171Sdim JavaConstant.forShort(DummyClass.staticShortField)); 217343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticCharField"), 218343171Sdim JavaConstant.forChar(DummyClass.staticCharField)); 219343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticIntField"), 220343171Sdim JavaConstant.forInt(DummyClass.staticIntField)); 221343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticLongField"), 222343171Sdim JavaConstant.forLong(DummyClass.staticLongField)); 223343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFloatField"), 224343171Sdim JavaConstant.forFloat(DummyClass.staticFloatField)); 225343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticDoubleField"), 226343171Sdim JavaConstant.forDouble(DummyClass.staticDoubleField)); 227343171Sdim STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticObjectField"), 228343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticObjectField)); 229343171Sdim } 230343171Sdim 231343171Sdim public static final Map<ResolvedJavaField, JavaConstant> STATIC_FINAL_FIELDS_MAP 232343171Sdim = new HashMap<>(); 233343171Sdim 234343171Sdim static { 235343171Sdim STATIC_FINAL_FIELDS_MAP.put( 236343171Sdim getResolvedJavaField(DummyClass.class, "staticFinalBooleanField"), 237343171Sdim JavaConstant.forBoolean(DummyClass.staticFinalBooleanField)); 238343171Sdim STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalByteField"), 239343171Sdim JavaConstant.forByte(DummyClass.staticFinalByteField)); 240343171Sdim STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalShortField"), 241343171Sdim JavaConstant.forShort(DummyClass.staticFinalShortField)); 242343171Sdim STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalCharField"), 243343171Sdim JavaConstant.forChar(DummyClass.staticFinalCharField)); 244343171Sdim STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalIntField"), 245343171Sdim JavaConstant.forInt(DummyClass.staticFinalIntField)); 246343171Sdim STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalLongField"), 247343171Sdim JavaConstant.forLong(DummyClass.staticFinalLongField)); 248343171Sdim STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalFloatField"), 249343171Sdim JavaConstant.forFloat(DummyClass.staticFinalFloatField)); 250343171Sdim STATIC_FINAL_FIELDS_MAP.put( 251343171Sdim getResolvedJavaField(DummyClass.class, "staticFinalDoubleField"), 252343171Sdim JavaConstant.forDouble(DummyClass.staticFinalDoubleField)); 253343171Sdim STATIC_FINAL_FIELDS_MAP.put( 254343171Sdim getResolvedJavaField(DummyClass.class, "staticFinalObjectField"), 255343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticFinalObjectField)); 256343171Sdim } 257343171Sdim 258343171Sdim public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_FIELDS_MAP 259343171Sdim = new HashMap<>(); 260343171Sdim 261343171Sdim static { 262343171Sdim STATIC_STABLE_FIELDS_MAP.put( 263343171Sdim getResolvedJavaField(DummyClass.class, "staticStableBooleanField"), 264343171Sdim JavaConstant.forBoolean(DummyClass.staticStableBooleanField)); 265343171Sdim STATIC_STABLE_FIELDS_MAP.put( 266343171Sdim getResolvedJavaField(DummyClass.class, "staticStableByteField"), 267343171Sdim JavaConstant.forByte(DummyClass.staticStableByteField)); 268343171Sdim STATIC_STABLE_FIELDS_MAP.put( 269343171Sdim getResolvedJavaField(DummyClass.class, "staticStableShortField"), 270343171Sdim JavaConstant.forShort(DummyClass.staticStableShortField)); 271343171Sdim STATIC_STABLE_FIELDS_MAP.put( 272343171Sdim getResolvedJavaField(DummyClass.class, "staticStableCharField"), 273343171Sdim JavaConstant.forChar(DummyClass.staticStableCharField)); 274343171Sdim STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableIntField"), 275343171Sdim JavaConstant.forInt(DummyClass.staticStableIntField)); 276343171Sdim STATIC_STABLE_FIELDS_MAP.put( 277343171Sdim getResolvedJavaField(DummyClass.class, "staticStableLongField"), 278343171Sdim JavaConstant.forLong(DummyClass.staticStableLongField)); 279343171Sdim STATIC_STABLE_FIELDS_MAP.put( 280343171Sdim getResolvedJavaField(DummyClass.class, "staticStableFloatField"), 281343171Sdim JavaConstant.forFloat(DummyClass.staticStableFloatField)); 282343171Sdim STATIC_STABLE_FIELDS_MAP.put( 283343171Sdim getResolvedJavaField(DummyClass.class, "staticStableDoubleField"), 284343171Sdim JavaConstant.forDouble(DummyClass.staticStableDoubleField)); 285343171Sdim STATIC_STABLE_FIELDS_MAP.put( 286343171Sdim getResolvedJavaField(DummyClass.class, "staticStableObjectField"), 287343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticStableObjectField)); 288343171Sdim } 289343171Sdim 290343171Sdim public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_DEFAULT_FIELDS_MAP 291343171Sdim = new HashMap<>(); 292343171Sdim 293343171Sdim static { 294343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 295343171Sdim "staticStableDefaultBooleanField"), 296343171Sdim JavaConstant.forBoolean( 297343171Sdim DummyClass.staticStableDefaultBooleanField)); 298343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 299343171Sdim "staticStableDefaultByteField"), 300343171Sdim JavaConstant.forByte( 301343171Sdim DummyClass.staticStableDefaultByteField)); 302343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 303343171Sdim "staticStableDefaultShortField"), 304343171Sdim JavaConstant.forShort( 305343171Sdim DummyClass.staticStableDefaultShortField)); 306343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 307343171Sdim "staticStableDefaultCharField"), 308343171Sdim JavaConstant.forChar( 309353358Sdim DummyClass.staticStableDefaultCharField)); 310353358Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 311353358Sdim "staticStableDefaultIntField"), 312353358Sdim JavaConstant.forInt( 313343171Sdim DummyClass.staticStableDefaultIntField)); 314343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 315343171Sdim "staticStableDefaultLongField"), 316343171Sdim JavaConstant.forLong( 317343171Sdim DummyClass.staticStableDefaultLongField)); 318343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 319343171Sdim "staticStableDefaultFloatField"), 320343171Sdim JavaConstant.forFloat( 321343171Sdim DummyClass.staticStableDefaultFloatField)); 322343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 323343171Sdim "staticStableDefaultDoubleField"), 324343171Sdim JavaConstant.forDouble( 325343171Sdim DummyClass.staticStableDefaultDoubleField)); 326343171Sdim STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 327343171Sdim "staticStableDefaultObjectField"), 328343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 329343171Sdim DummyClass.staticStableDefaultObjectField)); 330343171Sdim } 331343171Sdim 332343171Sdim public static final int ARRAY_DIMENSION = 1; 333343171Sdim public static final int ARRAY_OF_ARRAYS_DIMENSION = 2; 334343171Sdim 335343171Sdim public static final Map<ResolvedJavaField, JavaConstant> ARRAYS_MAP = new HashMap<>(); 336343171Sdim 337343171Sdim static { 338343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayWithValues"), 339343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 340343171Sdim DUMMY_CLASS_INSTANCE.booleanArrayWithValues)); 341343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayWithValues"), 342343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 343343171Sdim DUMMY_CLASS_INSTANCE.byteArrayWithValues)); 344343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayWithValues"), 345343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 346343171Sdim DUMMY_CLASS_INSTANCE.shortArrayWithValues)); 347343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayWithValues"), 348343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 349343171Sdim DUMMY_CLASS_INSTANCE.charArrayWithValues)); 350343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayWithValues"), 351343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 352343171Sdim DUMMY_CLASS_INSTANCE.intArrayWithValues)); 353343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayWithValues"), 354343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 355343171Sdim DUMMY_CLASS_INSTANCE.longArrayWithValues)); 356343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayWithValues"), 357343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 358343171Sdim DUMMY_CLASS_INSTANCE.floatArrayWithValues)); 359343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayWithValues"), 360343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 361343171Sdim DUMMY_CLASS_INSTANCE.doubleArrayWithValues)); 362343171Sdim ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayWithValues"), 363343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 364343171Sdim DUMMY_CLASS_INSTANCE.objectArrayWithValues)); 365343171Sdim } 366343171Sdim 367343171Sdim public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAYS_MAP = new HashMap<>(); 368343171Sdim 369343171Sdim static { 370343171Sdim STABLE_ARRAYS_MAP.put( 371343171Sdim getResolvedJavaField(DummyClass.class, "stableBooleanArrayWithValues"), 372343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 373343171Sdim DUMMY_CLASS_INSTANCE.stableBooleanArrayWithValues)); 374343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteArrayWithValues"), 375343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 376343171Sdim DUMMY_CLASS_INSTANCE.stableByteArrayWithValues)); 377343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortArrayWithValues"), 378343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 379343171Sdim DUMMY_CLASS_INSTANCE.stableShortArrayWithValues)); 380343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharArrayWithValues"), 381343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 382343171Sdim DUMMY_CLASS_INSTANCE.stableCharArrayWithValues)); 383343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntArrayWithValues"), 384343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 385343171Sdim DUMMY_CLASS_INSTANCE.stableIntArrayWithValues)); 386343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongArrayWithValues"), 387343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 388343171Sdim DUMMY_CLASS_INSTANCE.stableLongArrayWithValues)); 389343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatArrayWithValues"), 390343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 391343171Sdim DUMMY_CLASS_INSTANCE.stableFloatArrayWithValues)); 392343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleArrayWithValues"), 393343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 394343171Sdim DUMMY_CLASS_INSTANCE.stableDoubleArrayWithValues)); 395343171Sdim STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectArrayWithValues"), 396343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 397343171Sdim DUMMY_CLASS_INSTANCE.stableObjectArrayWithValues)); 398343171Sdim } 399343171Sdim 400343171Sdim public static final Map<ResolvedJavaField, JavaConstant> ARRAY_ARRAYS_MAP = new HashMap<>(); 401343171Sdim 402343171Sdim static { 403343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayArrayWithValues"), 404343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 405343171Sdim DUMMY_CLASS_INSTANCE.booleanArrayArrayWithValues)); 406343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayArrayWithValues"), 407343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 408343171Sdim DUMMY_CLASS_INSTANCE.byteArrayArrayWithValues)); 409343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayArrayWithValues"), 410343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 411343171Sdim DUMMY_CLASS_INSTANCE.shortArrayArrayWithValues)); 412343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayArrayWithValues"), 413343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 414343171Sdim DUMMY_CLASS_INSTANCE.charArrayArrayWithValues)); 415343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayArrayWithValues"), 416343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 417343171Sdim DUMMY_CLASS_INSTANCE.intArrayArrayWithValues)); 418343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayArrayWithValues"), 419343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 420343171Sdim DUMMY_CLASS_INSTANCE.longArrayArrayWithValues)); 421343171Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayArrayWithValues"), 422343171Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 423343171Sdim DUMMY_CLASS_INSTANCE.floatArrayArrayWithValues)); 424353358Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayArrayWithValues"), 425353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 426353358Sdim DUMMY_CLASS_INSTANCE.doubleArrayArrayWithValues)); 427353358Sdim ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayArrayWithValues"), 428353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 429353358Sdim DUMMY_CLASS_INSTANCE.objectArrayArrayWithValues)); 430353358Sdim } 431353358Sdim 432353358Sdim public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAY_ARRAYS_MAP = new HashMap<>(); 433353358Sdim 434353358Sdim static { 435353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 436353358Sdim getResolvedJavaField(DummyClass.class, "stableBooleanArrayArrayWithValues"), 437353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 438353358Sdim DUMMY_CLASS_INSTANCE.stableBooleanArrayArrayWithValues)); 439353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 440353358Sdim getResolvedJavaField(DummyClass.class, "stableByteArrayArrayWithValues"), 441353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 442353358Sdim DUMMY_CLASS_INSTANCE.stableByteArrayArrayWithValues)); 443353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 444353358Sdim getResolvedJavaField(DummyClass.class, "stableShortArrayArrayWithValues"), 445353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 446353358Sdim DUMMY_CLASS_INSTANCE.stableShortArrayArrayWithValues)); 447353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 448353358Sdim getResolvedJavaField(DummyClass.class, "stableCharArrayArrayWithValues"), 449353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 450353358Sdim DUMMY_CLASS_INSTANCE.stableCharArrayArrayWithValues)); 451353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 452353358Sdim getResolvedJavaField(DummyClass.class, "stableIntArrayArrayWithValues"), 453353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 454353358Sdim DUMMY_CLASS_INSTANCE.stableIntArrayArrayWithValues)); 455353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 456353358Sdim getResolvedJavaField(DummyClass.class, "stableLongArrayArrayWithValues"), 457353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 458353358Sdim DUMMY_CLASS_INSTANCE.stableLongArrayArrayWithValues)); 459353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 460353358Sdim getResolvedJavaField(DummyClass.class, "stableFloatArrayArrayWithValues"), 461353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 462353358Sdim DUMMY_CLASS_INSTANCE.stableFloatArrayArrayWithValues)); 463353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 464353358Sdim getResolvedJavaField(DummyClass.class, "stableDoubleArrayArrayWithValues"), 465353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 466353358Sdim DUMMY_CLASS_INSTANCE.stableDoubleArrayArrayWithValues)); 467353358Sdim STABLE_ARRAY_ARRAYS_MAP.put( 468353358Sdim getResolvedJavaField(DummyClass.class, "stableObjectArrayArrayWithValues"), 469353358Sdim CONSTANT_REFLECTION_PROVIDER.forObject( 470353358Sdim DUMMY_CLASS_INSTANCE.stableObjectArrayArrayWithValues)); 471353358Sdim } 472353358Sdim 473353358Sdim public static ResolvedJavaField getResolvedJavaField(Class<?> clazz, String fieldName) { 474343171Sdim Field reflectionField = null; 475343171Sdim try { 476343171Sdim reflectionField = clazz.getDeclaredField(fieldName); 477343171Sdim reflectionField.setAccessible(true); 478343171Sdim } catch (NoSuchFieldException ex) { 479343171Sdim throw new Error("Test bug: Invalid field name: " + ex, ex); 480343171Sdim } catch (SecurityException ex) { 481343171Sdim throw new Error("Unexpected error: " + ex, ex); 482343171Sdim } 483343171Sdim MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess(); 484343171Sdim return metaAccess.lookupJavaField(reflectionField); 485343171Sdim } 486343171Sdim} 487343171Sdim