1 /* 2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 package compiler.jvmci.constantReflectionProviderTest; 25 26 import java.lang.reflect.Field; 27 import java.util.HashMap; 28 import java.util.Map; 29 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; 30 import jdk.vm.ci.meta.JavaConstant; 31 import jdk.vm.ci.meta.MetaAccessProvider; 32 import jdk.vm.ci.meta.ResolvedJavaField; 33 import jdk.vm.ci.runtime.JVMCI; 34 35 public class TestHelper { 36 37 public final static DummyClass DUMMY_CLASS_INSTANCE = new DummyClass(); 38 public final static HotSpotConstantReflectionProvider CONSTANT_REFLECTION_PROVIDER 39 = (HotSpotConstantReflectionProvider) JVMCI.getRuntime() 40 .getHostJVMCIBackend().getConstantReflection(); 41 public final static JavaConstant DUMMY_CLASS_CONSTANT 42 = CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE); 43 44 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FIELDS_MAP 45 = new HashMap<>(); 46 47 static { 48 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanField"), 49 JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.booleanField)); 50 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "byteField"), 51 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.byteField)); 52 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "shortField"), 53 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.shortField)); 54 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "charField"), 55 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.charField)); 56 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "intField"), 57 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.intField)); 58 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "longField"), 59 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.longField)); 60 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "floatField"), 61 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.floatField)); 62 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleField"), 63 JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.doubleField)); 64 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "objectField"), 65 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.objectField)); 66 } 67 68 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FINAL_FIELDS_MAP 69 = new HashMap<>(); 70 71 static { 72 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalBooleanField"), 73 JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.finalBooleanField)); 74 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalByteField"), 75 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.finalByteField)); 76 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalShortField"), 77 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.finalShortField)); 78 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalCharField"), 79 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.finalCharField)); 80 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalIntField"), 81 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.finalIntField)); 82 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalLongField"), 83 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.finalLongField)); 84 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalFloatField"), 85 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.finalFloatField)); 86 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalDoubleField"), 87 JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.finalDoubleField)); 88 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalObjectField"), 89 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.finalObjectField)); 90 } 91 92 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FINAL_DEFAULT_FIELDS_MAP 93 = new HashMap<>(); 94 95 static { 96 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 97 "finalDefaultBooleanField"), 98 JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.finalDefaultBooleanField)); 99 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 100 "finalDefaultByteField"), 101 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.finalDefaultByteField)); 102 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 103 "finalDefaultShortField"), 104 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.finalDefaultShortField)); 105 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 106 "finalDefaultCharField"), 107 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.finalDefaultCharField)); 108 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 109 "finalDefaultIntField"), 110 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.finalDefaultIntField)); 111 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 112 "finalDefaultLongField"), 113 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.finalDefaultLongField)); 114 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 115 "finalDefaultFloatField"), 116 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.finalDefaultFloatField)); 117 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 118 "finalDefaultDoubleField"), 119 JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.finalDefaultDoubleField)); 120 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 121 "finalDefaultObjectField"), 122 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.finalDefaultObjectField)); 123 } 124 125 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_STABLE_FIELDS_MAP 126 = new HashMap<>(); 127 128 static { 129 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableBooleanField"), 130 JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.stableBooleanField)); 131 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteField"), 132 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.stableByteField)); 133 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortField"), 134 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.stableShortField)); 135 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharField"), 136 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.stableCharField)); 137 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntField"), 138 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.stableIntField)); 139 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongField"), 140 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.stableLongField)); 141 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatField"), 142 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.stableFloatField)); 143 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleField"), 144 JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.stableDoubleField)); 145 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectField"), 146 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableObjectField)); 147 } 148 149 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_STABLE_DEFAULT_FIELDS_MAP 150 = new HashMap<>(); 151 152 static { 153 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 154 "stableDefaultBooleanField"), 155 JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.stableDefaultBooleanField)); 156 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 157 "stableDefaultByteField"), 158 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.stableDefaultByteField)); 159 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 160 "stableDefaultShortField"), 161 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.stableDefaultShortField)); 162 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 163 "stableDefaultCharField"), 164 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.stableDefaultCharField)); 165 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 166 "stableDefaultIntField"), 167 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.stableDefaultIntField)); 168 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 169 "stableDefaultLongField"), 170 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.stableDefaultLongField)); 171 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 172 "stableDefaultFloatField"), 173 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.stableDefaultFloatField)); 174 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 175 "stableDefaultDoubleField"), 176 JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.stableDefaultDoubleField)); 177 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 178 "stableDefaultObjectField"), 179 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableDefaultObjectField)); 180 } 181 182 public static final Map<ResolvedJavaField, JavaConstant> STATIC_FIELDS_MAP = new HashMap<>(); 183 184 static { 185 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticBooleanField"), 186 JavaConstant.forBoolean(DummyClass.staticBooleanField)); 187 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticByteField"), 188 JavaConstant.forByte(DummyClass.staticByteField)); 189 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticShortField"), 190 JavaConstant.forShort(DummyClass.staticShortField)); 191 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticCharField"), 192 JavaConstant.forChar(DummyClass.staticCharField)); 193 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticIntField"), 194 JavaConstant.forInt(DummyClass.staticIntField)); 195 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticLongField"), 196 JavaConstant.forLong(DummyClass.staticLongField)); 197 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFloatField"), 198 JavaConstant.forFloat(DummyClass.staticFloatField)); 199 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticDoubleField"), 200 JavaConstant.forDouble(DummyClass.staticDoubleField)); 201 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticObjectField"), 202 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticObjectField)); 203 } 204 205 public static final Map<ResolvedJavaField, JavaConstant> STATIC_FINAL_FIELDS_MAP 206 = new HashMap<>(); 207 208 static { 209 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalBooleanField"), 210 JavaConstant.forBoolean(DummyClass.staticFinalBooleanField)); 211 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalByteField"), 212 JavaConstant.forByte(DummyClass.staticFinalByteField)); 213 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalShortField"), 214 JavaConstant.forShort(DummyClass.staticFinalShortField)); 215 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalCharField"), 216 JavaConstant.forChar(DummyClass.staticFinalCharField)); 217 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalIntField"), 218 JavaConstant.forInt(DummyClass.staticFinalIntField)); 219 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalLongField"), 220 JavaConstant.forLong(DummyClass.staticFinalLongField)); 221 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalFloatField"), 222 JavaConstant.forFloat(DummyClass.staticFinalFloatField)); 223 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalDoubleField"), 224 JavaConstant.forDouble(DummyClass.staticFinalDoubleField)); 225 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalObjectField"), 226 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticFinalObjectField)); 227 } 228 229 public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_FIELDS_MAP 230 = new HashMap<>(); 231 232 static { 233 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableBooleanField"), 234 JavaConstant.forBoolean(DummyClass.staticStableBooleanField)); 235 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableByteField"), 236 JavaConstant.forByte(DummyClass.staticStableByteField)); 237 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableShortField"), 238 JavaConstant.forShort(DummyClass.staticStableShortField)); 239 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableCharField"), 240 JavaConstant.forChar(DummyClass.staticStableCharField)); 241 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableIntField"), 242 JavaConstant.forInt(DummyClass.staticStableIntField)); 243 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableLongField"), 244 JavaConstant.forLong(DummyClass.staticStableLongField)); 245 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableFloatField"), 246 JavaConstant.forFloat(DummyClass.staticStableFloatField)); 247 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableDoubleField"), 248 JavaConstant.forDouble(DummyClass.staticStableDoubleField)); 249 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableObjectField"), 250 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticStableObjectField)); 251 } 252 253 public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_DEFAULT_FIELDS_MAP 254 = new HashMap<>(); 255 256 static { 257 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 258 "staticStableDefaultBooleanField"), 259 JavaConstant.forBoolean(DummyClass.staticStableDefaultBooleanField)); 260 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 261 "staticStableDefaultByteField"), 262 JavaConstant.forByte(DummyClass.staticStableDefaultByteField)); 263 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 264 "staticStableDefaultShortField"), 265 JavaConstant.forShort(DummyClass.staticStableDefaultShortField)); 266 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 267 "staticStableDefaultCharField"), 268 JavaConstant.forChar(DummyClass.staticStableDefaultCharField)); 269 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 270 "staticStableDefaultIntField"), 271 JavaConstant.forInt(DummyClass.staticStableDefaultIntField)); 272 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 273 "staticStableDefaultLongField"), 274 JavaConstant.forLong(DummyClass.staticStableDefaultLongField)); 275 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 276 "staticStableDefaultFloatField"), 277 JavaConstant.forFloat(DummyClass.staticStableDefaultFloatField)); 278 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 279 "staticStableDefaultDoubleField"), 280 JavaConstant.forDouble(DummyClass.staticStableDefaultDoubleField)); 281 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 282 "staticStableDefaultObjectField"), 283 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticStableDefaultObjectField)); 284 } 285 286 public static final int ARRAY_DIMENSION = 1; 287 public static final int ARRAY_OF_ARRAYS_DIMENSION = 2; 288 289 public static final Map<ResolvedJavaField, JavaConstant> ARRAYS_MAP = new HashMap<>(); 290 291 static { 292 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayWithValues"), 293 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.booleanArrayWithValues)); 294 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayWithValues"), 295 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.byteArrayWithValues)); 296 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayWithValues"), 297 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.shortArrayWithValues)); 298 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayWithValues"), 299 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.charArrayWithValues)); 300 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayWithValues"), 301 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.intArrayWithValues)); 302 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayWithValues"), 303 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.longArrayWithValues)); 304 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayWithValues"), 305 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.floatArrayWithValues)); 306 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayWithValues"), 307 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.doubleArrayWithValues)); 308 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayWithValues"), 309 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.objectArrayWithValues)); 310 } 311 312 public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAYS_MAP = new HashMap<>(); 313 314 static { 315 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableBooleanArrayWithValues"), 316 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableBooleanArrayWithValues)); 317 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteArrayWithValues"), 318 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableByteArrayWithValues)); 319 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortArrayWithValues"), 320 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableShortArrayWithValues)); 321 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharArrayWithValues"), 322 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableCharArrayWithValues)); 323 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntArrayWithValues"), 324 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableIntArrayWithValues)); 325 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongArrayWithValues"), 326 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableLongArrayWithValues)); 327 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatArrayWithValues"), 328 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableFloatArrayWithValues)); 329 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleArrayWithValues"), 330 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableDoubleArrayWithValues)); 331 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectArrayWithValues"), 332 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableObjectArrayWithValues)); 333 } 334 335 public static final Map<ResolvedJavaField, JavaConstant> ARRAY_ARRAYS_MAP = new HashMap<>(); 336 337 static { 338 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayArrayWithValues"), 339 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.booleanArrayArrayWithValues)); 340 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayArrayWithValues"), 341 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.byteArrayArrayWithValues)); 342 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayArrayWithValues"), 343 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.shortArrayArrayWithValues)); 344 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayArrayWithValues"), 345 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.charArrayArrayWithValues)); 346 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayArrayWithValues"), 347 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.intArrayArrayWithValues)); 348 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayArrayWithValues"), 349 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.longArrayArrayWithValues)); 350 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayArrayWithValues"), 351 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.floatArrayArrayWithValues)); 352 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayArrayWithValues"), 353 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.doubleArrayArrayWithValues)); 354 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayArrayWithValues"), 355 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.objectArrayArrayWithValues)); 356 } 357 358 public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAY_ARRAYS_MAP = new HashMap<>(); 359 360 static { 361 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableBooleanArrayArrayWithValues"), 362 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableBooleanArrayArrayWithValues)); 363 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteArrayArrayWithValues"), 364 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableByteArrayArrayWithValues)); 365 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortArrayArrayWithValues"), 366 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableShortArrayArrayWithValues)); 367 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharArrayArrayWithValues"), 368 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableCharArrayArrayWithValues)); 369 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntArrayArrayWithValues"), 370 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableIntArrayArrayWithValues)); 371 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongArrayArrayWithValues"), 372 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableLongArrayArrayWithValues)); 373 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatArrayArrayWithValues"), 374 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableFloatArrayArrayWithValues)); 375 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleArrayArrayWithValues"), 376 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableDoubleArrayArrayWithValues)); 377 STABLE_ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectArrayArrayWithValues"), 378 CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE.stableObjectArrayArrayWithValues)); 379 } 380 381 public static ResolvedJavaField getResolvedJavaField(Class clazz, String fieldName) { 382 Field reflectionField = null; 383 try { 384 reflectionField = clazz.getDeclaredField(fieldName); 385 reflectionField.setAccessible(true); 386 } catch (NoSuchFieldException ex) { 387 throw new Error("Test bug: Invalid field name: " + ex, ex); 388 } catch (SecurityException ex) { 389 throw new Error("Unexpected error: " + ex, ex); 390 } 391 MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess(); 392 return metaAccess.lookupJavaField(reflectionField); 393 } 394 }