Skip to content

Commit e0295b5

Browse files
committed
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy