Skip to content

Commit e0295b5

Browse files
committedMay 2, 2023
Address code review
1 parent b03def1 commit e0295b5

File tree

1 file changed

+15
-30
lines changed

1 file changed

+15
-30
lines changed
 

‎Modules/_testcapi/immortal.c

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,47 @@
11
#include "parts.h"
22

3+
int verify_immortality(PyObject *object)
4+
{
5+
assert(_Py_IsImmortal(object));
6+
Py_ssize_t old_count = Py_REFCNT(object);
7+
for (int j = 0; j < 10000; j++) {
8+
Py_DECREF(object);
9+
}
10+
Py_ssize_t current_count = Py_REFCNT(object);
11+
return old_count == current_count;
12+
}
13+
314
static PyObject *
415
test_immortal_bool(PyObject *self, PyObject *Py_UNUSED(ignored))
516
{
617
PyObject *objects[] = {Py_True, Py_False};
718
Py_ssize_t n = Py_ARRAY_LENGTH(objects);
819
for (Py_ssize_t i = 0; i < n; i++) {
9-
PyObject* obj = objects[i];
10-
assert(_Py_IsImmortal(obj));
11-
Py_ssize_t old_count = Py_REFCNT(obj);
12-
for (int j = 0; j < 10000; j++) {
13-
Py_DECREF(obj);
14-
}
15-
Py_ssize_t current_count = Py_REFCNT(obj);
16-
assert(old_count == current_count);
20+
assert(verify_immortality(objects[i]));
1721
}
1822
Py_RETURN_NONE;
1923
}
2024

2125
static PyObject *
2226
test_immortal_none(PyObject *self, PyObject *Py_UNUSED(ignored))
2327
{
24-
assert(_Py_IsImmortal(Py_None));
25-
Py_ssize_t old_count = Py_REFCNT(Py_None);
26-
for (int i = 0; i < 10000; i++) {
27-
Py_DECREF(Py_None);
28-
}
29-
Py_ssize_t current_count = Py_REFCNT(Py_None);
30-
assert(old_count == current_count);
28+
assert(verify_immortality(Py_None));
3129
Py_RETURN_NONE;
3230
}
3331

3432
static PyObject *
3533
test_immortal_small_ints(PyObject *self, PyObject *Py_UNUSED(ignored))
3634
{
3735
for (int i = -5; i <= 256; i++) {
38-
PyObject *small_int = PyLong_FromLong(i);
39-
assert(_Py_IsImmortal(small_int));
40-
Py_ssize_t old_count = Py_REFCNT(small_int);
41-
for (int j = 0; j < 10000; j++) {
42-
Py_DECREF(small_int);
43-
}
44-
Py_ssize_t current_count = Py_REFCNT(small_int);
45-
assert(old_count == current_count);
36+
assert(verify_immortality(PyLong_FromLong(i)));
4637
}
4738
Py_RETURN_NONE;
4839
}
4940

5041
static PyObject *
5142
test_immortal_ellipsis(PyObject *self, PyObject *Py_UNUSED(ignored))
5243
{
53-
assert(_Py_IsImmortal(Py_Ellipsis));
54-
Py_ssize_t old_count = Py_REFCNT(Py_Ellipsis);
55-
for (int i = 0; i < 10000; i++) {
56-
Py_DECREF(Py_Ellipsis);
57-
}
58-
Py_ssize_t current_count = Py_REFCNT(Py_Ellipsis);
59-
assert(old_count == current_count);
44+
assert(verify_immortality(Py_Ellipsis));
6045
Py_RETURN_NONE;
6146
}
6247

0 commit comments

Comments
 (0)
Please sign in to comment.