|
51 | 51 | import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; |
52 | 52 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; |
53 | 53 | import com.oracle.truffle.api.Truffle; |
54 | | - |
55 | 54 | import com.oracle.truffle.api.impl.AbstractAssumption; |
| 55 | + |
56 | 56 | import sun.misc.Unsafe; |
57 | 57 |
|
58 | 58 | /** |
@@ -197,6 +197,10 @@ public final void set(DynamicObject store, Object value, boolean guard, boolean |
197 | 197 | } |
198 | 198 | } |
199 | 199 |
|
| 200 | + @Override |
| 201 | + void clear(DynamicObject store) { |
| 202 | + } |
| 203 | + |
200 | 204 | @Override |
201 | 205 | public String toString() { |
202 | 206 | return "=" + value; |
@@ -637,8 +641,8 @@ private void setObjectInternal(DynamicObject store, Object value, boolean guard) |
637 | 641 | } |
638 | 642 |
|
639 | 643 | @Override |
640 | | - protected void clear(DynamicObject store) { |
641 | | - UnsafeAccess.unsafePutObject(getArray(store, false), getOffset(), null, this); |
| 644 | + void clear(DynamicObject store) { |
| 645 | + setObjectInternal(store, null, false); |
642 | 646 | } |
643 | 647 |
|
644 | 648 | @Override |
@@ -696,8 +700,8 @@ private void setObjectInternal(DynamicObject store, Object value) { |
696 | 700 | } |
697 | 701 |
|
698 | 702 | @Override |
699 | | - protected void clear(DynamicObject store) { |
700 | | - UnsafeAccess.unsafePutObject(store, getOffset(), null, this); |
| 703 | + void clear(DynamicObject store) { |
| 704 | + setObjectInternal(store, null); |
701 | 705 | } |
702 | 706 |
|
703 | 707 | @Override |
@@ -825,6 +829,11 @@ private void setIntInternal(DynamicObject store, int value) { |
825 | 829 | UnsafeAccess.unsafePutLong(store, getOffset(), value & 0xffff_ffffL, this); |
826 | 830 | } |
827 | 831 |
|
| 832 | + @Override |
| 833 | + protected void clear(DynamicObject store) { |
| 834 | + setIntInternal(store, 0); |
| 835 | + } |
| 836 | + |
828 | 837 | @Override |
829 | 838 | public boolean canStore(Object value) { |
830 | 839 | return value instanceof Integer; |
@@ -885,6 +894,11 @@ private void setDoubleInternal(DynamicObject store, double value) { |
885 | 894 | UnsafeAccess.unsafePutLong(store, getOffset(), Double.doubleToRawLongBits(value), this); |
886 | 895 | } |
887 | 896 |
|
| 897 | + @Override |
| 898 | + void clear(DynamicObject store) { |
| 899 | + setDoubleInternal(store, 0); |
| 900 | + } |
| 901 | + |
888 | 902 | @Override |
889 | 903 | protected void set(DynamicObject store, Object value, boolean guard, boolean init) { |
890 | 904 | if (canStore(value)) { |
@@ -1009,6 +1023,11 @@ public void setInt(DynamicObject store, int value, boolean guard, boolean init) |
1009 | 1023 | setIntInternal(store, value, guard); |
1010 | 1024 | } |
1011 | 1025 |
|
| 1026 | + @Override |
| 1027 | + void clear(DynamicObject store) { |
| 1028 | + setIntInternal(store, 0, false); |
| 1029 | + } |
| 1030 | + |
1012 | 1031 | @Override |
1013 | 1032 | public boolean canStore(Object value) { |
1014 | 1033 | return value instanceof Integer; |
@@ -1076,6 +1095,11 @@ private void setDoubleInternal(DynamicObject store, double value, boolean guard) |
1076 | 1095 | UnsafeAccess.unsafePutDouble(getArray(store, guard), getOffset(), value, this); |
1077 | 1096 | } |
1078 | 1097 |
|
| 1098 | + @Override |
| 1099 | + void clear(DynamicObject store) { |
| 1100 | + setDoubleInternal(store, 0, false); |
| 1101 | + } |
| 1102 | + |
1079 | 1103 | @Override |
1080 | 1104 | public void setDouble(DynamicObject store, double value, boolean guard, boolean init) { |
1081 | 1105 | if (!init) { |
@@ -1164,6 +1188,11 @@ private void setLongInternal(DynamicObject store, long value) { |
1164 | 1188 | UnsafeAccess.unsafePutLong(store, getOffset(), value, this); |
1165 | 1189 | } |
1166 | 1190 |
|
| 1191 | + @Override |
| 1192 | + void clear(DynamicObject store) { |
| 1193 | + setLongInternal(store, 0L); |
| 1194 | + } |
| 1195 | + |
1167 | 1196 | @Override |
1168 | 1197 | protected void set(DynamicObject store, Object value, boolean guard, boolean init) { |
1169 | 1198 | if (canStore(value)) { |
@@ -1260,6 +1289,11 @@ private void setLongInternal(DynamicObject store, long value, boolean guard) { |
1260 | 1289 | UnsafeAccess.unsafePutLong(getArray(store, guard), getOffset(), value, this); |
1261 | 1290 | } |
1262 | 1291 |
|
| 1292 | + @Override |
| 1293 | + void clear(DynamicObject store) { |
| 1294 | + setLongInternal(store, 0L, false); |
| 1295 | + } |
| 1296 | + |
1263 | 1297 | @Override |
1264 | 1298 | public void setLong(DynamicObject store, long value, boolean guard, boolean init) { |
1265 | 1299 | if (!init) { |
|
0 commit comments