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