7474import com .oracle .graal .python .annotations .ArgumentClinic .ClinicConversion ;
7575import com .oracle .graal .python .builtins .Builtin ;
7676import com .oracle .graal .python .builtins .CoreFunctions ;
77+ import com .oracle .graal .python .builtins .Python3Core ;
7778import com .oracle .graal .python .builtins .PythonBuiltinClassType ;
7879import com .oracle .graal .python .builtins .PythonBuiltins ;
7980import com .oracle .graal .python .builtins .objects .PNone ;
117118import com .oracle .graal .python .nodes .util .CastToJavaIntExactNode ;
118119import com .oracle .graal .python .nodes .util .CastToJavaStringNode ;
119120import com .oracle .graal .python .runtime .PythonContext ;
120- import com .oracle .graal .python .builtins .Python3Core ;
121121import com .oracle .graal .python .runtime .exception .PException ;
122122import com .oracle .graal .python .runtime .object .PythonObjectFactory ;
123123import com .oracle .truffle .api .CompilerDirectives ;
@@ -853,31 +853,9 @@ protected ArgumentClinicProvider getArgumentClinic() {
853853 static PNone doGeneric (PDeque self , int idx , Object value ,
854854 @ Cached NormalizeIndexCustomMessageNode normalizeIndexNode ) {
855855 int normIdx = normalizeIndexNode .execute (idx , self .getSize (), ErrorMessages .DEQUE_INDEX_OUT_OF_RANGE );
856- doSetItem ( self , normIdx , value );
856+ self . setItem ( normIdx , value != PNone . NO_VALUE ? value : null );
857857 return PNone .NONE ;
858858 }
859-
860- @ TruffleBoundary
861- static void doSetItem (PDeque self , int idx , Object value ) {
862- assert 0 <= idx && idx < self .getSize ();
863- int n = self .getSize () - idx - 1 ;
864- Object [] savedItems = new Object [n ];
865- for (int i = 0 ; i < savedItems .length ; i ++) {
866- savedItems [i ] = self .pop ();
867- }
868- // this removes the item we want to replace
869- self .pop ();
870- assert self .getSize () == idx ;
871- if (value != PNone .NO_VALUE ) {
872- self .append (value );
873- }
874-
875- // re-add saved items
876- for (int i = savedItems .length - 1 ; i >= 0 ; i --) {
877- self .append (savedItems [i ]);
878- }
879- assert value != PNone .NO_VALUE && self .getSize () == n + idx + 1 || value == PNone .NO_VALUE && self .getSize () == n + idx ;
880- }
881859 }
882860
883861 @ Builtin (name = __DELITEM__ , minNumOfPositionalArgs = 2 , parameterNames = {"$self" , "n" })
@@ -894,7 +872,7 @@ protected ArgumentClinicProvider getArgumentClinic() {
894872 static PNone doGeneric (PDeque self , int idx ,
895873 @ Cached NormalizeIndexCustomMessageNode normalizeIndexNode ) {
896874 int normIdx = normalizeIndexNode .execute (idx , self .getSize (), ErrorMessages .DEQUE_INDEX_OUT_OF_RANGE );
897- DequeSetItemNode . doSetItem ( self , normIdx , PNone . NO_VALUE );
875+ self . setItem ( normIdx , null );
898876 return PNone .NONE ;
899877 }
900878 }
0 commit comments