Skip to content

Commit 147f8c1

Browse files
committed
Remove VarHandle-based field access.
1 parent 58ef697 commit 147f8c1

File tree

1 file changed

+24
-64
lines changed
  • truffle/src/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object

1 file changed

+24
-64
lines changed

truffle/src/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Location.java

Lines changed: 24 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
*/
4141
package com.oracle.truffle.api.object;
4242

43-
import static com.oracle.truffle.api.object.ObjectStorageOptions.UseVarHandle;
44-
4543
import java.util.Objects;
4644
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
4745

@@ -205,25 +203,17 @@ protected double getDouble(DynamicObject store, boolean guard) throws Unexpected
205203
*/
206204
final Object getInternal(DynamicObject store, Shape expectedShape, boolean guard) {
207205
if (this instanceof ObjectLocation objectLocation) {
208-
Object value;
209-
done: {
210-
Object base;
211-
long offset;
212-
if (field == null) {
213-
base = getObjectArray(store, guard);
214-
offset = getObjectArrayOffset();
215-
} else {
216-
if (UseVarHandle) {
217-
value = field.varHandle().get(store);
218-
break done;
219-
} else {
220-
field.receiverCheck(store);
221-
base = store;
222-
offset = getFieldOffset();
223-
}
224-
}
225-
value = UnsafeAccess.unsafeGetObject(base, offset, guard, this);
206+
Object base;
207+
long offset;
208+
if (field == null) {
209+
base = getObjectArray(store, guard);
210+
offset = getObjectArrayOffset();
211+
} else {
212+
field.receiverCheck(store);
213+
base = store;
214+
offset = getFieldOffset();
226215
}
216+
Object value = UnsafeAccess.unsafeGetObject(base, offset, guard, this);
227217
return CompilerDirectives.inInterpreter() ? value : objectLocation.assumedTypeCast(value, guard);
228218
} else {
229219
if (field == null) {
@@ -239,13 +229,8 @@ final Object getInternal(DynamicObject store, Shape expectedShape, boolean guard
239229
return ((ConstantLocation) this).get(store, guard);
240230
}
241231
} else {
242-
long longValue;
243-
if (UseVarHandle) {
244-
longValue = (long) field.varHandle().get(store);
245-
} else {
246-
field.receiverCheck(store);
247-
longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
248-
}
232+
field.receiverCheck(store);
233+
long longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
249234
if (this instanceof IntLocation) {
250235
return (int) longValue;
251236
} else if (this instanceof LongLocation) {
@@ -268,13 +253,8 @@ final int getIntInternal(DynamicObject store, Shape expectedShape, boolean guard
268253
long offset = getPrimitiveArrayOffset();
269254
return UnsafeAccess.unsafeGetInt(array, offset, guard, this);
270255
} else {
271-
long longValue;
272-
if (UseVarHandle) {
273-
longValue = (long) field.varHandle().get(store);
274-
} else {
275-
field.receiverCheck(store);
276-
longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
277-
}
256+
field.receiverCheck(store);
257+
long longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
278258
return (int) longValue;
279259
}
280260
}
@@ -300,14 +280,8 @@ final long getLongInternal(DynamicObject store, Shape expectedShape, boolean gua
300280
long offset = getPrimitiveArrayOffset();
301281
return UnsafeAccess.unsafeGetLong(array, offset, guard, this);
302282
} else {
303-
long longValue;
304-
if (UseVarHandle) {
305-
longValue = (long) field.varHandle().get(store);
306-
} else {
307-
field.receiverCheck(store);
308-
longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
309-
}
310-
return longValue;
283+
field.receiverCheck(store);
284+
return UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
311285
}
312286
}
313287
return getLongUnexpected(store, expectedShape, guard);
@@ -332,13 +306,8 @@ final double getDoubleInternal(DynamicObject store, Shape expectedShape, boolean
332306
long offset = getPrimitiveArrayOffset();
333307
return UnsafeAccess.unsafeGetDouble(array, offset, guard, this);
334308
} else {
335-
long longValue;
336-
if (UseVarHandle) {
337-
longValue = (long) field.varHandle().get(store);
338-
} else {
339-
field.receiverCheck(store);
340-
longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
341-
}
309+
field.receiverCheck(store);
310+
long longValue = UnsafeAccess.unsafeGetLong(store, getFieldOffset(), guard, this);
342311
return Double.longBitsToDouble(longValue);
343312
}
344313
}
@@ -493,14 +462,9 @@ final void setInternal(DynamicObject receiver, Object value, boolean guard, Shap
493462
base = getObjectArray(receiver, guard);
494463
offset = getObjectArrayOffset();
495464
} else {
496-
if (UseVarHandle) {
497-
field.varHandle().set(receiver, value);
498-
return;
499-
} else {
500-
field.receiverCheck(receiver);
501-
base = receiver;
502-
offset = getFieldOffset();
503-
}
465+
field.receiverCheck(receiver);
466+
base = receiver;
467+
offset = getFieldOffset();
504468
}
505469
UnsafeAccess.unsafePutObject(base, offset, value, this);
506470
} else { // primitive location
@@ -550,13 +514,9 @@ final void setInternal(DynamicObject receiver, Object value, boolean guard, Shap
550514
assert isConstantLocation() : this;
551515
return;
552516
}
553-
if (UseVarHandle) {
554-
field.varHandle().set(receiver, longValue);
555-
} else {
556-
field.receiverCheck(receiver);
557-
long offset = getFieldOffset();
558-
UnsafeAccess.unsafePutLong(receiver, offset, longValue, this);
559-
}
517+
field.receiverCheck(receiver);
518+
long offset = getFieldOffset();
519+
UnsafeAccess.unsafePutLong(receiver, offset, longValue, this);
560520
}
561521
}
562522

0 commit comments

Comments
 (0)