Skip to content

Commit

Permalink
removed the usage and codes of deprecated Unsafe's getObject(...), se…
Browse files Browse the repository at this point in the history
…tObject(...), getObjectVolatile(...) etc with corresponding titiled getReference(...), setReference(...), getReferenceVolatile(...) etc. methods
  • Loading branch information
eklaDFF committed Jul 23, 2024
1 parent 638c52d commit df25bad
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 48 deletions.
42 changes: 6 additions & 36 deletions src/classes/modules/java.base/jdk/internal/misc/Unsafe.java
Original file line number Diff line number Diff line change
Expand Up @@ -156,10 +156,6 @@ private boolean weakCompareAndSetInt(Object object, long offset, int expected, i
}
public final native boolean compareAndSetLong(Object o, long offset, long expected, long x);

public final boolean compareAndSetObject(Object o, long offset, Object expected, Object x) {
return compareAndSetReference(o, offset, expected, x);
}

// those do the usual CAS magic
public native boolean compareAndSwapObject(Object oThis, long offset, Object expect,
Object update);
Expand Down Expand Up @@ -196,34 +192,10 @@ public void putInt(Object obj, int offset, int i) {

public native void putOrderedInt(Object obj, long l, int i);

public native Object getObject(Object obj, long l);
public native Object getObjectVolatile(Object obj, long l);

public final Object getObjectAcquire(Object o, long offset) {
return getObjectVolatile(o, offset);
}

@Deprecated
public Object getObject(Object obj, int offset) {
return getObject(obj, (long) offset);
}

public final void putObject(Object o, long offset, Object x) {
putReference(o, offset, x);
}

public final void putObjectOpaque(Object o, long offset, Object x) {
putReferenceOpaque(o, offset, x);
}
public native void putReference(Object o, long offset, Object x);

public final void putObjectRelease(Object o, long offset, Object x) {
putReferenceRelease(o, offset, x);
}
public final void putObjectVolatile(Object o, long offset, Object x) {
putReferenceVolatile(o, offset, x);
}
public native Object getReference(Object o, long offset);

public native void putReference(Object o, long offset, Object x);


public final void putReferenceOpaque(Object o, long offset, Object x) {
Expand All @@ -236,11 +208,12 @@ public final void putReferenceRelease(Object o, long offset, Object x) {

public native void putReferenceVolatile(Object o, long offset, Object x);

@Deprecated
public void putObject(Object obj, int offset, Object obj1) {
putObject(obj, (long) offset, obj1);
public final Object getReferenceAcquire(Object o, long offset) {
return getReferenceVolatile(o, offset);
}

public native Object getReferenceVolatile(Object o, long offset);

public native void putOrderedObject(Object obj, long l, Object obj1);

public native boolean getBoolean(Object obj, long l);
Expand Down Expand Up @@ -270,9 +243,6 @@ public byte getByte(Object obj, int offset) {
return getByte(obj, (long) offset);
}

public final Object getReferenceAcquire(Object o, long offset) {
return getObject(o,offset);
}

public final native boolean compareAndSetReference(Object o, long offset, Object expected, Object x);

Expand Down
11 changes: 4 additions & 7 deletions src/peers/gov/nasa/jpf/vm/JPF_java_util_Random.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,13 @@
import gov.nasa.jpf.ConfigChangeListener;
import gov.nasa.jpf.JPFException;
import gov.nasa.jpf.annotation.MJI;
import gov.nasa.jpf.vm.JPF_gov_nasa_jpf_vm_Verify;
import gov.nasa.jpf.vm.MJIEnv;
import gov.nasa.jpf.vm.NativePeer;
import jdk.internal.misc.Unsafe;

import java.lang.invoke.VarHandle;
import java.lang.reflect.Field;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;

import jdk.internal.misc.Unsafe;

/**
* MJI NativePeer class for java.util.Random library abstraction
*
Expand Down Expand Up @@ -107,12 +104,12 @@ public void jpfRunTerminated(Config config){
}

private static void setNativeSeed (Random rand, long seed) {
AtomicLong al = (AtomicLong) unsafe.getObject(rand, seedFieldOffset);
AtomicLong al = (AtomicLong) unsafe.getReference(rand, seedFieldOffset);
al.set(seed);
}

private static long getNativeSeed (Random rand){
AtomicLong al = (AtomicLong) unsafe.getObject(rand, seedFieldOffset);
AtomicLong al = (AtomicLong) unsafe.getReference(rand, seedFieldOffset);
return al.longValue();
}

Expand Down
10 changes: 5 additions & 5 deletions src/peers/gov/nasa/jpf/vm/JPF_jdk_internal_misc_Unsafe.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public long objectFieldOffset__Ljava_lang_Class_2Ljava_lang_String_2__J (MJIEnv
*/
@MJI
public boolean compareAndSetReference__Ljava_lang_Object_2JLjava_lang_Object_2Ljava_lang_Object_2__Z(MJIEnv env, int unsafeRef, int oRef, long offset, int expectedRef, int xRef) {
int actual = getObject__Ljava_lang_Object_2J__Ljava_lang_Object_2(env, unsafeRef, oRef, offset);
int actual = getReference__Ljava_lang_Object_2J__Ljava_lang_Object_2(env, unsafeRef, oRef, offset);
if (actual == expectedRef) {
putReference__Ljava_lang_Object_2JLjava_lang_Object_2__V(env, unsafeRef, oRef, offset, xRef);
return true;
Expand Down Expand Up @@ -156,7 +156,7 @@ public boolean compareAndSetLong__Ljava_lang_Object_2JJJ__Z (MJIEnv env, int uns
public boolean compareAndSwapObject__Ljava_lang_Object_2JLjava_lang_Object_2Ljava_lang_Object_2__Z (MJIEnv env, int unsafeRef,
int objRef, long fieldOffset,
int expectRef, int updateRef) {
int actual = getObject__Ljava_lang_Object_2J__Ljava_lang_Object_2(env, unsafeRef, objRef, fieldOffset);
int actual = getReference__Ljava_lang_Object_2J__Ljava_lang_Object_2(env, unsafeRef, objRef, fieldOffset);
if (actual == expectRef) {
putReference__Ljava_lang_Object_2JLjava_lang_Object_2__V(env, unsafeRef, objRef, fieldOffset, updateRef);
return true;
Expand Down Expand Up @@ -281,7 +281,7 @@ public void ensureClassInitialized__Ljava_lang_Class_2__V (MJIEnv env, int unsaf
}

@MJI
public int getObject__Ljava_lang_Object_2J__Ljava_lang_Object_2 (MJIEnv env, int unsafeRef,
public int getReference__Ljava_lang_Object_2J__Ljava_lang_Object_2 (MJIEnv env, int unsafeRef,
int objRef, long fieldOffset) {
ElementInfo ei = env.getElementInfo(objRef);
if (!ei.isArray()) {
Expand All @@ -293,9 +293,9 @@ public int getObject__Ljava_lang_Object_2J__Ljava_lang_Object_2 (MJIEnv env, int
}

@MJI
public int getObjectVolatile__Ljava_lang_Object_2J__Ljava_lang_Object_2 (MJIEnv env, int unsafeRef,
public int getReferenceVolatile__Ljava_lang_Object_2J__Ljava_lang_Object_2 (MJIEnv env, int unsafeRef,
int objRef, long fieldOffset) {
return getObject__Ljava_lang_Object_2J__Ljava_lang_Object_2( env, unsafeRef, objRef, fieldOffset);
return getReference__Ljava_lang_Object_2J__Ljava_lang_Object_2( env, unsafeRef, objRef, fieldOffset);
}

@MJI
Expand Down

0 comments on commit df25bad

Please sign in to comment.