< prev index next >

src/hotspot/share/classfile/vmIntrinsics.cpp

Print this page

  1 /*
  2  * Copyright (c) 2020, 2025, 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  *

248     case vmIntrinsics::_countPositives:
249     case vmIntrinsics::_Reference_get0:
250     case vmIntrinsics::_Continuation_doYield:
251     case vmIntrinsics::_Continuation_enterSpecial:
252     case vmIntrinsics::_Continuation_pin:
253     case vmIntrinsics::_Continuation_unpin:
254       break;
255     default:
256       return true;
257     }
258   }
259 
260   switch (id) {
261   case vmIntrinsics::_isInstance:
262   case vmIntrinsics::_isAssignableFrom:
263   case vmIntrinsics::_isHidden:
264   case vmIntrinsics::_getSuperclass:
265   case vmIntrinsics::_Class_cast:
266   case vmIntrinsics::_getLength:
267   case vmIntrinsics::_newArray:






268   case vmIntrinsics::_getClass:
269     if (!InlineClassNatives) return true;
270     break;
271   case vmIntrinsics::_currentCarrierThread:
272   case vmIntrinsics::_currentThread:
273     if (!InlineThreadNatives) return true;
274     break;
275   case vmIntrinsics::_setCurrentThread:
276   case vmIntrinsics::_scopedValueCache:
277   case vmIntrinsics::_setScopedValueCache:
278   case vmIntrinsics::_floatToRawIntBits:
279   case vmIntrinsics::_intBitsToFloat:
280   case vmIntrinsics::_doubleToRawLongBits:
281   case vmIntrinsics::_longBitsToDouble:
282   case vmIntrinsics::_ceil:
283   case vmIntrinsics::_floor:
284   case vmIntrinsics::_rint:
285   case vmIntrinsics::_dabs:
286   case vmIntrinsics::_fabs:
287   case vmIntrinsics::_iabs:

328   case vmIntrinsics::_float16ToFloat:
329     if (!InlineIntrinsics) return true;
330     break;
331   case vmIntrinsics::_arraycopy:
332     if (!InlineArrayCopy) return true;
333     break;
334   case vmIntrinsics::_updateCRC32:
335   case vmIntrinsics::_updateBytesCRC32:
336   case vmIntrinsics::_updateByteBufferCRC32:
337     if (!UseCRC32Intrinsics) return true;
338     break;
339   case vmIntrinsics::_getReference:
340   case vmIntrinsics::_getBoolean:
341   case vmIntrinsics::_getByte:
342   case vmIntrinsics::_getShort:
343   case vmIntrinsics::_getChar:
344   case vmIntrinsics::_getInt:
345   case vmIntrinsics::_getLong:
346   case vmIntrinsics::_getFloat:
347   case vmIntrinsics::_getDouble:

348   case vmIntrinsics::_putReference:
349   case vmIntrinsics::_putBoolean:
350   case vmIntrinsics::_putByte:
351   case vmIntrinsics::_putShort:
352   case vmIntrinsics::_putChar:
353   case vmIntrinsics::_putInt:
354   case vmIntrinsics::_putLong:
355   case vmIntrinsics::_putFloat:
356   case vmIntrinsics::_putDouble:

357   case vmIntrinsics::_getReferenceVolatile:
358   case vmIntrinsics::_getBooleanVolatile:
359   case vmIntrinsics::_getByteVolatile:
360   case vmIntrinsics::_getShortVolatile:
361   case vmIntrinsics::_getCharVolatile:
362   case vmIntrinsics::_getIntVolatile:
363   case vmIntrinsics::_getLongVolatile:
364   case vmIntrinsics::_getFloatVolatile:
365   case vmIntrinsics::_getDoubleVolatile:
366   case vmIntrinsics::_putReferenceVolatile:
367   case vmIntrinsics::_putBooleanVolatile:
368   case vmIntrinsics::_putByteVolatile:
369   case vmIntrinsics::_putShortVolatile:
370   case vmIntrinsics::_putCharVolatile:
371   case vmIntrinsics::_putIntVolatile:
372   case vmIntrinsics::_putLongVolatile:
373   case vmIntrinsics::_putFloatVolatile:
374   case vmIntrinsics::_putDoubleVolatile:
375   case vmIntrinsics::_getReferenceAcquire:
376   case vmIntrinsics::_getBooleanAcquire:

399   case vmIntrinsics::_getLongOpaque:
400   case vmIntrinsics::_getFloatOpaque:
401   case vmIntrinsics::_getDoubleOpaque:
402   case vmIntrinsics::_putReferenceOpaque:
403   case vmIntrinsics::_putBooleanOpaque:
404   case vmIntrinsics::_putByteOpaque:
405   case vmIntrinsics::_putShortOpaque:
406   case vmIntrinsics::_putCharOpaque:
407   case vmIntrinsics::_putIntOpaque:
408   case vmIntrinsics::_putLongOpaque:
409   case vmIntrinsics::_putFloatOpaque:
410   case vmIntrinsics::_putDoubleOpaque:
411   case vmIntrinsics::_getAndAddInt:
412   case vmIntrinsics::_getAndAddLong:
413   case vmIntrinsics::_getAndSetInt:
414   case vmIntrinsics::_getAndSetLong:
415   case vmIntrinsics::_getAndSetReference:
416   case vmIntrinsics::_loadFence:
417   case vmIntrinsics::_storeFence:
418   case vmIntrinsics::_fullFence:




419   case vmIntrinsics::_compareAndSetLong:
420   case vmIntrinsics::_weakCompareAndSetLong:
421   case vmIntrinsics::_weakCompareAndSetLongPlain:
422   case vmIntrinsics::_weakCompareAndSetLongAcquire:
423   case vmIntrinsics::_weakCompareAndSetLongRelease:
424   case vmIntrinsics::_compareAndSetInt:
425   case vmIntrinsics::_weakCompareAndSetInt:
426   case vmIntrinsics::_weakCompareAndSetIntPlain:
427   case vmIntrinsics::_weakCompareAndSetIntAcquire:
428   case vmIntrinsics::_weakCompareAndSetIntRelease:
429   case vmIntrinsics::_compareAndSetReference:
430   case vmIntrinsics::_weakCompareAndSetReference:
431   case vmIntrinsics::_weakCompareAndSetReferencePlain:
432   case vmIntrinsics::_weakCompareAndSetReferenceAcquire:
433   case vmIntrinsics::_weakCompareAndSetReferenceRelease:
434   case vmIntrinsics::_compareAndExchangeInt:
435   case vmIntrinsics::_compareAndExchangeIntAcquire:
436   case vmIntrinsics::_compareAndExchangeIntRelease:
437   case vmIntrinsics::_compareAndExchangeLong:
438   case vmIntrinsics::_compareAndExchangeLongAcquire:

  1 /*
  2  * Copyright (c) 2020, 2026, 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  *

248     case vmIntrinsics::_countPositives:
249     case vmIntrinsics::_Reference_get0:
250     case vmIntrinsics::_Continuation_doYield:
251     case vmIntrinsics::_Continuation_enterSpecial:
252     case vmIntrinsics::_Continuation_pin:
253     case vmIntrinsics::_Continuation_unpin:
254       break;
255     default:
256       return true;
257     }
258   }
259 
260   switch (id) {
261   case vmIntrinsics::_isInstance:
262   case vmIntrinsics::_isAssignableFrom:
263   case vmIntrinsics::_isHidden:
264   case vmIntrinsics::_getSuperclass:
265   case vmIntrinsics::_Class_cast:
266   case vmIntrinsics::_getLength:
267   case vmIntrinsics::_newArray:
268   case vmIntrinsics::_newNullRestrictedNonAtomicArray:
269   case vmIntrinsics::_newNullRestrictedAtomicArray:
270   case vmIntrinsics::_newNullableAtomicArray:
271   case vmIntrinsics::_isFlatArray:
272   case vmIntrinsics::_isNullRestrictedArray:
273   case vmIntrinsics::_isAtomicArray:
274   case vmIntrinsics::_getClass:
275     if (!InlineClassNatives) return true;
276     break;
277   case vmIntrinsics::_currentCarrierThread:
278   case vmIntrinsics::_currentThread:
279     if (!InlineThreadNatives) return true;
280     break;
281   case vmIntrinsics::_setCurrentThread:
282   case vmIntrinsics::_scopedValueCache:
283   case vmIntrinsics::_setScopedValueCache:
284   case vmIntrinsics::_floatToRawIntBits:
285   case vmIntrinsics::_intBitsToFloat:
286   case vmIntrinsics::_doubleToRawLongBits:
287   case vmIntrinsics::_longBitsToDouble:
288   case vmIntrinsics::_ceil:
289   case vmIntrinsics::_floor:
290   case vmIntrinsics::_rint:
291   case vmIntrinsics::_dabs:
292   case vmIntrinsics::_fabs:
293   case vmIntrinsics::_iabs:

334   case vmIntrinsics::_float16ToFloat:
335     if (!InlineIntrinsics) return true;
336     break;
337   case vmIntrinsics::_arraycopy:
338     if (!InlineArrayCopy) return true;
339     break;
340   case vmIntrinsics::_updateCRC32:
341   case vmIntrinsics::_updateBytesCRC32:
342   case vmIntrinsics::_updateByteBufferCRC32:
343     if (!UseCRC32Intrinsics) return true;
344     break;
345   case vmIntrinsics::_getReference:
346   case vmIntrinsics::_getBoolean:
347   case vmIntrinsics::_getByte:
348   case vmIntrinsics::_getShort:
349   case vmIntrinsics::_getChar:
350   case vmIntrinsics::_getInt:
351   case vmIntrinsics::_getLong:
352   case vmIntrinsics::_getFloat:
353   case vmIntrinsics::_getDouble:
354   case vmIntrinsics::_getFlatValue:
355   case vmIntrinsics::_putReference:
356   case vmIntrinsics::_putBoolean:
357   case vmIntrinsics::_putByte:
358   case vmIntrinsics::_putShort:
359   case vmIntrinsics::_putChar:
360   case vmIntrinsics::_putInt:
361   case vmIntrinsics::_putLong:
362   case vmIntrinsics::_putFloat:
363   case vmIntrinsics::_putDouble:
364   case vmIntrinsics::_putFlatValue:
365   case vmIntrinsics::_getReferenceVolatile:
366   case vmIntrinsics::_getBooleanVolatile:
367   case vmIntrinsics::_getByteVolatile:
368   case vmIntrinsics::_getShortVolatile:
369   case vmIntrinsics::_getCharVolatile:
370   case vmIntrinsics::_getIntVolatile:
371   case vmIntrinsics::_getLongVolatile:
372   case vmIntrinsics::_getFloatVolatile:
373   case vmIntrinsics::_getDoubleVolatile:
374   case vmIntrinsics::_putReferenceVolatile:
375   case vmIntrinsics::_putBooleanVolatile:
376   case vmIntrinsics::_putByteVolatile:
377   case vmIntrinsics::_putShortVolatile:
378   case vmIntrinsics::_putCharVolatile:
379   case vmIntrinsics::_putIntVolatile:
380   case vmIntrinsics::_putLongVolatile:
381   case vmIntrinsics::_putFloatVolatile:
382   case vmIntrinsics::_putDoubleVolatile:
383   case vmIntrinsics::_getReferenceAcquire:
384   case vmIntrinsics::_getBooleanAcquire:

407   case vmIntrinsics::_getLongOpaque:
408   case vmIntrinsics::_getFloatOpaque:
409   case vmIntrinsics::_getDoubleOpaque:
410   case vmIntrinsics::_putReferenceOpaque:
411   case vmIntrinsics::_putBooleanOpaque:
412   case vmIntrinsics::_putByteOpaque:
413   case vmIntrinsics::_putShortOpaque:
414   case vmIntrinsics::_putCharOpaque:
415   case vmIntrinsics::_putIntOpaque:
416   case vmIntrinsics::_putLongOpaque:
417   case vmIntrinsics::_putFloatOpaque:
418   case vmIntrinsics::_putDoubleOpaque:
419   case vmIntrinsics::_getAndAddInt:
420   case vmIntrinsics::_getAndAddLong:
421   case vmIntrinsics::_getAndSetInt:
422   case vmIntrinsics::_getAndSetLong:
423   case vmIntrinsics::_getAndSetReference:
424   case vmIntrinsics::_loadFence:
425   case vmIntrinsics::_storeFence:
426   case vmIntrinsics::_fullFence:
427   case vmIntrinsics::_arrayInstanceBaseOffset:
428   case vmIntrinsics::_arrayInstanceIndexScale:
429   case vmIntrinsics::_arrayLayout:
430   case vmIntrinsics::_getFieldMap:
431   case vmIntrinsics::_compareAndSetLong:
432   case vmIntrinsics::_weakCompareAndSetLong:
433   case vmIntrinsics::_weakCompareAndSetLongPlain:
434   case vmIntrinsics::_weakCompareAndSetLongAcquire:
435   case vmIntrinsics::_weakCompareAndSetLongRelease:
436   case vmIntrinsics::_compareAndSetInt:
437   case vmIntrinsics::_weakCompareAndSetInt:
438   case vmIntrinsics::_weakCompareAndSetIntPlain:
439   case vmIntrinsics::_weakCompareAndSetIntAcquire:
440   case vmIntrinsics::_weakCompareAndSetIntRelease:
441   case vmIntrinsics::_compareAndSetReference:
442   case vmIntrinsics::_weakCompareAndSetReference:
443   case vmIntrinsics::_weakCompareAndSetReferencePlain:
444   case vmIntrinsics::_weakCompareAndSetReferenceAcquire:
445   case vmIntrinsics::_weakCompareAndSetReferenceRelease:
446   case vmIntrinsics::_compareAndExchangeInt:
447   case vmIntrinsics::_compareAndExchangeIntAcquire:
448   case vmIntrinsics::_compareAndExchangeIntRelease:
449   case vmIntrinsics::_compareAndExchangeLong:
450   case vmIntrinsics::_compareAndExchangeLongAcquire:
< prev index next >