HotSpot Intrinsics

This is a list of methods which HotSpot has some awareness of. This means that it might know how to perform some transformations and/or can be replaced by a single opcode on some hardware. So the implementation you see in code may not be ever executed.


java.lang.Object.hashCode();
java.lang.Object.getClass();
java.lang.Object.clone();

java.lang.Math.abs(double);
java.lang.Math.sin(double);
java.lang.Math.cos(double);
java.lang.Math.tan(double);
java.lang.Math.atan2(double, double);
java.lang.Math.sqrt(double);
java.lang.Math.log(double);
java.lang.Math.log10(double);
java.lang.Math.pow(double, double);
java.lang.Math.exp(double)
java.lang.Math.min(int, int);
java.lang.Math.max(int, int);

java.lang.Float.floatToRawIntBits(float);
java.lang.Float.floatToIntBits(float);
java.lang.Float.intBitsToFloat(int);

java.lang.Double.doubleToRawLongBits(double);
java.lang.Double.doubleToLongBits(double);
java.lang.Double.longBitsToDouble(long);

java.lang.Integer.numberOfLeadingZeros(int);
java.lang.Long.numberOfLeadingZeros(long);

java.lang.Integer.numberOfTrailingZeros(int);
java.lang.Long.numberOfTrailingZeros(long);

java.lang.Integer.bitCount(int);
java.lang.Long.bitCount(long);

java.lang.Integer.reverseBytes(int);
java.lang.Long.reverseBytes(long);
java.lang.Character.reverseBytes(char);
java.lang.Short.reverseBytes(short);

java.lang.System.identityHashCode(Object);
java.lang.System.currentTimeMillis();
java.lang.System.nanoTime();
java.lang.System.arraycopy(....);
java.lang.Thread.isInterrupted(....);
java.lang.Thread.currentThread();

java.lang.Class.isAssignableFrom(Class)
java.lang.Class.isInstance(Object)
java.lang.Class.getModifiers()
java.lang.Class.isInterface()
java.lang.Class.isArray()
java.lang.Class.isPrimitive()
java.lang.Class.getSuperclass()
java.lang.Class.getComponentType()

sun.reflect.Reflection.getClassAccessFlags(Class)
java.lang.reflect.Array.getLength(Object)

sun.reflect.Reflection.getCallerClass()

java.lang.reflect.Array.newArray

java.util.Arrays.copyOf

java.util.Arrays.copyOfRange
java.util.Arrays.equals
java.lang.String.compareTo(String)
java.lang.String.indexOf
java.lang.String.equals(Object)
java.nio.Buffer.checkIndex(int)

java.lang.ref.Reference.get()

sun.misc.AtomicLongCSImpl.get()
sun.misc.AtomicLongCSImpl.attemptUpdate

sun.misc.Unsafe.allocateInstance
sun.misc.Unsafe.copyMemory
sun.misc.Unsafe.park
sun.misc.Unsafe.unpark

