How many methods have been deprecated in sun.misc.Unsafe? (JEP 471)

Zheka Kozlov orionllmain at gmail.com
Fri Sep 13 09:49:04 UTC 2024


Hello!

JEP 471 says that 79 methods out of 87 have been deprecated in
sun.misc.Unsafe. However, I have a different number.

Deprecated for removal in Java 18:
1. public long objectFieldOffset(Field f)
2. public Object staticFieldBase(Field f)
3. public long staticFieldOffset(Field f)

Deprecated for removal in Java 23:
1. public int addressSize()
2. public long allocateMemory(long bytes)
3. public int arrayBaseOffset(Class<?> arrayClass)
4. public int arrayIndexScale(Class<?> arrayClass)
5. public final boolean compareAndSwapInt(Object o, long offset, int
expected, int x)
6. public final boolean compareAndSwapLong(Object o, long offset,  long
expected, long x)
7. public final boolean compareAndSwapObject(Object o, long offset, Object
expected, Object x)
8. public void copyMemory(Object srcBase, long srcOffset, Object destBase,
long destOffset, long bytes)
9. public void copyMemory(long srcAddress, long destAddress, long bytes)
10. public void freeMemory(long address)
11. public long getAddress(long address)
12. public final int getAndAddInt(Object o, long offset, int delta)
13. public final long getAndAddLong(Object o, long offset, long delta)
14. public final int getAndSetInt(Object o, long offset, int newValue)
15. public final long getAndSetLong(Object o, long offset, long newValue)
16. public final Object getAndSetObject(Object o, long offset, Object
newValue)
17. public boolean getBoolean(Object o, long offset)
18. public boolean getBooleanVolatile(Object o, long offset)
19. public byte getByte(Object o, long offset)
20. public byte getByte(long address)
21. public byte getByteVolatile(Object o, long offset)
22. public char getChar(Object o, long offset)
23. public char getChar(long address)
24. public char getCharVolatile(Object o, long offset)
25. public double getDouble(Object o, long offset)
26. public double getDouble(long address)
27. public double getDoubleVolatile(Object o, long offset)
28. public float getFloat(Object o, long offset)
29. public float getFloat(long address)
30. public float getFloatVolatile(Object o, long offset)
31. public int getInt(Object o, long offset)
32. public int getInt(long address)
33. public int getIntVolatile(Object o, long offset)
34. public long getLong(Object o, long offset)
35. public long getLong(long address)
36. public long getLongVolatile(Object o, long offset)
37. public Object getObject(Object o, long offset)
38. public Object getObjectVolatile(Object o, long offset)
39. public short getShort(Object o, long offset)
40. public short getShort(long address)
41. public short getShortVolatile(Object o, long offset)
42. public void invokeCleaner(java.nio.ByteBuffer directBuffer)
43. public void putAddress(long address, long x)
44. public void putBoolean(Object o, long offset, boolean x)
45. public void putBooleanVolatile(Object o, long offset, boolean x)
46. public void putByte(Object o, long offset, byte x)
47. public void putByte(long address, byte x)
48. public void putByteVolatile(Object o, long offset, byte x)
49. public void putChar(Object o, long offset, char x)
50. public void putChar(long address, char x)
51. public void putCharVolatile(Object o, long offset, char x)
52. public void putDouble(Object o, long offset, double x)
53. public void putDouble(long address, double x)
54. public void putDoubleVolatile(Object o, long offset, double x)
55. public void putFloat(Object o, long offset, float x)
56. public void putFloat(long address, float x)
57. public void putFloatVolatile(Object o, long offset, float x)
58. public void putInt(Object o, long offset, int x)
59. public void putInt(long address, int x)
60. public void putIntVolatile(Object o, long offset, int x)
61. public void putLong(Object o, long offset, long x)
62. public void putLong(long address, long x)
63. public void putLongVolatile(Object o, long offset, long x)
64. public void putObject(Object o, long offset, Object x)
65. public void putObjectVolatile(Object o, long offset, Object x)
66. public void putOrderedInt(Object o, long offset, int x)
67. public void putOrderedLong(Object o, long offset, long x)
68. public void putOrderedObject(Object o, long offset, Object x)
69. public void putShort(Object o, long offset, short x)
70. public void putShort(long address, short x)
71. public void putShortVolatile(Object o, long offset, short x)
72. public long reallocateMemory(long address, long bytes)
73. public void setMemory(Object o, long offset, long bytes, byte value)
74. public void setMemory(long address, long bytes, byte value)

So, my list says that* the total count is 3+74=77 (not 79).*

The rest of methods:

Deprecated for removal in Java 22 (not for memory access):
1. public void fullFence()
2. public int getLoadAverage(double[] loadavg, int nelems)
3. public void loadFence()
4. public void park(boolean isAbsolute, long time)
5. public void storeFence()
6. public void unpark(Object thread)

Not deprecated yet:
1. public int pageSize()
2. public Object allocateInstance(Class<?> cls)
3. public void throwException(Throwable ee)
4. public static Unsafe getUnsafe()

So, the total number of methods is (3+74)+(6+4)=87. This is correct (JEP
also says 87).

Should the number in the JEP be fixed? (79 out of 87 -> 77 out of 87).


Best regards.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/core-libs-dev/attachments/20240913/11a33147/attachment.htm>


More information about the core-libs-dev mailing list