|
44 | 44 | import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
|
45 | 45 | import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
|
46 | 46 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
|
47 |
| -import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void; |
48 | 47 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyListObject;
|
49 | 48 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
|
50 | 49 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
|
51 | 50 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
|
52 | 51 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
|
| 52 | +import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void; |
53 | 53 | import static com.oracle.graal.python.nodes.ErrorMessages.BAD_ARG_TO_INTERNAL_FUNC_S;
|
54 | 54 |
|
55 | 55 | import java.util.Arrays;
|
|
66 | 66 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
|
67 | 67 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemScalarNode;
|
68 | 68 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.ListGeneralizationNode;
|
69 |
| -import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.SetItemNode; |
70 | 69 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.SetItemScalarNode;
|
71 | 70 | import com.oracle.graal.python.builtins.objects.list.ListBuiltins;
|
72 | 71 | import com.oracle.graal.python.builtins.objects.list.ListBuiltins.ListExtendNode;
|
@@ -296,11 +295,13 @@ int fallback(Object list, @SuppressWarnings("unused") Object i, @SuppressWarning
|
296 | 295 | abstract static class _PyList_SET_ITEM extends CApiTernaryBuiltinNode {
|
297 | 296 | @Specialization
|
298 | 297 | int doManaged(PList list, long index, Object element,
|
299 |
| - @Cached("createSetItem()") SequenceStorageNodes.SetItemNode setItemNode, |
| 298 | + @Cached ListGeneralizationNode generalizationNode, |
| 299 | + @Cached SequenceStorageNodes.InitializeItemScalarNode setItemNode, |
300 | 300 | @Cached ConditionProfile generalizedProfile) {
|
301 | 301 | SequenceStorage sequenceStorage = list.getSequenceStorage();
|
302 | 302 | checkBounds(sequenceStorage, index);
|
303 |
| - SequenceStorage newStorage = setItemNode.execute(null, sequenceStorage, (int) index, element); |
| 303 | + SequenceStorage newStorage = generalizationNode.execute(sequenceStorage, element); |
| 304 | + setItemNode.execute(newStorage, (int) index, element); |
304 | 305 | if (generalizedProfile.profile(list.getSequenceStorage() != newStorage)) {
|
305 | 306 | list.setSequenceStorage(newStorage);
|
306 | 307 | }
|
@@ -329,10 +330,6 @@ private void checkBounds(SequenceStorage sequenceStorage, long index) {
|
329 | 330 | throw raise(IndexError, ErrorMessages.INDEX_OUT_OF_BOUNDS);
|
330 | 331 | }
|
331 | 332 | }
|
332 |
| - |
333 |
| - protected static SetItemNode createSetItem() { |
334 |
| - return SetItemNode.create(null, ListGeneralizationNode::create); |
335 |
| - } |
336 | 333 | }
|
337 | 334 |
|
338 | 335 | @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
|
|
0 commit comments