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 jdk.vm.ci.hotspot.test; 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 static final DummyClass DUMMY_CLASS_INSTANCE = new DummyClass(); 38 public static final HotSpotConstantReflectionProvider CONSTANT_REFLECTION_PROVIDER = (HotSpotConstantReflectionProvider) JVMCI.getRuntime().getHostJVMCIBackend().getConstantReflection(); 39 public static final JavaConstant DUMMY_CLASS_CONSTANT = CONSTANT_REFLECTION_PROVIDER.forObject(DUMMY_CLASS_INSTANCE); 40 41 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FIELDS_MAP = new HashMap<>(); 42 43 static { 44 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanField"), 45 JavaConstant.forBoolean(DUMMY_CLASS_INSTANCE.booleanField)); 46 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "byteField"), 47 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.byteField)); 48 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "shortField"), 49 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.shortField)); 50 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "charField"), 51 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.charField)); 52 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "intField"), 53 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.intField)); 54 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "longField"), 55 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.longField)); 56 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "floatField"), 57 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.floatField)); 58 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleField"), 59 JavaConstant.forDouble(DUMMY_CLASS_INSTANCE.doubleField)); 60 INSTANCE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "objectField"), 61 CONSTANT_REFLECTION_PROVIDER.forObject( 62 DUMMY_CLASS_INSTANCE.objectField)); 63 } 64 65 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FINAL_FIELDS_MAP = new HashMap<>(); 66 67 static { 68 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalBooleanField"), 69 JavaConstant.forBoolean( 70 DUMMY_CLASS_INSTANCE.finalBooleanField)); 71 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalByteField"), 72 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.finalByteField)); 73 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalShortField"), 74 JavaConstant.forShort(DUMMY_CLASS_INSTANCE.finalShortField)); 75 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalCharField"), 76 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.finalCharField)); 77 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalIntField"), 78 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.finalIntField)); 79 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalLongField"), 80 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.finalLongField)); 81 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalFloatField"), 82 JavaConstant.forFloat(DUMMY_CLASS_INSTANCE.finalFloatField)); 83 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalDoubleField"), 84 JavaConstant.forDouble( 85 DUMMY_CLASS_INSTANCE.finalDoubleField)); 86 INSTANCE_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "finalObjectField"), 87 CONSTANT_REFLECTION_PROVIDER.forObject( 88 DUMMY_CLASS_INSTANCE.finalObjectField)); 89 } 90 91 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_FINAL_DEFAULT_FIELDS_MAP = new HashMap<>(); 92 93 static { 94 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 95 "finalDefaultBooleanField"), 96 JavaConstant.forBoolean( 97 DUMMY_CLASS_INSTANCE.finalDefaultBooleanField)); 98 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 99 "finalDefaultByteField"), 100 JavaConstant.forByte( 101 DUMMY_CLASS_INSTANCE.finalDefaultByteField)); 102 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 103 "finalDefaultShortField"), 104 JavaConstant.forShort( 105 DUMMY_CLASS_INSTANCE.finalDefaultShortField)); 106 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 107 "finalDefaultCharField"), 108 JavaConstant.forChar( 109 DUMMY_CLASS_INSTANCE.finalDefaultCharField)); 110 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 111 "finalDefaultIntField"), 112 JavaConstant.forInt( 113 DUMMY_CLASS_INSTANCE.finalDefaultIntField)); 114 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 115 "finalDefaultLongField"), 116 JavaConstant.forLong( 117 DUMMY_CLASS_INSTANCE.finalDefaultLongField)); 118 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 119 "finalDefaultFloatField"), 120 JavaConstant.forFloat( 121 DUMMY_CLASS_INSTANCE.finalDefaultFloatField)); 122 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 123 "finalDefaultDoubleField"), 124 JavaConstant.forDouble( 125 DUMMY_CLASS_INSTANCE.finalDefaultDoubleField)); 126 INSTANCE_FINAL_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 127 "finalDefaultObjectField"), 128 CONSTANT_REFLECTION_PROVIDER.forObject( 129 DUMMY_CLASS_INSTANCE.finalDefaultObjectField)); 130 } 131 132 public static final Map<ResolvedJavaField, JavaConstant> INSTANCE_STABLE_FIELDS_MAP = new HashMap<>(); 133 134 static { 135 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableBooleanField"), 136 JavaConstant.forBoolean( 137 DUMMY_CLASS_INSTANCE.stableBooleanField)); 138 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteField"), 139 JavaConstant.forByte(DUMMY_CLASS_INSTANCE.stableByteField)); 140 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortField"), 141 JavaConstant.forShort( 142 DUMMY_CLASS_INSTANCE.stableShortField)); 143 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharField"), 144 JavaConstant.forChar(DUMMY_CLASS_INSTANCE.stableCharField)); 145 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntField"), 146 JavaConstant.forInt(DUMMY_CLASS_INSTANCE.stableIntField)); 147 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongField"), 148 JavaConstant.forLong(DUMMY_CLASS_INSTANCE.stableLongField)); 149 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatField"), 150 JavaConstant.forFloat( 151 DUMMY_CLASS_INSTANCE.stableFloatField)); 152 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleField"), 153 JavaConstant.forDouble( 154 DUMMY_CLASS_INSTANCE.stableDoubleField)); 155 INSTANCE_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectField"), 156 CONSTANT_REFLECTION_PROVIDER.forObject( 157 DUMMY_CLASS_INSTANCE.stableObjectField)); 158 } 159 160 public static final Map<ResolvedJavaField, JavaConstant> STATIC_FIELDS_MAP = new HashMap<>(); 161 162 static { 163 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticBooleanField"), 164 JavaConstant.forBoolean(DummyClass.staticBooleanField)); 165 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticByteField"), 166 JavaConstant.forByte(DummyClass.staticByteField)); 167 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticShortField"), 168 JavaConstant.forShort(DummyClass.staticShortField)); 169 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticCharField"), 170 JavaConstant.forChar(DummyClass.staticCharField)); 171 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticIntField"), 172 JavaConstant.forInt(DummyClass.staticIntField)); 173 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticLongField"), 174 JavaConstant.forLong(DummyClass.staticLongField)); 175 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFloatField"), 176 JavaConstant.forFloat(DummyClass.staticFloatField)); 177 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticDoubleField"), 178 JavaConstant.forDouble(DummyClass.staticDoubleField)); 179 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticObjectField"), 180 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticObjectField)); 181 } 182 183 public static final Map<ResolvedJavaField, JavaConstant> STATIC_FINAL_FIELDS_MAP = new HashMap<>(); 184 185 static { 186 STATIC_FINAL_FIELDS_MAP.put( 187 getResolvedJavaField(DummyClass.class, "staticFinalBooleanField"), 188 JavaConstant.forBoolean(DummyClass.staticFinalBooleanField)); 189 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalByteField"), 190 JavaConstant.forByte(DummyClass.staticFinalByteField)); 191 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalShortField"), 192 JavaConstant.forShort(DummyClass.staticFinalShortField)); 193 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalCharField"), 194 JavaConstant.forChar(DummyClass.staticFinalCharField)); 195 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalIntField"), 196 JavaConstant.forInt(DummyClass.staticFinalIntField)); 197 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalLongField"), 198 JavaConstant.forLong(DummyClass.staticFinalLongField)); 199 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalFloatField"), 200 JavaConstant.forFloat(DummyClass.staticFinalFloatField)); 201 STATIC_FINAL_FIELDS_MAP.put( 202 getResolvedJavaField(DummyClass.class, "staticFinalDoubleField"), 203 JavaConstant.forDouble(DummyClass.staticFinalDoubleField)); 204 STATIC_FINAL_FIELDS_MAP.put( 205 getResolvedJavaField(DummyClass.class, "staticFinalObjectField"), 206 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticFinalObjectField)); 207 } 208 209 public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_FIELDS_MAP = new HashMap<>(); 210 211 static { 212 STATIC_STABLE_FIELDS_MAP.put( 213 getResolvedJavaField(DummyClass.class, "staticStableBooleanField"), 214 JavaConstant.forBoolean(DummyClass.staticStableBooleanField)); 215 STATIC_STABLE_FIELDS_MAP.put( 216 getResolvedJavaField(DummyClass.class, "staticStableByteField"), 217 JavaConstant.forByte(DummyClass.staticStableByteField)); 218 STATIC_STABLE_FIELDS_MAP.put( 219 getResolvedJavaField(DummyClass.class, "staticStableShortField"), 220 JavaConstant.forShort(DummyClass.staticStableShortField)); 221 STATIC_STABLE_FIELDS_MAP.put( 222 getResolvedJavaField(DummyClass.class, "staticStableCharField"), 223 JavaConstant.forChar(DummyClass.staticStableCharField)); 224 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableIntField"), 225 JavaConstant.forInt(DummyClass.staticStableIntField)); 226 STATIC_STABLE_FIELDS_MAP.put( 227 getResolvedJavaField(DummyClass.class, "staticStableLongField"), 228 JavaConstant.forLong(DummyClass.staticStableLongField)); 229 STATIC_STABLE_FIELDS_MAP.put( 230 getResolvedJavaField(DummyClass.class, "staticStableFloatField"), 231 JavaConstant.forFloat(DummyClass.staticStableFloatField)); 232 STATIC_STABLE_FIELDS_MAP.put( 233 getResolvedJavaField(DummyClass.class, "staticStableDoubleField"), 234 JavaConstant.forDouble(DummyClass.staticStableDoubleField)); 235 STATIC_STABLE_FIELDS_MAP.put( 236 getResolvedJavaField(DummyClass.class, "staticStableObjectField"), 237 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticStableObjectField)); 238 } 239 240 public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_DEFAULT_FIELDS_MAP = new HashMap<>(); 241 242 static { 243 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 244 "staticStableDefaultBooleanField"), 245 JavaConstant.forBoolean( 246 DummyClass.staticStableDefaultBooleanField)); 247 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 248 "staticStableDefaultByteField"), 249 JavaConstant.forByte( 250 DummyClass.staticStableDefaultByteField)); 251 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 252 "staticStableDefaultShortField"), 253 JavaConstant.forShort( 254 DummyClass.staticStableDefaultShortField)); 255 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 256 "staticStableDefaultCharField"), 257 JavaConstant.forChar( 258 DummyClass.staticStableDefaultCharField)); 259 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 260 "staticStableDefaultIntField"), 261 JavaConstant.forInt( 262 DummyClass.staticStableDefaultIntField)); 263 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 264 "staticStableDefaultLongField"), 265 JavaConstant.forLong( 266 DummyClass.staticStableDefaultLongField)); 267 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 268 "staticStableDefaultFloatField"), 269 JavaConstant.forFloat( 270 DummyClass.staticStableDefaultFloatField)); 271 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 272 "staticStableDefaultDoubleField"), 273 JavaConstant.forDouble( 274 DummyClass.staticStableDefaultDoubleField)); 275 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 276 "staticStableDefaultObjectField"), 277 CONSTANT_REFLECTION_PROVIDER.forObject( 278 DummyClass.staticStableDefaultObjectField)); 279 } 280 281 public static final int ARRAY_DIMENSION = 1; 282 public static final int ARRAY_OF_ARRAYS_DIMENSION = 2; 283 284 public static final Map<ResolvedJavaField, JavaConstant> ARRAYS_MAP = new HashMap<>(); 285 286 static { 287 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayWithValues"), 288 CONSTANT_REFLECTION_PROVIDER.forObject( 289 DUMMY_CLASS_INSTANCE.booleanArrayWithValues)); 290 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayWithValues"), 291 CONSTANT_REFLECTION_PROVIDER.forObject( 292 DUMMY_CLASS_INSTANCE.byteArrayWithValues)); 293 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayWithValues"), 294 CONSTANT_REFLECTION_PROVIDER.forObject( 295 DUMMY_CLASS_INSTANCE.shortArrayWithValues)); 296 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayWithValues"), 297 CONSTANT_REFLECTION_PROVIDER.forObject( 298 DUMMY_CLASS_INSTANCE.charArrayWithValues)); 299 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayWithValues"), 300 CONSTANT_REFLECTION_PROVIDER.forObject( 301 DUMMY_CLASS_INSTANCE.intArrayWithValues)); 302 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayWithValues"), 303 CONSTANT_REFLECTION_PROVIDER.forObject( 304 DUMMY_CLASS_INSTANCE.longArrayWithValues)); 305 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayWithValues"), 306 CONSTANT_REFLECTION_PROVIDER.forObject( 307 DUMMY_CLASS_INSTANCE.floatArrayWithValues)); 308 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayWithValues"), 309 CONSTANT_REFLECTION_PROVIDER.forObject( 310 DUMMY_CLASS_INSTANCE.doubleArrayWithValues)); 311 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayWithValues"), 312 CONSTANT_REFLECTION_PROVIDER.forObject( 313 DUMMY_CLASS_INSTANCE.objectArrayWithValues)); 314 } 315 316 public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAYS_MAP = new HashMap<>(); 317 318 static { 319 STABLE_ARRAYS_MAP.put( 320 getResolvedJavaField(DummyClass.class, "stableBooleanArrayWithValues"), 321 CONSTANT_REFLECTION_PROVIDER.forObject( 322 DUMMY_CLASS_INSTANCE.stableBooleanArrayWithValues)); 323 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteArrayWithValues"), 324 CONSTANT_REFLECTION_PROVIDER.forObject( 325 DUMMY_CLASS_INSTANCE.stableByteArrayWithValues)); 326 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortArrayWithValues"), 327 CONSTANT_REFLECTION_PROVIDER.forObject( 328 DUMMY_CLASS_INSTANCE.stableShortArrayWithValues)); 329 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharArrayWithValues"), 330 CONSTANT_REFLECTION_PROVIDER.forObject( 331 DUMMY_CLASS_INSTANCE.stableCharArrayWithValues)); 332 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntArrayWithValues"), 333 CONSTANT_REFLECTION_PROVIDER.forObject( 334 DUMMY_CLASS_INSTANCE.stableIntArrayWithValues)); 335 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongArrayWithValues"), 336 CONSTANT_REFLECTION_PROVIDER.forObject( 337 DUMMY_CLASS_INSTANCE.stableLongArrayWithValues)); 338 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatArrayWithValues"), 339 CONSTANT_REFLECTION_PROVIDER.forObject( 340 DUMMY_CLASS_INSTANCE.stableFloatArrayWithValues)); 341 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleArrayWithValues"), 342 CONSTANT_REFLECTION_PROVIDER.forObject( 343 DUMMY_CLASS_INSTANCE.stableDoubleArrayWithValues)); 344 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectArrayWithValues"), 345 CONSTANT_REFLECTION_PROVIDER.forObject( 346 DUMMY_CLASS_INSTANCE.stableObjectArrayWithValues)); 347 } 348 349 public static final Map<ResolvedJavaField, JavaConstant> ARRAY_ARRAYS_MAP = new HashMap<>(); 350 351 static { 352 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayArrayWithValues"), 353 CONSTANT_REFLECTION_PROVIDER.forObject( 354 DUMMY_CLASS_INSTANCE.booleanArrayArrayWithValues)); 355 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayArrayWithValues"), 356 CONSTANT_REFLECTION_PROVIDER.forObject( 357 DUMMY_CLASS_INSTANCE.byteArrayArrayWithValues)); 358 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayArrayWithValues"), 359 CONSTANT_REFLECTION_PROVIDER.forObject( 360 DUMMY_CLASS_INSTANCE.shortArrayArrayWithValues)); 361 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayArrayWithValues"), 362 CONSTANT_REFLECTION_PROVIDER.forObject( 363 DUMMY_CLASS_INSTANCE.charArrayArrayWithValues)); 364 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayArrayWithValues"), 365 CONSTANT_REFLECTION_PROVIDER.forObject( 366 DUMMY_CLASS_INSTANCE.intArrayArrayWithValues)); 367 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayArrayWithValues"), 368 CONSTANT_REFLECTION_PROVIDER.forObject( 369 DUMMY_CLASS_INSTANCE.longArrayArrayWithValues)); 370 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayArrayWithValues"), 371 CONSTANT_REFLECTION_PROVIDER.forObject( 372 DUMMY_CLASS_INSTANCE.floatArrayArrayWithValues)); 373 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayArrayWithValues"), 374 CONSTANT_REFLECTION_PROVIDER.forObject( 375 DUMMY_CLASS_INSTANCE.doubleArrayArrayWithValues)); 376 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayArrayWithValues"), 377 CONSTANT_REFLECTION_PROVIDER.forObject( 378 DUMMY_CLASS_INSTANCE.objectArrayArrayWithValues)); 379 } 380 381 public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAY_ARRAYS_MAP = new HashMap<>(); 382 383 static { 384 STABLE_ARRAY_ARRAYS_MAP.put( 385 getResolvedJavaField(DummyClass.class, "stableBooleanArrayArrayWithValues"), 386 CONSTANT_REFLECTION_PROVIDER.forObject( 387 DUMMY_CLASS_INSTANCE.stableBooleanArrayArrayWithValues)); 388 STABLE_ARRAY_ARRAYS_MAP.put( 389 getResolvedJavaField(DummyClass.class, "stableByteArrayArrayWithValues"), 390 CONSTANT_REFLECTION_PROVIDER.forObject( 391 DUMMY_CLASS_INSTANCE.stableByteArrayArrayWithValues)); 392 STABLE_ARRAY_ARRAYS_MAP.put( 393 getResolvedJavaField(DummyClass.class, "stableShortArrayArrayWithValues"), 394 CONSTANT_REFLECTION_PROVIDER.forObject( 395 DUMMY_CLASS_INSTANCE.stableShortArrayArrayWithValues)); 396 STABLE_ARRAY_ARRAYS_MAP.put( 397 getResolvedJavaField(DummyClass.class, "stableCharArrayArrayWithValues"), 398 CONSTANT_REFLECTION_PROVIDER.forObject( 399 DUMMY_CLASS_INSTANCE.stableCharArrayArrayWithValues)); 400 STABLE_ARRAY_ARRAYS_MAP.put( 401 getResolvedJavaField(DummyClass.class, "stableIntArrayArrayWithValues"), 402 CONSTANT_REFLECTION_PROVIDER.forObject( 403 DUMMY_CLASS_INSTANCE.stableIntArrayArrayWithValues)); 404 STABLE_ARRAY_ARRAYS_MAP.put( 405 getResolvedJavaField(DummyClass.class, "stableLongArrayArrayWithValues"), 406 CONSTANT_REFLECTION_PROVIDER.forObject( 407 DUMMY_CLASS_INSTANCE.stableLongArrayArrayWithValues)); 408 STABLE_ARRAY_ARRAYS_MAP.put( 409 getResolvedJavaField(DummyClass.class, "stableFloatArrayArrayWithValues"), 410 CONSTANT_REFLECTION_PROVIDER.forObject( 411 DUMMY_CLASS_INSTANCE.stableFloatArrayArrayWithValues)); 412 STABLE_ARRAY_ARRAYS_MAP.put( 413 getResolvedJavaField(DummyClass.class, "stableDoubleArrayArrayWithValues"), 414 CONSTANT_REFLECTION_PROVIDER.forObject( 415 DUMMY_CLASS_INSTANCE.stableDoubleArrayArrayWithValues)); 416 STABLE_ARRAY_ARRAYS_MAP.put( 417 getResolvedJavaField(DummyClass.class, "stableObjectArrayArrayWithValues"), 418 CONSTANT_REFLECTION_PROVIDER.forObject( 419 DUMMY_CLASS_INSTANCE.stableObjectArrayArrayWithValues)); 420 } 421 422 public static ResolvedJavaField getResolvedJavaField(Class<?> clazz, String fieldName) { 423 Field reflectionField = null; 424 try { 425 reflectionField = clazz.getDeclaredField(fieldName); 426 reflectionField.setAccessible(true); 427 } catch (NoSuchFieldException ex) { 428 throw new Error("Test bug: Invalid field name: " + ex, ex); 429 } catch (SecurityException ex) { 430 throw new Error("Unexpected error: " + ex, ex); 431 } 432 MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess(); 433 return metaAccess.lookupJavaField(reflectionField); 434 } 435 }