Skip to content

Commit 655f7f5

Browse files
committed
add PString specialization to ListInitNode
1 parent 6c847d3 commit 655f7f5

File tree

1 file changed

+12
-4
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list

1 file changed

+12
-4
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list/ListBuiltins.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
*/
2626
package com.oracle.graal.python.builtins.objects.list;
2727

28+
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DOC__;
2829
import static com.oracle.graal.python.nodes.SpecialMethodNames.SORT;
2930
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ADD__;
3031
import static com.oracle.graal.python.nodes.SpecialMethodNames.__CONTAINS__;
@@ -83,7 +84,6 @@
8384
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
8485
import com.oracle.graal.python.nodes.ErrorMessages;
8586
import com.oracle.graal.python.nodes.PGuards;
86-
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DOC__;
8787
import com.oracle.graal.python.nodes.attributes.GetAttributeNode;
8888
import com.oracle.graal.python.nodes.builtins.ListNodes;
8989
import com.oracle.graal.python.nodes.builtins.ListNodes.AppendNode;
@@ -99,6 +99,7 @@
9999
import com.oracle.graal.python.nodes.function.builtins.PythonVarargsBuiltinNode;
100100
import com.oracle.graal.python.nodes.object.IsBuiltinClassProfile;
101101
import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
102+
import com.oracle.graal.python.nodes.util.CastToJavaStringNode;
102103
import com.oracle.graal.python.runtime.PythonContext;
103104
import com.oracle.graal.python.runtime.PythonCore;
104105
import com.oracle.graal.python.runtime.exception.PException;
@@ -114,6 +115,7 @@
114115
import com.oracle.truffle.api.CompilerDirectives;
115116
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
116117
import com.oracle.truffle.api.dsl.Cached;
118+
import com.oracle.truffle.api.dsl.Cached.Shared;
117119
import com.oracle.truffle.api.dsl.CachedContext;
118120
import com.oracle.truffle.api.dsl.Fallback;
119121
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
@@ -191,15 +193,14 @@ public Object repr(VirtualFrame frame, PList self,
191193
}
192194

193195
@Builtin(name = __INIT__, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2)
194-
@TypeSystemReference(PythonArithmeticTypes.class)
195196
@GenerateNodeFactory
196197
public abstract static class ListInitNode extends PythonBinaryBuiltinNode {
197198

198199
public abstract PNone execute(VirtualFrame frame, PList list, Object source);
199200

200201
@Specialization
201-
static PNone init(PList list, String value,
202-
@Cached("create()") AppendNode appendNode) {
202+
static PNone initString(PList list, String value,
203+
@Shared("appendNode") @Cached AppendNode appendNode) {
203204
clearStorage(list);
204205
char[] chars = value.toCharArray();
205206
for (char c : chars) {
@@ -208,6 +209,13 @@ static PNone init(PList list, String value,
208209
return PNone.NONE;
209210
}
210211

212+
@Specialization
213+
static PNone initPString(PList list, PString value,
214+
@Cached CastToJavaStringNode castStr,
215+
@Shared("appendNode") @Cached AppendNode appendNode) {
216+
return initString(list, castStr.execute(value), appendNode);
217+
}
218+
211219
@Specialization(guards = "isNoValue(none)")
212220
static PNone init(PList list, @SuppressWarnings("unused") PNone none) {
213221
clearStorage(list);

0 commit comments

Comments
 (0)