sun.misc.Unsafe.getObject
sun.misc.Unsafe.getBoolean
sun.misc.Unsafe.getByte
sun.misc.Unsafe.getShort
sun.misc.Unsafe.getChar
sun.misc.Unsafe.getInt
sun.misc.Unsafe.getLong
sun.misc.Unsafe.getFloat
sun.misc.Unsafe.getDouble
sun.misc.Unsafe.putObject
sun.misc.Unsafe.putBoolean
sun.misc.Unsafe.putByte
sun.misc.Unsafe.putShort
sun.misc.Unsafe.putChar
sun.misc.Unsafe.putInt
sun.misc.Unsafe.putLong
sun.misc.Unsafe.putFloat
sun.misc.Unsafe.putDouble
sun.misc.Unsafe.getObjectVolatile
sun.misc.Unsafe.getBooleanVolatile
sun.misc.Unsafe.getByteVolatile
sun.misc.Unsafe.getShortVolatile
sun.misc.Unsafe.getCharVolatile
sun.misc.Unsafe.getIntVolatile
sun.misc.Unsafe.getLongVolatile
sun.misc.Unsafe.getFloatVolatile
sun.misc.Unsafe.getDoubleVolatile
sun.misc.Unsafe.putObjectVolatile
sun.misc.Unsafe.putBooleanVolatile
sun.misc.Unsafe.putByteVolatile
sun.misc.Unsafe.putShortVolatile
sun.misc.Unsafe.putCharVolatile
sun.misc.Unsafe.putIntVolatile
sun.misc.Unsafe.putLongVolatile
sun.misc.Unsafe.putFloatVolatile
sun.misc.Unsafe.putDoubleVolatile
sun.misc.Unsafe.getByte
sun.misc.Unsafe.getShort
sun.misc.Unsafe.getChar
sun.misc.Unsafe.getInt
sun.misc.Unsafe.getLong
sun.misc.Unsafe.getFloat
sun.misc.Unsafe.getDouble
sun.misc.Unsafe.getAddress
sun.misc.Unsafe.putByte
sun.misc.Unsafe.putShort
sun.misc.Unsafe.putChar
sun.misc.Unsafe.putInt
sun.misc.Unsafe.putLong
sun.misc.Unsafe.putFloat
sun.misc.Unsafe.putDouble
sun.misc.Unsafe.putAddress
sun.misc.Unsafe.compareAndSwapObject
sun.misc.Unsafe.compareAndSwapLong
sun.misc.Unsafe.compareAndSwapInt
sun.misc.Unsafe.putOrderedObject
sun.misc.Unsafe.putOrderedLong
sun.misc.Unsafe.putOrderedInt
sun.misc.Unsafe.prefetchRead
sun.misc.Unsafe.prefetchWrite
sun.misc.Unsafe.prefetchReadStatic
sun.misc.Unsafe.prefetchWriteStatic

java.lang.Throwable.fillInStackTrace

java.lang.StringBuilder, object.initializer, void.method.signature
java.lang.StringBuilder, object.initializer, int.void.signature
java.lang.StringBuilder, object.initializer, string.void.signature

java.lang.StringBuilder.append(char)
java.lang.StringBuilder.append(int)
java.lang.StringBuilder.append(String)
java.lang.StringBuilder.toString()

java.lang.StringBuffer, object.initializer, void.method.signature
java.lang.StringBuffer, object.initializer, int.void.signature
java.lang.StringBuffer, object.initializer, string.void.signature
java.lang.StringBuffer.append(char)
java.lang.StringBuffer.append(int)
java.lang.StringBuffer.append(String)
java.lang.StringBuffer.toString()

java.lang.Integer.toString(int)

java.lang.String, object.initializer, string.void.signature
java.lang.Object, object.initializer, void.method.signature

java.lang.reflect.Method.invoke, object.object.array.object.signature

java.lang.invoke.MethodHandleNatives, checkSpreadArgument, checkSpreadArgument.signature
java.lang.invoke.MethodHandle, invokeExact,   object.array.object.signature
java.lang.invoke.MethodHandle, invokeGeneric, object.array.object.signature
java.lang.invoke.MethodHandle, invokeVarargs, object.array.object.signature
java.lang.invoke.InvokeDynamic, star,         object.array.object.signature

java.lang.invoke.MethodHandleImpl.selectAlternative, selectAlternative.signature

/* unboxing methods: */
java.lang.Boolean.booleanValue
java.lang.Byte.byteValue
java.lang.Character.charValue
java.lang.Short.shortValue
java.lang.Integer.intValue
java.lang.Long.longValue
java.lang.Float.floatValue
java.lang.Double.doubleValue

/* boxing methods: */ 
java.lang.Boolean.valueOf
java.lang.Byte.valueOf
java.lang.Character.valueOf
java.lang.Short.valueOf
java.lang.Integer.valueOf
java.lang.Long.valueOf
java.lang.Float.valueOf
java.lang.Double.valueOf