Skip to content

Commit 9a91c6b

Browse files
committed
intrinsified python_cext.PySet_Clear
1 parent bfa8a4d commit 9a91c6b

File tree

2 files changed

+40
-8
lines changed

2 files changed

+40
-8
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/PythonCextBuiltins.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@
263263
import com.oracle.graal.python.builtins.objects.set.PBaseSet;
264264
import com.oracle.graal.python.builtins.objects.set.PFrozenSet;
265265
import com.oracle.graal.python.builtins.objects.set.PSet;
266+
import com.oracle.graal.python.builtins.objects.set.SetBuiltins.ClearNode;
266267
import com.oracle.graal.python.builtins.objects.set.SetNodes.ConstructSetNode;
267268
import com.oracle.graal.python.builtins.objects.set.SetNodes.DiscardNode;
268269
import com.oracle.graal.python.builtins.objects.str.NativeCharSequence;
@@ -2962,6 +2963,45 @@ protected com.oracle.graal.python.nodes.expression.BinaryArithmetic.AddNode crea
29622963
}
29632964
}
29642965

2966+
@Builtin(name = "PySet_Clear", minNumOfPositionalArgs = 1)
2967+
@GenerateNodeFactory
2968+
public abstract static class PySetClearNode extends PythonUnaryBuiltinNode {
2969+
2970+
@Specialization(guards = {"!isNone(s)", "!isNoValue(s)"})
2971+
public Object clear(VirtualFrame frame, PSet s,
2972+
@Cached ClearNode clearNode,
2973+
@Cached TransformExceptionToNativeNode transformExceptionToNativeNode) {
2974+
try {
2975+
clearNode.execute(frame, s);
2976+
return 0;
2977+
} catch (PException e) {
2978+
transformExceptionToNativeNode.execute(e);
2979+
return -1;
2980+
}
2981+
}
2982+
2983+
@Specialization(guards = {"!isPSet(set)", "isSetSubtype(frame, set, getClassNode, isSubtypeNode)"})
2984+
public Object clearNative(VirtualFrame frame, @SuppressWarnings("unused") Object set,
2985+
@SuppressWarnings("unused") @Cached GetClassNode getClassNode,
2986+
@SuppressWarnings("unused") @Cached IsSubtypeNode isSubtypeNode,
2987+
@Cached PRaiseNativeNode raiseNativeNode) {
2988+
return raiseNativeNode.raiseInt(frame, -1, PythonBuiltinClassType.NotImplementedError, NATIVE_S_SUBTYPES_NOT_IMPLEMENTED, "set");
2989+
}
2990+
2991+
@Specialization(guards = {"!isPSet(set)", "!isSetSubtype(frame, set, getClassNode, isSubtypeNode)"})
2992+
public Object clear(VirtualFrame frame, Object set,
2993+
@SuppressWarnings("unused") @Cached GetClassNode getClassNode,
2994+
@SuppressWarnings("unused") @Cached IsSubtypeNode isSubtypeNode,
2995+
@Cached StrNode strNode,
2996+
@Cached PRaiseNativeNode raiseNativeNode) {
2997+
return raiseNativeNode.raiseInt(frame, -1, SystemError, BAD_ARG_TO_INTERNAL_FUNC_WAS_S_P, strNode.executeWith(frame, set), set);
2998+
}
2999+
3000+
protected boolean isSetSubtype(VirtualFrame frame, Object obj, GetClassNode getClassNode, IsSubtypeNode isSubtypeNode) {
3001+
return isSubtypeNode.execute(frame, getClassNode.execute(obj), PythonBuiltinClassType.PSet);
3002+
}
3003+
}
3004+
29653005
///////////// unicode /////////////
29663006

29673007
@Builtin(name = "PyUnicode_FromObject", minNumOfPositionalArgs = 1)

graalpython/lib-graalpython/python_cext.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,6 @@ def decorator(fun):
5151
return make_may_raise_wrapper(fun, error_result)
5252
return decorator
5353

54-
##################### SET, FROZENSET
55-
56-
@may_raise(-1)
57-
def PySet_Clear(s):
58-
s.clear()
59-
return 0
60-
61-
6254
##################### MAPPINGPROXY
6355

6456

0 commit comments

Comments
 (0)