comparison graal/com.oracle.truffle.api/src/com/oracle/truffle/api/CompilerDirectives.java @ 14880:73546bd550f0

CompilerDirectives: add optional nonNull parameter to unsafeCast
author Andreas Woess <andreas.woess@jku.at>
date Fri, 28 Mar 2014 18:33:05 +0100
parents fca29edf5667
children f3a5036cc13c
comparison
equal deleted inserted replaced
14879:69375786ef70 14880:73546bd550f0
74 public static void transferToInterpreterAndInvalidate() { 74 public static void transferToInterpreterAndInvalidate() {
75 } 75 }
76 76
77 /** 77 /**
78 * Returns a boolean value indicating whether the method is executed in the interpreter. 78 * Returns a boolean value indicating whether the method is executed in the interpreter.
79 * 79 *
80 * @return {@code true} when executed in the interpreter, {@code false} in compiled code. 80 * @return {@code true} when executed in the interpreter, {@code false} in compiled code.
81 */ 81 */
82 public static boolean inInterpreter() { 82 public static boolean inInterpreter() {
83 return true; 83 return true;
84 } 84 }
85 85
86 /** 86 /**
87 * Directive for the compiler that the given runnable should only be executed in the interpreter 87 * Directive for the compiler that the given runnable should only be executed in the interpreter
88 * and ignored in the compiled code. 88 * and ignored in the compiled code.
89 * 89 *
90 * @param runnable the closure that should only be executed in the interpreter 90 * @param runnable the closure that should only be executed in the interpreter
91 */ 91 */
92 public static void interpreterOnly(Runnable runnable) { 92 public static void interpreterOnly(Runnable runnable) {
93 runnable.run(); 93 runnable.run();
94 } 94 }
95 95
96 /** 96 /**
97 * Directive for the compiler that the given callable should only be executed in the 97 * Directive for the compiler that the given callable should only be executed in the
98 * interpreter. 98 * interpreter.
99 * 99 *
100 * @param callable the closure that should only be executed in the interpreter 100 * @param callable the closure that should only be executed in the interpreter
101 * @return the result of executing the closure in the interpreter and null in the compiled code 101 * @return the result of executing the closure in the interpreter and null in the compiled code
102 * @throws Exception If the closure throws an exception when executed in the interpreter. 102 * @throws Exception If the closure throws an exception when executed in the interpreter.
103 */ 103 */
104 public static <T> T interpreterOnly(Callable<T> callable) throws Exception { 104 public static <T> T interpreterOnly(Callable<T> callable) throws Exception {
107 107
108 /** 108 /**
109 * Injects a probability for the given condition into the probability information of the 109 * Injects a probability for the given condition into the probability information of the
110 * immediately succeeding branch instruction for the condition. The probability must be a value 110 * immediately succeeding branch instruction for the condition. The probability must be a value
111 * between 0.0 and 1.0 (inclusive). The condition should not be a combined condition. 111 * between 0.0 and 1.0 (inclusive). The condition should not be a combined condition.
112 * 112 *
113 * Example usage immediately before an if statement (it specifies that the likelihood for a to 113 * Example usage immediately before an if statement (it specifies that the likelihood for a to
114 * be greater than b is 90%): 114 * be greater than b is 90%):
115 * 115 *
116 * <code> 116 * <code>
117 * if (injectBranchProbability(0.9, a > b)) { 117 * if (injectBranchProbability(0.9, a > b)) {
118 * // ... 118 * // ...
119 * } 119 * }
120 * </code> 120 * </code>
121 * 121 *
122 * Example usage for a combined condition (it specifies that the likelihood for a to be greater 122 * Example usage for a combined condition (it specifies that the likelihood for a to be greater
123 * than b is 90% and under the assumption that this is true, the likelihood for a being 0 is 123 * than b is 90% and under the assumption that this is true, the likelihood for a being 0 is
124 * 10%): 124 * 10%):
125 * 125 *
126 * <code> 126 * <code>
127 * if (injectBranchProbability(0.9, a > b) && injectBranchProbability(0.1, a == 0)) { 127 * if (injectBranchProbability(0.9, a > b) && injectBranchProbability(0.1, a == 0)) {
128 * // ... 128 * // ...
129 * } 129 * }
130 * </code> 130 * </code>
131 * 131 *
132 * There are predefined constants for commonly used probabilities (see 132 * There are predefined constants for commonly used probabilities (see
133 * {@link #LIKELY_PROBABILITY} , {@link #UNLIKELY_PROBABILITY}, {@link #SLOWPATH_PROBABILITY}, 133 * {@link #LIKELY_PROBABILITY} , {@link #UNLIKELY_PROBABILITY}, {@link #SLOWPATH_PROBABILITY},
134 * {@link #FASTPATH_PROBABILITY} ). 134 * {@link #FASTPATH_PROBABILITY} ).
135 * 135 *
136 * @param probability the probability value between 0.0 and 1.0 that should be injected 136 * @param probability the probability value between 0.0 and 1.0 that should be injected
137 */ 137 */
138 public static boolean injectBranchProbability(double probability, boolean condition) { 138 public static boolean injectBranchProbability(double probability, boolean condition) {
139 assert probability >= 0.0 && probability <= 1.0; 139 assert probability >= 0.0 && probability <= 1.0;
140 return condition; 140 return condition;
141 } 141 }
142 142
143 /** 143 /**
144 * Bails out of a compilation (e.g., for guest language features that should never be compiled). 144 * Bails out of a compilation (e.g., for guest language features that should never be compiled).
145 * 145 *
146 * @param reason the reason for the bailout 146 * @param reason the reason for the bailout
147 */ 147 */
148 public static void bailout(String reason) { 148 public static void bailout(String reason) {
149 } 149 }
150 150
159 159
160 /** 160 /**
161 * Casts the given value to the value of the given type without any checks. The class must 161 * Casts the given value to the value of the given type without any checks. The class must
162 * evaluate to a constant. The condition parameter gives a hint to the compiler under which 162 * evaluate to a constant. The condition parameter gives a hint to the compiler under which
163 * circumstances this cast can be moved to an earlier location in the program. 163 * circumstances this cast can be moved to an earlier location in the program.
164 * 164 *
165 * @param value the value that is known to have the specified type 165 * @param value the value that is known to have the specified type
166 * @param type the specified new type of the value 166 * @param type the specified new type of the value
167 * @param condition the condition that makes this cast safe also at an earlier location of the 167 * @param condition the condition that makes this cast safe also at an earlier location of the
168 * program 168 * program
169 * @return the value to be casted to the new type 169 * @return the value to be casted to the new type
170 */ 170 */
171 public static <T> T unsafeCast(Object value, Class<T> type, boolean condition) {
172 return unsafeCast(value, type, condition, false);
173 }
174
175 /**
176 * Casts the given value to the value of the given type without any checks. The class must
177 * evaluate to a constant. The condition parameter gives a hint to the compiler under which
178 * circumstances this cast can be moved to an earlier location in the program.
179 *
180 * @param value the value that is known to have the specified type
181 * @param type the specified new type of the value
182 * @param condition the condition that makes this cast safe also at an earlier location of the
183 * program
184 * @param nonNull whether value is known to never be null
185 * @return the value to be casted to the new type
186 */
171 @SuppressWarnings("unchecked") 187 @SuppressWarnings("unchecked")
172 public static <T> T unsafeCast(Object value, Class<T> type, boolean condition) { 188 public static <T> T unsafeCast(Object value, Class<T> type, boolean condition, boolean nonNull) {
173 return (T) value; 189 return (T) value;
174 } 190 }
175 191
176 /** 192 /**
177 * Asserts that this value is not null and retrieved from a call to Frame.materialize. 193 * Asserts that this value is not null and retrieved from a call to Frame.materialize.
178 * 194 *
179 * @param value the value that is known to have been obtained via Frame.materialize 195 * @param value the value that is known to have been obtained via Frame.materialize
180 * @return the value to be casted to the new type 196 * @return the value to be casted to the new type
181 */ 197 */
182 public static MaterializedFrame unsafeFrameCast(MaterializedFrame value) { 198 public static MaterializedFrame unsafeFrameCast(MaterializedFrame value) {
183 return unsafeCast(value, getUnsafeFrameType(), true); 199 return unsafeCast(value, getUnsafeFrameType(), true);
190 /** 206 /**
191 * Unsafe access to a boolean value within an object. The condition parameter gives a hint to 207 * Unsafe access to a boolean value within an object. The condition parameter gives a hint to
192 * the compiler under which circumstances this access can be moved to an earlier location in the 208 * the compiler under which circumstances this access can be moved to an earlier location in the
193 * program. The location identity gives a hint to the compiler for improved global value 209 * program. The location identity gives a hint to the compiler for improved global value
194 * numbering. 210 * numbering.
195 * 211 *
196 * @param receiver the object that is accessed 212 * @param receiver the object that is accessed
197 * @param offset the offset at which to access the object in bytes 213 * @param offset the offset at which to access the object in bytes
198 * @param condition the condition that makes this access safe also at an earlier location in the 214 * @param condition the condition that makes this access safe also at an earlier location in the
199 * program 215 * program
200 * @param locationIdentity the location identity token that can be used for improved global 216 * @param locationIdentity the location identity token that can be used for improved global
208 /** 224 /**
209 * Unsafe access to a byte value within an object. The condition parameter gives a hint to the 225 * Unsafe access to a byte value within an object. The condition parameter gives a hint to the
210 * compiler under which circumstances this access can be moved to an earlier location in the 226 * compiler under which circumstances this access can be moved to an earlier location in the
211 * program. The location identity gives a hint to the compiler for improved global value 227 * program. The location identity gives a hint to the compiler for improved global value
212 * numbering. 228 * numbering.
213 * 229 *
214 * @param receiver the object that is accessed 230 * @param receiver the object that is accessed
215 * @param offset the offset at which to access the object in bytes 231 * @param offset the offset at which to access the object in bytes
216 * @param condition the condition that makes this access safe also at an earlier location in the 232 * @param condition the condition that makes this access safe also at an earlier location in the
217 * program 233 * program
218 * @param locationIdentity the location identity token that can be used for improved global 234 * @param locationIdentity the location identity token that can be used for improved global
226 /** 242 /**
227 * Unsafe access to a short value within an object. The condition parameter gives a hint to the 243 * Unsafe access to a short value within an object. The condition parameter gives a hint to the
228 * compiler under which circumstances this access can be moved to an earlier location in the 244 * compiler under which circumstances this access can be moved to an earlier location in the
229 * program. The location identity gives a hint to the compiler for improved global value 245 * program. The location identity gives a hint to the compiler for improved global value
230 * numbering. 246 * numbering.
231 * 247 *
232 * @param receiver the object that is accessed 248 * @param receiver the object that is accessed
233 * @param offset the offset at which to access the object in bytes 249 * @param offset the offset at which to access the object in bytes
234 * @param condition the condition that makes this access safe also at an earlier location in the 250 * @param condition the condition that makes this access safe also at an earlier location in the
235 * program 251 * program
236 * @param locationIdentity the location identity token that can be used for improved global 252 * @param locationIdentity the location identity token that can be used for improved global
244 /** 260 /**
245 * Unsafe access to an int value within an object. The condition parameter gives a hint to the 261 * Unsafe access to an int value within an object. The condition parameter gives a hint to the
246 * compiler under which circumstances this access can be moved to an earlier location in the 262 * compiler under which circumstances this access can be moved to an earlier location in the
247 * program. The location identity gives a hint to the compiler for improved global value 263 * program. The location identity gives a hint to the compiler for improved global value
248 * numbering. 264 * numbering.
249 * 265 *
250 * @param receiver the object that is accessed 266 * @param receiver the object that is accessed
251 * @param offset the offset at which to access the object in bytes 267 * @param offset the offset at which to access the object in bytes
252 * @param condition the condition that makes this access safe also at an earlier location in the 268 * @param condition the condition that makes this access safe also at an earlier location in the
253 * program 269 * program
254 * @param locationIdentity the location identity token that can be used for improved global 270 * @param locationIdentity the location identity token that can be used for improved global
262 /** 278 /**
263 * Unsafe access to a long value within an object. The condition parameter gives a hint to the 279 * Unsafe access to a long value within an object. The condition parameter gives a hint to the
264 * compiler under which circumstances this access can be moved to an earlier location in the 280 * compiler under which circumstances this access can be moved to an earlier location in the
265 * program. The location identity gives a hint to the compiler for improved global value 281 * program. The location identity gives a hint to the compiler for improved global value
266 * numbering. 282 * numbering.
267 * 283 *
268 * @param receiver the object that is accessed 284 * @param receiver the object that is accessed
269 * @param offset the offset at which to access the object in bytes 285 * @param offset the offset at which to access the object in bytes
270 * @param condition the condition that makes this access safe also at an earlier location in the 286 * @param condition the condition that makes this access safe also at an earlier location in the
271 * program 287 * program
272 * @param locationIdentity the location identity token that can be used for improved global 288 * @param locationIdentity the location identity token that can be used for improved global
280 /** 296 /**
281 * Unsafe access to a float value within an object. The condition parameter gives a hint to the 297 * Unsafe access to a float value within an object. The condition parameter gives a hint to the
282 * compiler under which circumstances this access can be moved to an earlier location in the 298 * compiler under which circumstances this access can be moved to an earlier location in the
283 * program. The location identity gives a hint to the compiler for improved global value 299 * program. The location identity gives a hint to the compiler for improved global value
284 * numbering. 300 * numbering.
285 * 301 *
286 * @param receiver the object that is accessed 302 * @param receiver the object that is accessed
287 * @param offset the offset at which to access the object in bytes 303 * @param offset the offset at which to access the object in bytes
288 * @param condition the condition that makes this access safe also at an earlier location in the 304 * @param condition the condition that makes this access safe also at an earlier location in the
289 * program 305 * program
290 * @param locationIdentity the location identity token that can be used for improved global 306 * @param locationIdentity the location identity token that can be used for improved global
298 /** 314 /**
299 * Unsafe access to a double value within an object. The condition parameter gives a hint to the 315 * Unsafe access to a double value within an object. The condition parameter gives a hint to the
300 * compiler under which circumstances this access can be moved to an earlier location in the 316 * compiler under which circumstances this access can be moved to an earlier location in the
301 * program. The location identity gives a hint to the compiler for improved global value 317 * program. The location identity gives a hint to the compiler for improved global value
302 * numbering. 318 * numbering.
303 * 319 *
304 * @param receiver the object that is accessed 320 * @param receiver the object that is accessed
305 * @param offset the offset at which to access the object in bytes 321 * @param offset the offset at which to access the object in bytes
306 * @param condition the condition that makes this access safe also at an earlier location in the 322 * @param condition the condition that makes this access safe also at an earlier location in the
307 * program 323 * program
308 * @param locationIdentity the location identity token that can be used for improved global 324 * @param locationIdentity the location identity token that can be used for improved global
316 /** 332 /**
317 * Unsafe access to an Object value within an object. The condition parameter gives a hint to 333 * Unsafe access to an Object value within an object. The condition parameter gives a hint to
318 * the compiler under which circumstances this access can be moved to an earlier location in the 334 * the compiler under which circumstances this access can be moved to an earlier location in the
319 * program. The location identity gives a hint to the compiler for improved global value 335 * program. The location identity gives a hint to the compiler for improved global value
320 * numbering. 336 * numbering.
321 * 337 *
322 * @param receiver the object that is accessed 338 * @param receiver the object that is accessed
323 * @param offset the offset at which to access the object in bytes 339 * @param offset the offset at which to access the object in bytes
324 * @param condition the condition that makes this access safe also at an earlier location in the 340 * @param condition the condition that makes this access safe also at an earlier location in the
325 * program 341 * program
326 * @param locationIdentity the location identity token that can be used for improved global 342 * @param locationIdentity the location identity token that can be used for improved global
332 } 348 }
333 349
334 /** 350 /**
335 * Write a boolean value within an object. The location identity gives a hint to the compiler 351 * Write a boolean value within an object. The location identity gives a hint to the compiler
336 * for improved global value numbering. 352 * for improved global value numbering.
337 * 353 *
338 * @param receiver the object that is written to 354 * @param receiver the object that is written to
339 * @param offset the offset at which to write to the object in bytes 355 * @param offset the offset at which to write to the object in bytes
340 * @param value the value to be written 356 * @param value the value to be written
341 * @param locationIdentity the location identity token that can be used for improved global 357 * @param locationIdentity the location identity token that can be used for improved global
342 * value numbering or null 358 * value numbering or null
346 } 362 }
347 363
348 /** 364 /**
349 * Write a byte value within an object. The location identity gives a hint to the compiler for 365 * Write a byte value within an object. The location identity gives a hint to the compiler for
350 * improved global value numbering. 366 * improved global value numbering.
351 * 367 *
352 * @param receiver the object that is written to 368 * @param receiver the object that is written to
353 * @param offset the offset at which to write to the object in bytes 369 * @param offset the offset at which to write to the object in bytes
354 * @param value the value to be written 370 * @param value the value to be written
355 * @param locationIdentity the location identity token that can be used for improved global 371 * @param locationIdentity the location identity token that can be used for improved global
356 * value numbering or null 372 * value numbering or null
360 } 376 }
361 377
362 /** 378 /**
363 * Write a short value within an object. The location identity gives a hint to the compiler for 379 * Write a short value within an object. The location identity gives a hint to the compiler for
364 * improved global value numbering. 380 * improved global value numbering.
365 * 381 *
366 * @param receiver the object that is written to 382 * @param receiver the object that is written to
367 * @param offset the offset at which to write to the object in bytes 383 * @param offset the offset at which to write to the object in bytes
368 * @param value the value to be written 384 * @param value the value to be written
369 * @param locationIdentity the location identity token that can be used for improved global 385 * @param locationIdentity the location identity token that can be used for improved global
370 * value numbering or null 386 * value numbering or null
374 } 390 }
375 391
376 /** 392 /**
377 * Write an int value within an object. The location identity gives a hint to the compiler for 393 * Write an int value within an object. The location identity gives a hint to the compiler for
378 * improved global value numbering. 394 * improved global value numbering.
379 * 395 *
380 * @param receiver the object that is written to 396 * @param receiver the object that is written to
381 * @param offset the offset at which to write to the object in bytes 397 * @param offset the offset at which to write to the object in bytes
382 * @param value the value to be written 398 * @param value the value to be written
383 * @param locationIdentity the location identity token that can be used for improved global 399 * @param locationIdentity the location identity token that can be used for improved global
384 * value numbering or null 400 * value numbering or null
388 } 404 }
389 405
390 /** 406 /**
391 * Write a long value within an object. The location identity gives a hint to the compiler for 407 * Write a long value within an object. The location identity gives a hint to the compiler for
392 * improved global value numbering. 408 * improved global value numbering.
393 * 409 *
394 * @param receiver the object that is written to 410 * @param receiver the object that is written to
395 * @param offset the offset at which to write to the object in bytes 411 * @param offset the offset at which to write to the object in bytes
396 * @param value the value to be written 412 * @param value the value to be written
397 * @param locationIdentity the location identity token that can be used for improved global 413 * @param locationIdentity the location identity token that can be used for improved global
398 * value numbering or null 414 * value numbering or null
402 } 418 }
403 419
404 /** 420 /**
405 * Write a float value within an object. The location identity gives a hint to the compiler for 421 * Write a float value within an object. The location identity gives a hint to the compiler for
406 * improved global value numbering. 422 * improved global value numbering.
407 * 423 *
408 * @param receiver the object that is written to 424 * @param receiver the object that is written to
409 * @param offset the offset at which to write to the object in bytes 425 * @param offset the offset at which to write to the object in bytes
410 * @param value the value to be written 426 * @param value the value to be written
411 * @param locationIdentity the location identity token that can be used for improved global 427 * @param locationIdentity the location identity token that can be used for improved global
412 * value numbering or null 428 * value numbering or null
416 } 432 }
417 433
418 /** 434 /**
419 * Write a double value within an object. The location identity gives a hint to the compiler for 435 * Write a double value within an object. The location identity gives a hint to the compiler for
420 * improved global value numbering. 436 * improved global value numbering.
421 * 437 *
422 * @param receiver the object that is written to 438 * @param receiver the object that is written to
423 * @param offset the offset at which to write to the object in bytes 439 * @param offset the offset at which to write to the object in bytes
424 * @param value the value to be written 440 * @param value the value to be written
425 * @param locationIdentity the location identity token that can be used for improved global 441 * @param locationIdentity the location identity token that can be used for improved global
426 * value numbering or null 442 * value numbering or null
430 } 446 }
431 447
432 /** 448 /**
433 * Write an Object value within an object. The location identity gives a hint to the compiler 449 * Write an Object value within an object. The location identity gives a hint to the compiler
434 * for improved global value numbering. 450 * for improved global value numbering.
435 * 451 *
436 * @param receiver the object that is written to 452 * @param receiver the object that is written to
437 * @param offset the offset at which to write to the object in bytes 453 * @param offset the offset at which to write to the object in bytes
438 * @param value the value to be written 454 * @param value the value to be written
439 * @param locationIdentity the location identity token that can be used for improved global 455 * @param locationIdentity the location identity token that can be used for improved global
440 * value numbering or null 456 * value numbering or null
446 /** 462 /**
447 * Unsafe access to a final boolean value within an object. The condition parameter gives a hint 463 * Unsafe access to a final boolean value within an object. The condition parameter gives a hint
448 * to the compiler under which circumstances this access can be moved to an earlier location in 464 * to the compiler under which circumstances this access can be moved to an earlier location in
449 * the program. The location identity gives a hint to the compiler for improved global value 465 * the program. The location identity gives a hint to the compiler for improved global value
450 * numbering. 466 * numbering.
451 * 467 *
452 * @param receiver the object that is accessed 468 * @param receiver the object that is accessed
453 * @param offset the offset at which to access the object in bytes 469 * @param offset the offset at which to access the object in bytes
454 * @param condition the condition that makes this access safe also at an earlier location in the 470 * @param condition the condition that makes this access safe also at an earlier location in the
455 * program 471 * program
456 * @param locationIdentity the location identity token that can be used for improved global 472 * @param locationIdentity the location identity token that can be used for improved global
464 /** 480 /**
465 * Unsafe access to a final byte value within an object. The condition parameter gives a hint to 481 * Unsafe access to a final byte value within an object. The condition parameter gives a hint to
466 * the compiler under which circumstances this access can be moved to an earlier location in the 482 * the compiler under which circumstances this access can be moved to an earlier location in the
467 * program. The location identity gives a hint to the compiler for improved global value 483 * program. The location identity gives a hint to the compiler for improved global value
468 * numbering. 484 * numbering.
469 * 485 *
470 * @param receiver the object that is accessed 486 * @param receiver the object that is accessed
471 * @param offset the offset at which to access the object in bytes 487 * @param offset the offset at which to access the object in bytes
472 * @param condition the condition that makes this access safe also at an earlier location in the 488 * @param condition the condition that makes this access safe also at an earlier location in the
473 * program 489 * program
474 * @param locationIdentity the location identity token that can be used for improved global 490 * @param locationIdentity the location identity token that can be used for improved global
482 /** 498 /**
483 * Unsafe access to a final short value within an object. The condition parameter gives a hint 499 * Unsafe access to a final short value within an object. The condition parameter gives a hint
484 * to the compiler under which circumstances this access can be moved to an earlier location in 500 * to the compiler under which circumstances this access can be moved to an earlier location in
485 * the program. The location identity gives a hint to the compiler for improved global value 501 * the program. The location identity gives a hint to the compiler for improved global value
486 * numbering. 502 * numbering.
487 * 503 *
488 * @param receiver the object that is accessed 504 * @param receiver the object that is accessed
489 * @param offset the offset at which to access the object in bytes 505 * @param offset the offset at which to access the object in bytes
490 * @param condition the condition that makes this access safe also at an earlier location in the 506 * @param condition the condition that makes this access safe also at an earlier location in the
491 * program 507 * program
492 * @param locationIdentity the location identity token that can be used for improved global 508 * @param locationIdentity the location identity token that can be used for improved global
500 /** 516 /**
501 * Unsafe access to a final int value within an object. The condition parameter gives a hint to 517 * Unsafe access to a final int value within an object. The condition parameter gives a hint to
502 * the compiler under which circumstances this access can be moved to an earlier location in the 518 * the compiler under which circumstances this access can be moved to an earlier location in the
503 * program. The location identity gives a hint to the compiler for improved global value 519 * program. The location identity gives a hint to the compiler for improved global value
504 * numbering. 520 * numbering.
505 * 521 *
506 * @param receiver the object that is accessed 522 * @param receiver the object that is accessed
507 * @param offset the offset at which to access the object in bytes 523 * @param offset the offset at which to access the object in bytes
508 * @param condition the condition that makes this access safe also at an earlier location in the 524 * @param condition the condition that makes this access safe also at an earlier location in the
509 * program 525 * program
510 * @param locationIdentity the location identity token that can be used for improved global 526 * @param locationIdentity the location identity token that can be used for improved global
518 /** 534 /**
519 * Unsafe access to a final long value within an object. The condition parameter gives a hint to 535 * Unsafe access to a final long value within an object. The condition parameter gives a hint to
520 * the compiler under which circumstances this access can be moved to an earlier location in the 536 * the compiler under which circumstances this access can be moved to an earlier location in the
521 * program. The location identity gives a hint to the compiler for improved global value 537 * program. The location identity gives a hint to the compiler for improved global value
522 * numbering. 538 * numbering.
523 * 539 *
524 * @param receiver the object that is accessed 540 * @param receiver the object that is accessed
525 * @param offset the offset at which to access the object in bytes 541 * @param offset the offset at which to access the object in bytes
526 * @param condition the condition that makes this access safe also at an earlier location in the 542 * @param condition the condition that makes this access safe also at an earlier location in the
527 * program 543 * program
528 * @param locationIdentity the location identity token that can be used for improved global 544 * @param locationIdentity the location identity token that can be used for improved global
536 /** 552 /**
537 * Unsafe access to a final float value within an object. The condition parameter gives a hint 553 * Unsafe access to a final float value within an object. The condition parameter gives a hint
538 * to the compiler under which circumstances this access can be moved to an earlier location in 554 * to the compiler under which circumstances this access can be moved to an earlier location in
539 * the program. The location identity gives a hint to the compiler for improved global value 555 * the program. The location identity gives a hint to the compiler for improved global value
540 * numbering. 556 * numbering.
541 * 557 *
542 * @param receiver the object that is accessed 558 * @param receiver the object that is accessed
543 * @param offset the offset at which to access the object in bytes 559 * @param offset the offset at which to access the object in bytes
544 * @param condition the condition that makes this access safe also at an earlier location in the 560 * @param condition the condition that makes this access safe also at an earlier location in the
545 * program 561 * program
546 * @param locationIdentity the location identity token that can be used for improved global 562 * @param locationIdentity the location identity token that can be used for improved global
554 /** 570 /**
555 * Unsafe access to a final double value within an object. The condition parameter gives a hint 571 * Unsafe access to a final double value within an object. The condition parameter gives a hint
556 * to the compiler under which circumstances this access can be moved to an earlier location in 572 * to the compiler under which circumstances this access can be moved to an earlier location in
557 * the program. The location identity gives a hint to the compiler for improved global value 573 * the program. The location identity gives a hint to the compiler for improved global value
558 * numbering. 574 * numbering.
559 * 575 *
560 * @param receiver the object that is accessed 576 * @param receiver the object that is accessed
561 * @param offset the offset at which to access the object in bytes 577 * @param offset the offset at which to access the object in bytes
562 * @param condition the condition that makes this access safe also at an earlier location in the 578 * @param condition the condition that makes this access safe also at an earlier location in the
563 * program 579 * program
564 * @param locationIdentity the location identity token that can be used for improved global 580 * @param locationIdentity the location identity token that can be used for improved global
572 /** 588 /**
573 * Unsafe access to a final Object value within an object. The condition parameter gives a hint 589 * Unsafe access to a final Object value within an object. The condition parameter gives a hint
574 * to the compiler under which circumstances this access can be moved to an earlier location in 590 * to the compiler under which circumstances this access can be moved to an earlier location in
575 * the program. The location identity gives a hint to the compiler for improved global value 591 * the program. The location identity gives a hint to the compiler for improved global value
576 * numbering. 592 * numbering.
577 * 593 *
578 * @param receiver the object that is accessed 594 * @param receiver the object that is accessed
579 * @param offset the offset at which to access the object in bytes 595 * @param offset the offset at which to access the object in bytes
580 * @param condition the condition that makes this access safe also at an earlier location in the 596 * @param condition the condition that makes this access safe also at an earlier location in the
581 * program 597 * program
582 * @param locationIdentity the location identity token that can be used for improved global 598 * @param locationIdentity the location identity token that can be used for improved global