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> INSTANCE_STABLE_DEFAULT_FIELDS_MAP = new HashMap<>(); 161 162 static { 163 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 164 "stableDefaultBooleanField"), 165 JavaConstant.forBoolean( 166 DUMMY_CLASS_INSTANCE.stableDefaultBooleanField)); 167 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 168 "stableDefaultByteField"), 169 JavaConstant.forByte( 170 DUMMY_CLASS_INSTANCE.stableDefaultByteField)); 171 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 172 "stableDefaultShortField"), 173 JavaConstant.forShort( 174 DUMMY_CLASS_INSTANCE.stableDefaultShortField)); 175 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 176 "stableDefaultCharField"), 177 JavaConstant.forChar( 178 DUMMY_CLASS_INSTANCE.stableDefaultCharField)); 179 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 180 "stableDefaultIntField"), 181 JavaConstant.forInt( 182 DUMMY_CLASS_INSTANCE.stableDefaultIntField)); 183 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 184 "stableDefaultLongField"), 185 JavaConstant.forLong( 186 DUMMY_CLASS_INSTANCE.stableDefaultLongField)); 187 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 188 "stableDefaultFloatField"), 189 JavaConstant.forFloat( 190 DUMMY_CLASS_INSTANCE.stableDefaultFloatField)); 191 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 192 "stableDefaultDoubleField"), 193 JavaConstant.forDouble( 194 DUMMY_CLASS_INSTANCE.stableDefaultDoubleField)); 195 INSTANCE_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 196 "stableDefaultObjectField"), 197 CONSTANT_REFLECTION_PROVIDER.forObject( 198 DUMMY_CLASS_INSTANCE.stableDefaultObjectField)); 199 } 200 201 public static final Map<ResolvedJavaField, JavaConstant> STATIC_FIELDS_MAP = new HashMap<>(); 202 203 static { 204 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticBooleanField"), 205 JavaConstant.forBoolean(DummyClass.staticBooleanField)); 206 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticByteField"), 207 JavaConstant.forByte(DummyClass.staticByteField)); 208 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticShortField"), 209 JavaConstant.forShort(DummyClass.staticShortField)); 210 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticCharField"), 211 JavaConstant.forChar(DummyClass.staticCharField)); 212 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticIntField"), 213 JavaConstant.forInt(DummyClass.staticIntField)); 214 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticLongField"), 215 JavaConstant.forLong(DummyClass.staticLongField)); 216 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFloatField"), 217 JavaConstant.forFloat(DummyClass.staticFloatField)); 218 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticDoubleField"), 219 JavaConstant.forDouble(DummyClass.staticDoubleField)); 220 STATIC_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticObjectField"), 221 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticObjectField)); 222 } 223 224 public static final Map<ResolvedJavaField, JavaConstant> STATIC_FINAL_FIELDS_MAP = new HashMap<>(); 225 226 static { 227 STATIC_FINAL_FIELDS_MAP.put( 228 getResolvedJavaField(DummyClass.class, "staticFinalBooleanField"), 229 JavaConstant.forBoolean(DummyClass.staticFinalBooleanField)); 230 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalByteField"), 231 JavaConstant.forByte(DummyClass.staticFinalByteField)); 232 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalShortField"), 233 JavaConstant.forShort(DummyClass.staticFinalShortField)); 234 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalCharField"), 235 JavaConstant.forChar(DummyClass.staticFinalCharField)); 236 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalIntField"), 237 JavaConstant.forInt(DummyClass.staticFinalIntField)); 238 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalLongField"), 239 JavaConstant.forLong(DummyClass.staticFinalLongField)); 240 STATIC_FINAL_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticFinalFloatField"), 241 JavaConstant.forFloat(DummyClass.staticFinalFloatField)); 242 STATIC_FINAL_FIELDS_MAP.put( 243 getResolvedJavaField(DummyClass.class, "staticFinalDoubleField"), 244 JavaConstant.forDouble(DummyClass.staticFinalDoubleField)); 245 STATIC_FINAL_FIELDS_MAP.put( 246 getResolvedJavaField(DummyClass.class, "staticFinalObjectField"), 247 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticFinalObjectField)); 248 } 249 250 public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_FIELDS_MAP = new HashMap<>(); 251 252 static { 253 STATIC_STABLE_FIELDS_MAP.put( 254 getResolvedJavaField(DummyClass.class, "staticStableBooleanField"), 255 JavaConstant.forBoolean(DummyClass.staticStableBooleanField)); 256 STATIC_STABLE_FIELDS_MAP.put( 257 getResolvedJavaField(DummyClass.class, "staticStableByteField"), 258 JavaConstant.forByte(DummyClass.staticStableByteField)); 259 STATIC_STABLE_FIELDS_MAP.put( 260 getResolvedJavaField(DummyClass.class, "staticStableShortField"), 261 JavaConstant.forShort(DummyClass.staticStableShortField)); 262 STATIC_STABLE_FIELDS_MAP.put( 263 getResolvedJavaField(DummyClass.class, "staticStableCharField"), 264 JavaConstant.forChar(DummyClass.staticStableCharField)); 265 STATIC_STABLE_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, "staticStableIntField"), 266 JavaConstant.forInt(DummyClass.staticStableIntField)); 267 STATIC_STABLE_FIELDS_MAP.put( 268 getResolvedJavaField(DummyClass.class, "staticStableLongField"), 269 JavaConstant.forLong(DummyClass.staticStableLongField)); 270 STATIC_STABLE_FIELDS_MAP.put( 271 getResolvedJavaField(DummyClass.class, "staticStableFloatField"), 272 JavaConstant.forFloat(DummyClass.staticStableFloatField)); 273 STATIC_STABLE_FIELDS_MAP.put( 274 getResolvedJavaField(DummyClass.class, "staticStableDoubleField"), 275 JavaConstant.forDouble(DummyClass.staticStableDoubleField)); 276 STATIC_STABLE_FIELDS_MAP.put( 277 getResolvedJavaField(DummyClass.class, "staticStableObjectField"), 278 CONSTANT_REFLECTION_PROVIDER.forObject(DummyClass.staticStableObjectField)); 279 } 280 281 public static final Map<ResolvedJavaField, JavaConstant> STATIC_STABLE_DEFAULT_FIELDS_MAP = new HashMap<>(); 282 283 static { 284 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 285 "staticStableDefaultBooleanField"), 286 JavaConstant.forBoolean( 287 DummyClass.staticStableDefaultBooleanField)); 288 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 289 "staticStableDefaultByteField"), 290 JavaConstant.forByte( 291 DummyClass.staticStableDefaultByteField)); 292 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 293 "staticStableDefaultShortField"), 294 JavaConstant.forShort( 295 DummyClass.staticStableDefaultShortField)); 296 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 297 "staticStableDefaultCharField"), 298 JavaConstant.forChar( 299 DummyClass.staticStableDefaultCharField)); 300 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 301 "staticStableDefaultIntField"), 302 JavaConstant.forInt( 303 DummyClass.staticStableDefaultIntField)); 304 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 305 "staticStableDefaultLongField"), 306 JavaConstant.forLong( 307 DummyClass.staticStableDefaultLongField)); 308 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 309 "staticStableDefaultFloatField"), 310 JavaConstant.forFloat( 311 DummyClass.staticStableDefaultFloatField)); 312 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 313 "staticStableDefaultDoubleField"), 314 JavaConstant.forDouble( 315 DummyClass.staticStableDefaultDoubleField)); 316 STATIC_STABLE_DEFAULT_FIELDS_MAP.put(getResolvedJavaField(DummyClass.class, 317 "staticStableDefaultObjectField"), 318 CONSTANT_REFLECTION_PROVIDER.forObject( 319 DummyClass.staticStableDefaultObjectField)); 320 } 321 322 public static final int ARRAY_DIMENSION = 1; 323 public static final int ARRAY_OF_ARRAYS_DIMENSION = 2; 324 325 public static final Map<ResolvedJavaField, JavaConstant> ARRAYS_MAP = new HashMap<>(); 326 327 static { 328 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayWithValues"), 329 CONSTANT_REFLECTION_PROVIDER.forObject( 330 DUMMY_CLASS_INSTANCE.booleanArrayWithValues)); 331 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayWithValues"), 332 CONSTANT_REFLECTION_PROVIDER.forObject( 333 DUMMY_CLASS_INSTANCE.byteArrayWithValues)); 334 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayWithValues"), 335 CONSTANT_REFLECTION_PROVIDER.forObject( 336 DUMMY_CLASS_INSTANCE.shortArrayWithValues)); 337 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayWithValues"), 338 CONSTANT_REFLECTION_PROVIDER.forObject( 339 DUMMY_CLASS_INSTANCE.charArrayWithValues)); 340 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayWithValues"), 341 CONSTANT_REFLECTION_PROVIDER.forObject( 342 DUMMY_CLASS_INSTANCE.intArrayWithValues)); 343 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayWithValues"), 344 CONSTANT_REFLECTION_PROVIDER.forObject( 345 DUMMY_CLASS_INSTANCE.longArrayWithValues)); 346 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayWithValues"), 347 CONSTANT_REFLECTION_PROVIDER.forObject( 348 DUMMY_CLASS_INSTANCE.floatArrayWithValues)); 349 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayWithValues"), 350 CONSTANT_REFLECTION_PROVIDER.forObject( 351 DUMMY_CLASS_INSTANCE.doubleArrayWithValues)); 352 ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayWithValues"), 353 CONSTANT_REFLECTION_PROVIDER.forObject( 354 DUMMY_CLASS_INSTANCE.objectArrayWithValues)); 355 } 356 357 public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAYS_MAP = new HashMap<>(); 358 359 static { 360 STABLE_ARRAYS_MAP.put( 361 getResolvedJavaField(DummyClass.class, "stableBooleanArrayWithValues"), 362 CONSTANT_REFLECTION_PROVIDER.forObject( 363 DUMMY_CLASS_INSTANCE.stableBooleanArrayWithValues)); 364 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableByteArrayWithValues"), 365 CONSTANT_REFLECTION_PROVIDER.forObject( 366 DUMMY_CLASS_INSTANCE.stableByteArrayWithValues)); 367 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableShortArrayWithValues"), 368 CONSTANT_REFLECTION_PROVIDER.forObject( 369 DUMMY_CLASS_INSTANCE.stableShortArrayWithValues)); 370 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableCharArrayWithValues"), 371 CONSTANT_REFLECTION_PROVIDER.forObject( 372 DUMMY_CLASS_INSTANCE.stableCharArrayWithValues)); 373 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableIntArrayWithValues"), 374 CONSTANT_REFLECTION_PROVIDER.forObject( 375 DUMMY_CLASS_INSTANCE.stableIntArrayWithValues)); 376 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableLongArrayWithValues"), 377 CONSTANT_REFLECTION_PROVIDER.forObject( 378 DUMMY_CLASS_INSTANCE.stableLongArrayWithValues)); 379 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableFloatArrayWithValues"), 380 CONSTANT_REFLECTION_PROVIDER.forObject( 381 DUMMY_CLASS_INSTANCE.stableFloatArrayWithValues)); 382 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableDoubleArrayWithValues"), 383 CONSTANT_REFLECTION_PROVIDER.forObject( 384 DUMMY_CLASS_INSTANCE.stableDoubleArrayWithValues)); 385 STABLE_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "stableObjectArrayWithValues"), 386 CONSTANT_REFLECTION_PROVIDER.forObject( 387 DUMMY_CLASS_INSTANCE.stableObjectArrayWithValues)); 388 } 389 390 public static final Map<ResolvedJavaField, JavaConstant> ARRAY_ARRAYS_MAP = new HashMap<>(); 391 392 static { 393 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "booleanArrayArrayWithValues"), 394 CONSTANT_REFLECTION_PROVIDER.forObject( 395 DUMMY_CLASS_INSTANCE.booleanArrayArrayWithValues)); 396 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "byteArrayArrayWithValues"), 397 CONSTANT_REFLECTION_PROVIDER.forObject( 398 DUMMY_CLASS_INSTANCE.byteArrayArrayWithValues)); 399 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "shortArrayArrayWithValues"), 400 CONSTANT_REFLECTION_PROVIDER.forObject( 401 DUMMY_CLASS_INSTANCE.shortArrayArrayWithValues)); 402 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "charArrayArrayWithValues"), 403 CONSTANT_REFLECTION_PROVIDER.forObject( 404 DUMMY_CLASS_INSTANCE.charArrayArrayWithValues)); 405 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "intArrayArrayWithValues"), 406 CONSTANT_REFLECTION_PROVIDER.forObject( 407 DUMMY_CLASS_INSTANCE.intArrayArrayWithValues)); 408 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "longArrayArrayWithValues"), 409 CONSTANT_REFLECTION_PROVIDER.forObject( 410 DUMMY_CLASS_INSTANCE.longArrayArrayWithValues)); 411 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "floatArrayArrayWithValues"), 412 CONSTANT_REFLECTION_PROVIDER.forObject( 413 DUMMY_CLASS_INSTANCE.floatArrayArrayWithValues)); 414 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "doubleArrayArrayWithValues"), 415 CONSTANT_REFLECTION_PROVIDER.forObject( 416 DUMMY_CLASS_INSTANCE.doubleArrayArrayWithValues)); 417 ARRAY_ARRAYS_MAP.put(getResolvedJavaField(DummyClass.class, "objectArrayArrayWithValues"), 418 CONSTANT_REFLECTION_PROVIDER.forObject( 419 DUMMY_CLASS_INSTANCE.objectArrayArrayWithValues)); 420 } 421 422 public static final Map<ResolvedJavaField, JavaConstant> STABLE_ARRAY_ARRAYS_MAP = new HashMap<>(); 423 424 static { 425 STABLE_ARRAY_ARRAYS_MAP.put( 426 getResolvedJavaField(DummyClass.class, "stableBooleanArrayArrayWithValues"), 427 CONSTANT_REFLECTION_PROVIDER.forObject( 428 DUMMY_CLASS_INSTANCE.stableBooleanArrayArrayWithValues)); 429 STABLE_ARRAY_ARRAYS_MAP.put( 430 getResolvedJavaField(DummyClass.class, "stableByteArrayArrayWithValues"), 431 CONSTANT_REFLECTION_PROVIDER.forObject( 432 DUMMY_CLASS_INSTANCE.stableByteArrayArrayWithValues)); 433 STABLE_ARRAY_ARRAYS_MAP.put( 434 getResolvedJavaField(DummyClass.class, "stableShortArrayArrayWithValues"), 435 CONSTANT_REFLECTION_PROVIDER.forObject( 436 DUMMY_CLASS_INSTANCE.stableShortArrayArrayWithValues)); 437 STABLE_ARRAY_ARRAYS_MAP.put( 438 getResolvedJavaField(DummyClass.class, "stableCharArrayArrayWithValues"), 439 CONSTANT_REFLECTION_PROVIDER.forObject( 440 DUMMY_CLASS_INSTANCE.stableCharArrayArrayWithValues)); 441 STABLE_ARRAY_ARRAYS_MAP.put( 442 getResolvedJavaField(DummyClass.class, "stableIntArrayArrayWithValues"), 443 CONSTANT_REFLECTION_PROVIDER.forObject( 444 DUMMY_CLASS_INSTANCE.stableIntArrayArrayWithValues)); 445 STABLE_ARRAY_ARRAYS_MAP.put( 446 getResolvedJavaField(DummyClass.class, "stableLongArrayArrayWithValues"), 447 CONSTANT_REFLECTION_PROVIDER.forObject( 448 DUMMY_CLASS_INSTANCE.stableLongArrayArrayWithValues)); 449 STABLE_ARRAY_ARRAYS_MAP.put( 450 getResolvedJavaField(DummyClass.class, "stableFloatArrayArrayWithValues"), 451 CONSTANT_REFLECTION_PROVIDER.forObject( 452 DUMMY_CLASS_INSTANCE.stableFloatArrayArrayWithValues)); 453 STABLE_ARRAY_ARRAYS_MAP.put( 454 getResolvedJavaField(DummyClass.class, "stableDoubleArrayArrayWithValues"), 455 CONSTANT_REFLECTION_PROVIDER.forObject( 456 DUMMY_CLASS_INSTANCE.stableDoubleArrayArrayWithValues)); 457 STABLE_ARRAY_ARRAYS_MAP.put( 458 getResolvedJavaField(DummyClass.class, "stableObjectArrayArrayWithValues"), 459 CONSTANT_REFLECTION_PROVIDER.forObject( 460 DUMMY_CLASS_INSTANCE.stableObjectArrayArrayWithValues)); 461 } 462 463 public static ResolvedJavaField getResolvedJavaField(Class<?> clazz, String fieldName) { 464 Field reflectionField = null; 465 try { 466 reflectionField = clazz.getDeclaredField(fieldName); 467 reflectionField.setAccessible(true); 468 } catch (NoSuchFieldException ex) { 469 throw new Error("Test bug: Invalid field name: " + ex, ex); 470 } catch (SecurityException ex) { 471 throw new Error("Unexpected error: " + ex, ex); 472 } 473 MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess(); 474 return metaAccess.lookupJavaField(reflectionField); 475 } 476 }