Skip to content

Commit 6e74a37

Browse files
committed
Implement C API function 'PySet_Size'
1 parent 9fe5c43 commit 6e74a37

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

graalpython/com.oracle.graal.python.cext/src/setobject.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ PyObject * PyFrozenSet_New(PyObject *iterable) {
5353
return UPCALL_CEXT_O(_jls_PyFrozenSet_New, native_to_java(iterable));
5454
}
5555

56+
typedef Py_ssize_t (*set_size_fun_t)(PyObject *anyset);
57+
UPCALL_TYPED_ID(PySet_Size, set_size_fun_t);
58+
Py_ssize_t PySet_Size(PyObject *anyset) {
59+
return PySet_GET_SIZE(anyset);
60+
}
61+
5662
UPCALL_ID(PySet_Add);
5763
int PySet_Add(PyObject *set, PyObject *key) {
5864
return UPCALL_CEXT_I(_jls_PySet_Add, native_to_java(set), native_to_java(key));

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@
198198
import com.oracle.graal.python.builtins.objects.object.PythonObject;
199199
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
200200
import com.oracle.graal.python.builtins.objects.set.PBaseSet;
201+
import com.oracle.graal.python.builtins.objects.set.PSet;
201202
import com.oracle.graal.python.builtins.objects.str.NativeCharSequence;
202203
import com.oracle.graal.python.builtins.objects.str.PString;
203204
import com.oracle.graal.python.builtins.objects.traceback.GetTracebackNode;
@@ -4529,4 +4530,14 @@ private static Object[] unwrapArray(Object ptr, InteropLibrary ptrLib, ToJavaNod
45294530
throw CompilerDirectives.shouldNotReachHere();
45304531
}
45314532
}
4533+
4534+
@Builtin(name = "PySet_Size", minNumOfPositionalArgs = 1)
4535+
@GenerateNodeFactory
4536+
abstract static class PySetSize extends PythonUnaryBuiltinNode {
4537+
@Specialization
4538+
static int doSet(PSet type,
4539+
@CachedLibrary(limit = "3") HashingStorageLibrary lib) {
4540+
return lib.length(type.getDictStorage());
4541+
}
4542+
}
45324543
}

0 commit comments

Comments
 (0)