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