Mercurial > hg > graal-compiler
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 |