Skip to content

Commit bf5049d

Browse files
committed
Remove no longer needed accessors from dynamic object implementation.
1 parent ffe0d77 commit bf5049d

File tree

10 files changed

+109
-226
lines changed

10 files changed

+109
-226
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ protected ObjectArrayLocation(int index) {
366366
}
367367

368368
protected static final Object[] getArray(DynamicObject store) {
369-
return LayoutImpl.ACCESS.getObjectArray(store);
369+
return store.getObjectStore();
370370
}
371371

372372
@Override
@@ -501,7 +501,7 @@ private long longValue(Object value) {
501501
}
502502

503503
protected static final int[] getArray(DynamicObject store) {
504-
return LayoutImpl.ACCESS.getPrimitiveArray(store);
504+
return store.getPrimitiveStore();
505505
}
506506

507507
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ private static Class<? extends DynamicObject> collectFields(Class<? extends Dyna
203203

204204
Class<? extends DynamicObject> layoutClass = collectFields(clazz.getSuperclass().asSubclass(DynamicObject.class), layoutLookup, objectFieldList, primitiveFieldList);
205205

206-
Class<? extends Annotation> dynamicFieldAnnotation = ACCESS.getDynamicFieldAnnotation();
206+
Class<? extends Annotation> dynamicFieldAnnotation = DynamicObject.getDynamicFieldAnnotation();
207207
boolean hasDynamicFields = false;
208208
for (Field field : clazz.getDeclaredFields()) {
209209
if (Modifier.isStatic(field.getModifiers()) || field.isSynthetic()) {

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

Lines changed: 51 additions & 52 deletions
Large diffs are not rendered by default.

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

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

43-
import static com.oracle.truffle.api.object.LayoutImpl.ACCESS;
44-
43+
import java.lang.invoke.VarHandle;
4544
import java.util.HashMap;
4645
import java.util.Map;
4746
import java.util.Objects;
4847

4948
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5049

51-
@SuppressWarnings("deprecation")
5250
final class DynamicObjectSupport {
5351

5452
private DynamicObjectSupport() {
5553
}
5654

55+
static void setShapeWithStoreFence(DynamicObject object, Shape shape) {
56+
if (shape.isShared()) {
57+
VarHandle.storeStoreFence();
58+
}
59+
object.setShape(shape);
60+
}
61+
5762
static void ensureCapacity(DynamicObject object, Shape otherShape) {
5863
grow(object, object.getShape(), otherShape);
5964
}
@@ -77,20 +82,20 @@ private static void growObjectStore(DynamicObject object, ShapeImpl thisShape, i
7782
Object[] newObjectStore = new Object[targetCapacity];
7883
if (sourceCapacity != 0) {
7984
int sourceSize = thisShape.getObjectArraySize();
80-
Object[] oldObjectStore = ACCESS.getObjectArray(object);
81-
ACCESS.arrayCopy(oldObjectStore, newObjectStore, sourceSize);
85+
Object[] oldObjectStore = object.getObjectStore();
86+
UnsafeAccess.arrayCopy(oldObjectStore, newObjectStore, sourceSize);
8287
}
83-
ACCESS.setObjectArray(object, newObjectStore);
88+
object.setObjectStore(newObjectStore);
8489
}
8590

8691
private static void growPrimitiveStore(DynamicObject object, ShapeImpl thisShape, int sourceCapacity, int targetCapacity) {
8792
int[] newPrimitiveArray = new int[targetCapacity];
8893
if (sourceCapacity != 0) {
8994
int sourceSize = thisShape.getPrimitiveArraySize();
90-
int[] oldPrimitiveArray = ACCESS.getPrimitiveArray(object);
91-
ACCESS.arrayCopy(oldPrimitiveArray, newPrimitiveArray, sourceSize);
95+
int[] oldPrimitiveArray = object.getPrimitiveStore();
96+
UnsafeAccess.arrayCopy(oldPrimitiveArray, newPrimitiveArray, sourceSize);
9297
}
93-
ACCESS.setPrimitiveArray(object, newPrimitiveArray);
98+
object.setPrimitiveStore(newPrimitiveArray);
9499
}
95100

96101
static void resize(DynamicObject object, Shape thisShape, Shape otherShape) {
@@ -108,19 +113,19 @@ private static void resizeObjectStore(DynamicObject object, Shape oldShape, Shap
108113
ShapeImpl newShapeImpl = (ShapeImpl) newShape;
109114
int destinationCapacity = newShapeImpl.getObjectArrayCapacity();
110115
if (destinationCapacity == 0) {
111-
ACCESS.setObjectArray(object, null);
116+
object.setObjectStore(null);
112117
} else {
113118
int sourceCapacity = oldShapeImpl.getObjectArrayCapacity();
114119
if (sourceCapacity != destinationCapacity) {
115120
int sourceSize = oldShapeImpl.getObjectArraySize();
116121
Object[] newObjectStore = new Object[destinationCapacity];
117122
if (sourceSize != 0) {
118-
Object[] oldObjectStore = ACCESS.getObjectArray(object);
123+
Object[] oldObjectStore = object.getObjectStore();
119124
int destinationSize = newShapeImpl.getObjectArraySize();
120125
int length = Math.min(sourceSize, destinationSize);
121-
ACCESS.arrayCopy(oldObjectStore, newObjectStore, length);
126+
UnsafeAccess.arrayCopy(oldObjectStore, newObjectStore, length);
122127
}
123-
ACCESS.setObjectArray(object, newObjectStore);
128+
object.setObjectStore(newObjectStore);
124129
}
125130
}
126131
}
@@ -131,61 +136,61 @@ private static void resizePrimitiveStore(DynamicObject object, Shape oldShape, S
131136
assert newShapeImpl.hasPrimitiveArray();
132137
int destinationCapacity = newShapeImpl.getPrimitiveArrayCapacity();
133138
if (destinationCapacity == 0) {
134-
ACCESS.setPrimitiveArray(object, null);
139+
object.setPrimitiveStore(null);
135140
} else {
136141
int sourceCapacity = oldShapeImpl.getPrimitiveArrayCapacity();
137142
if (sourceCapacity != destinationCapacity) {
138143
int sourceSize = oldShapeImpl.getPrimitiveArraySize();
139144
int[] newPrimitiveArray = new int[destinationCapacity];
140145
if (sourceSize != 0) {
141-
int[] oldPrimitiveArray = ACCESS.getPrimitiveArray(object);
146+
int[] oldPrimitiveArray = object.getPrimitiveStore();
142147
int destinationSize = newShapeImpl.getPrimitiveArraySize();
143148
int length = Math.min(sourceSize, destinationSize);
144-
ACCESS.arrayCopy(oldPrimitiveArray, newPrimitiveArray, length);
149+
UnsafeAccess.arrayCopy(oldPrimitiveArray, newPrimitiveArray, length);
145150
}
146-
ACCESS.setPrimitiveArray(object, newPrimitiveArray);
151+
object.setPrimitiveStore(newPrimitiveArray);
147152
}
148153
}
149154
}
150155

151156
private static void trimObjectStore(DynamicObject object, Shape thisShape, Shape newShape) {
152157
ShapeImpl thisShapeImpl = (ShapeImpl) thisShape;
153158
ShapeImpl newShapeImpl = (ShapeImpl) newShape;
154-
Object[] oldObjectStore = ACCESS.getObjectArray(object);
159+
Object[] oldObjectStore = object.getObjectStore();
155160
int destinationCapacity = newShapeImpl.getObjectArrayCapacity();
156161
if (destinationCapacity == 0) {
157162
if (oldObjectStore != null) {
158-
ACCESS.setObjectArray(object, null);
163+
object.setObjectStore(null);
159164
}
160165
// else nothing to do
161166
} else {
162167
int sourceCapacity = thisShapeImpl.getObjectArrayCapacity();
163168
if (sourceCapacity > destinationCapacity) {
164169
Object[] newObjectStore = new Object[destinationCapacity];
165170
int destinationSize = newShapeImpl.getObjectArraySize();
166-
ACCESS.arrayCopy(oldObjectStore, newObjectStore, destinationSize);
167-
ACCESS.setObjectArray(object, newObjectStore);
171+
UnsafeAccess.arrayCopy(oldObjectStore, newObjectStore, destinationSize);
172+
object.setObjectStore(newObjectStore);
168173
}
169174
}
170175
}
171176

172177
private static void trimPrimitiveStore(DynamicObject object, Shape thisShape, Shape newShape) {
173178
ShapeImpl thisShapeImpl = (ShapeImpl) thisShape;
174179
ShapeImpl newShapeImpl = (ShapeImpl) newShape;
175-
int[] oldPrimitiveStore = ACCESS.getPrimitiveArray(object);
180+
int[] oldPrimitiveStore = object.getPrimitiveStore();
176181
int destinationCapacity = newShapeImpl.getPrimitiveArrayCapacity();
177182
if (destinationCapacity == 0) {
178183
if (oldPrimitiveStore != null) {
179-
ACCESS.setPrimitiveArray(object, null);
184+
object.setPrimitiveStore(null);
180185
}
181186
// else nothing to do
182187
} else {
183188
int sourceCapacity = thisShapeImpl.getPrimitiveArrayCapacity();
184189
if (sourceCapacity > destinationCapacity) {
185190
int[] newPrimitiveStore = new int[destinationCapacity];
186191
int destinationSize = newShapeImpl.getPrimitiveArraySize();
187-
ACCESS.arrayCopy(oldPrimitiveStore, newPrimitiveStore, destinationSize);
188-
ACCESS.setPrimitiveArray(object, newPrimitiveStore);
192+
UnsafeAccess.arrayCopy(oldPrimitiveStore, newPrimitiveStore, destinationSize);
193+
object.setPrimitiveStore(newPrimitiveStore);
189194
}
190195
}
191196
}

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

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ private static Class<? extends DynamicObject> collectFields(Class<? extends Dyna
254254

255255
Class<? extends DynamicObject> layoutClass = collectFields(clazz.getSuperclass().asSubclass(DynamicObject.class), stop, layoutLookup, objectFieldList, primitiveFieldList);
256256

257-
Class<? extends Annotation> dynamicFieldAnnotation = ACCESS.getDynamicFieldAnnotation();
257+
Class<? extends Annotation> dynamicFieldAnnotation = DynamicObject.getDynamicFieldAnnotation();
258258
boolean hasDynamicFields = false;
259259
for (Field field : clazz.getDeclaredFields()) {
260260
if (Modifier.isStatic(field.getModifiers()) || field.isSynthetic()) {
@@ -310,21 +310,4 @@ public String toString() {
310310
return getClass().getName() + '[' + clazz.getName() + ']';
311311
}
312312
}
313-
314-
static final class EnterpriseAccess extends Support {
315-
private EnterpriseAccess() {
316-
}
317-
318-
@Override
319-
protected void arrayCopy(int[] from, int[] to, int length) {
320-
UnsafeAccess.arrayCopy(from, to, length);
321-
}
322-
323-
@Override
324-
protected void arrayCopy(Object[] from, Object[] to, int length) {
325-
UnsafeAccess.arrayCopy(from, to, length);
326-
}
327-
}
328-
329-
static final EnterpriseAccess ACCESS = new EnterpriseAccess();
330313
}

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

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

43-
import static com.oracle.truffle.api.object.ExtLayout.ACCESS;
43+
import static com.oracle.truffle.api.object.ExtLayout.UseVarHandle;
4444

4545
import java.util.Objects;
4646
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
@@ -611,7 +611,7 @@ abstract static class AbstractObjectArrayLocation extends AbstractObjectLocation
611611
}
612612

613613
protected static Object getArray(DynamicObject store, boolean condition) {
614-
return UnsafeAccess.unsafeCast(ACCESS.getObjectArray(store), Object[].class, condition, true, true);
614+
return UnsafeAccess.unsafeCast(store.getObjectStore(), Object[].class, condition, true, true);
615615
}
616616

617617
protected final long getOffset() {
@@ -691,7 +691,7 @@ abstract static class AbstractObjectFieldLocation extends AbstractObjectLocation
691691

692692
@Override
693693
public Object get(DynamicObject store, boolean guard) {
694-
if (ExtLayout.UseVarHandle) {
694+
if (UseVarHandle) {
695695
return field.varHandle().get(store);
696696
}
697697
field.receiverCheck(store);
@@ -709,7 +709,7 @@ protected void set(DynamicObject store, Object value, boolean guard, boolean ini
709709
}
710710

711711
protected final void setObjectInternal(DynamicObject store, Object value) {
712-
if (ExtLayout.UseVarHandle) {
712+
if (UseVarHandle) {
713713
field.varHandle().set(store, value);
714714
return;
715715
}
@@ -718,7 +718,7 @@ protected final void setObjectInternal(DynamicObject store, Object value) {
718718
}
719719

720720
protected final Object getFinalObject(DynamicObject store, boolean condition) {
721-
if (ExtLayout.UseVarHandle) {
721+
if (UseVarHandle) {
722722
return field.varHandle().get(store);
723723
}
724724
field.receiverCheck(store);
@@ -831,7 +831,7 @@ public Object get(DynamicObject store, boolean guard) {
831831

832832
@Override
833833
public int getInt(DynamicObject store, boolean guard) {
834-
if (ExtLayout.UseVarHandle) {
834+
if (UseVarHandle) {
835835
if (field.type() == long.class) {
836836
return (int) (long) field.varHandle().get(store);
837837
} else {
@@ -864,7 +864,7 @@ public void setInt(DynamicObject store, int value, boolean guard, boolean init)
864864
}
865865

866866
protected void setIntInternal(DynamicObject store, int value) {
867-
if (ExtLayout.UseVarHandle) {
867+
if (UseVarHandle) {
868868
if (field.type() == long.class) {
869869
field.varHandle().set(store, value & 0xffff_ffffL);
870870
} else {
@@ -881,7 +881,7 @@ protected void setIntInternal(DynamicObject store, int value) {
881881
}
882882

883883
protected int getFinalInt(DynamicObject store, boolean condition) {
884-
if (ExtLayout.UseVarHandle) {
884+
if (UseVarHandle) {
885885
if (field.type() == long.class) {
886886
return (int) (long) field.varHandle().get(store);
887887
} else {
@@ -935,7 +935,7 @@ public Object get(DynamicObject store, boolean guard) {
935935

936936
@Override
937937
public double getDouble(DynamicObject store, boolean guard) {
938-
if (ExtLayout.UseVarHandle) {
938+
if (UseVarHandle) {
939939
return Double.longBitsToDouble((long) field.varHandle().get(store));
940940
}
941941
field.receiverCheck(store);
@@ -955,7 +955,7 @@ public void setDouble(DynamicObject store, double value, boolean guard, boolean
955955
}
956956

957957
protected void setDoubleInternal(DynamicObject store, double value) {
958-
if (ExtLayout.UseVarHandle) {
958+
if (UseVarHandle) {
959959
field.varHandle().set(store, Double.doubleToRawLongBits(value));
960960
return;
961961
}
@@ -968,7 +968,7 @@ protected void setDoubleInternal(DynamicObject store, double value) {
968968
}
969969

970970
protected double getFinalDouble(DynamicObject store, boolean condition) {
971-
if (ExtLayout.UseVarHandle) {
971+
if (UseVarHandle) {
972972
return Double.longBitsToDouble((long) field.varHandle().get(store));
973973
}
974974
field.receiverCheck(store);
@@ -1048,7 +1048,7 @@ public Object get(DynamicObject store, boolean guard) {
10481048

10491049
@Override
10501050
public boolean getBoolean(DynamicObject store, boolean guard) {
1051-
if (ExtLayout.UseVarHandle) {
1051+
if (UseVarHandle) {
10521052
return UnsafeAccess.booleanCast((int) field.varHandle().get(store));
10531053
}
10541054
field.receiverCheck(store);
@@ -1064,7 +1064,7 @@ public void setBoolean(DynamicObject store, boolean value, boolean guard, boolea
10641064
}
10651065

10661066
protected void setBooleanInternal(DynamicObject store, boolean value) {
1067-
if (ExtLayout.UseVarHandle) {
1067+
if (UseVarHandle) {
10681068
field.varHandle().set(store, UnsafeAccess.intCast(value));
10691069
return;
10701070
}
@@ -1073,7 +1073,7 @@ protected void setBooleanInternal(DynamicObject store, boolean value) {
10731073
}
10741074

10751075
protected boolean getFinalBoolean(DynamicObject store, boolean condition) {
1076-
if (ExtLayout.UseVarHandle) {
1076+
if (UseVarHandle) {
10771077
return UnsafeAccess.booleanCast((int) field.varHandle().get(store));
10781078
}
10791079
field.receiverCheck(store);
@@ -1123,7 +1123,7 @@ protected final long getOffset() {
11231123
protected abstract int getBytes();
11241124

11251125
protected static Object getArray(DynamicObject store, boolean condition) {
1126-
return UnsafeAccess.unsafeCast(ACCESS.getPrimitiveArray(store), int[].class, condition, true, true);
1126+
return UnsafeAccess.unsafeCast(store.getPrimitiveStore(), int[].class, condition, true, true);
11271127
}
11281128
}
11291129

@@ -1301,7 +1301,7 @@ public Object get(DynamicObject store, boolean guard) {
13011301

13021302
@Override
13031303
public long getLong(DynamicObject store, boolean guard) {
1304-
if (ExtLayout.UseVarHandle) {
1304+
if (UseVarHandle) {
13051305
return (long) field.varHandle().get(store);
13061306
}
13071307
field.receiverCheck(store);
@@ -1317,7 +1317,7 @@ public void setLong(DynamicObject store, long value, boolean guard, boolean init
13171317
}
13181318

13191319
protected void setLongInternal(DynamicObject store, long value) {
1320-
if (ExtLayout.UseVarHandle) {
1320+
if (UseVarHandle) {
13211321
field.varHandle().set(store, value);
13221322
return;
13231323
}
@@ -1326,7 +1326,7 @@ protected void setLongInternal(DynamicObject store, long value) {
13261326
}
13271327

13281328
protected long getFinalLong(DynamicObject store, boolean condition) {
1329-
if (ExtLayout.UseVarHandle) {
1329+
if (UseVarHandle) {
13301330
return (long) field.varHandle().get(store);
13311331
}
13321332
field.receiverCheck(store);

0 commit comments

Comments
 (0)