Skip to content

Commit 1535133

Browse files
Revert "Rename things to make things clearer"
This reverts commit 5c429b6.
1 parent 5c429b6 commit 1535133

File tree

5 files changed

+42
-41
lines changed

5 files changed

+42
-41
lines changed

Include/internal/pycore_optimizer.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@ typedef enum _JitSymType {
180180
JIT_SYM_TRUTHINESS_TAG = 9,
181181
} JitSymType;
182182

183-
#define WE_MIGHT_BE_THE_ONLY_STRONG_REF 0
184-
#define SOMEONE_ELSE_HAS_A_VALID_STRONG_REF 1
183+
#define DONT_SKIP_REFCOUNT 0
184+
#define SKIP_REFCOUNT 1
185185

186186
typedef struct _jit_opt_known_class {
187187
struct {
@@ -231,9 +231,11 @@ typedef struct {
231231
typedef union _jit_opt_symbol {
232232
struct {
233233
uint8_t tag;
234-
// Whether this object has a strong reference
235-
// being held to it by someone else.
236-
int8_t strong_ref_held_by_someone_else;
234+
// Whether this object skips refcount on the stack
235+
// (using the _PyStackRef API), or not.
236+
// 0 - normal refcounting
237+
// 1 - skip refcounting
238+
int8_t skip_refcount;
237239
};
238240
JitOptKnownClass cls;
239241
JitOptKnownValue value;
@@ -306,9 +308,9 @@ extern JitOptSymbol *_Py_uop_sym_tuple_getitem(JitOptContext *ctx, JitOptSymbol
306308
extern int _Py_uop_sym_tuple_length(JitOptSymbol *sym);
307309
extern JitOptSymbol *_Py_uop_sym_new_truthiness(JitOptContext *ctx, JitOptSymbol *value, bool truthy);
308310

309-
extern void _Py_uop_sym_set_strong_ref_might_be_this_sym(JitOptContext *ctx, JitOptSymbol *sym);
310-
extern bool _Py_uop_sym_is_strong_ref_held_by_someone_else(JitOptContext *ctx, JitOptSymbol *sym);
311-
extern void _Py_uop_sym_set_strong_ref_is_held_by_someone_else(JitOptContext *ctx, JitOptSymbol *sym);
311+
extern void _Py_uop_sym_set_dont_skip_refcount(JitOptContext *ctx, JitOptSymbol *sym);
312+
extern bool _Py_uop_sym_is_skip_refcount(JitOptContext *ctx, JitOptSymbol *sym);
313+
extern void _Py_uop_sym_set_skip_refcount(JitOptContext *ctx, JitOptSymbol *sym);
312314

313315
extern void _Py_uop_abstractcontext_init(JitOptContext *ctx);
314316
extern void _Py_uop_abstractcontext_fini(JitOptContext *ctx);

Python/optimizer_analysis.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,9 @@ remove_globals(_PyInterpreterFrame *frame, _PyUOpInstruction *buffer,
342342
#define sym_tuple_length _Py_uop_sym_tuple_length
343343
#define sym_is_immortal _Py_uop_sym_is_immortal
344344
#define sym_new_truthiness _Py_uop_sym_new_truthiness
345-
#define sym_set_strong_ref_is_held_by_someone_else _Py_uop_sym_set_strong_ref_is_held_by_someone_else
346-
#define sym_set_strong_ref_might_be_this_sym _Py_uop_sym_set_strong_ref_might_be_this_sym
347-
#define sym_is_strong_ref_held_by_someone_else _Py_uop_sym_is_strong_ref_held_by_someone_else
345+
#define sym_set_skip_refcount _Py_uop_sym_set_skip_refcount
346+
#define sym_set_dont_skip_refcount _Py_uop_sym_set_dont_skip_refcount
347+
#define sym_is_skip_refcount _Py_uop_sym_is_skip_refcount
348348

349349
static int
350350
optimize_to_bool(

Python/optimizer_bytecodes.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,24 +80,24 @@ dummy_func(void) {
8080
if (sym_is_null(value)) {
8181
ctx->done = true;
8282
}
83-
sym_set_strong_ref_might_be_this_sym(ctx, value);
83+
sym_set_dont_skip_refcount(ctx, value);
8484
}
8585

8686
op(_LOAD_FAST, (-- value)) {
8787
value = GETLOCAL(oparg);
88-
sym_set_strong_ref_might_be_this_sym(ctx, value);
88+
sym_set_dont_skip_refcount(ctx, value);
8989
}
9090

9191
op(_LOAD_FAST_BORROW, (-- value)) {
9292
value = GETLOCAL(oparg);
93-
sym_set_strong_ref_is_held_by_someone_else(ctx, value);
93+
sym_set_skip_refcount(ctx, value);
9494
}
9595

9696
op(_LOAD_FAST_AND_CLEAR, (-- value)) {
9797
value = GETLOCAL(oparg);
9898
JitOptSymbol *temp = sym_new_null(ctx);
9999
GETLOCAL(oparg) = temp;
100-
sym_set_strong_ref_might_be_this_sym(ctx, value);
100+
sym_set_dont_skip_refcount(ctx, value);
101101
}
102102

103103
op(_STORE_FAST, (value --)) {
@@ -301,7 +301,7 @@ dummy_func(void) {
301301
res = sym_new_type(ctx, &PyFloat_Type);
302302
}
303303
// TODO (gh-134584): Move this to the optimizer generator.
304-
if (sym_is_strong_ref_held_by_someone_else(ctx, left) && sym_is_strong_ref_held_by_someone_else(ctx, right)) {
304+
if (sym_is_skip_refcount(ctx, left) && sym_is_skip_refcount(ctx, right)) {
305305
REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0);
306306
}
307307
}
@@ -325,7 +325,7 @@ dummy_func(void) {
325325
res = sym_new_type(ctx, &PyFloat_Type);
326326
}
327327
// TODO (gh-134584): Move this to the optimizer generator.
328-
if (sym_is_strong_ref_held_by_someone_else(ctx, left) && sym_is_strong_ref_held_by_someone_else(ctx, right)) {
328+
if (sym_is_skip_refcount(ctx, left) && sym_is_skip_refcount(ctx, right)) {
329329
REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0);
330330
}
331331
}
@@ -349,7 +349,7 @@ dummy_func(void) {
349349
res = sym_new_type(ctx, &PyFloat_Type);
350350
}
351351
// TODO (gh-134584): Move this to the optimizer generator.
352-
if (sym_is_strong_ref_held_by_someone_else(ctx, left) && sym_is_strong_ref_held_by_someone_else(ctx, right)) {
352+
if (sym_is_skip_refcount(ctx, left) && sym_is_skip_refcount(ctx, right)) {
353353
REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0);
354354
}
355355
}

Python/optimizer_cases.c.h

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/optimizer_symbols.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ sym_new(JitOptContext *ctx)
9999
}
100100
ctx->t_arena.ty_curr_number++;
101101
self->tag = JIT_SYM_UNKNOWN_TAG;
102-
self->strong_ref_held_by_someone_else = WE_MIGHT_BE_THE_ONLY_STRONG_REF;
102+
self->skip_refcount = DONT_SKIP_REFCOUNT;
103103
return self;
104104
}
105105

@@ -109,7 +109,7 @@ static void make_const(JitOptSymbol *sym, PyObject *val)
109109
sym->value.value = Py_NewRef(val);
110110
// Constants don't need to be refcounted, as they are always
111111
// kept alive by co_consts.
112-
sym->strong_ref_held_by_someone_else = SOMEONE_ELSE_HAS_A_VALID_STRONG_REF;
112+
sym->skip_refcount = SKIP_REFCOUNT;
113113
}
114114

115115
static inline void
@@ -386,23 +386,22 @@ _Py_uop_sym_set_non_null(JitOptContext *ctx, JitOptSymbol *sym)
386386
}
387387

388388
void
389-
_Py_uop_sym_set_strong_ref_is_held_by_someone_else(JitOptContext *ctx, JitOptSymbol *sym)
389+
_Py_uop_sym_set_skip_refcount(JitOptContext *ctx, JitOptSymbol *sym)
390390
{
391-
sym->strong_ref_held_by_someone_else = SOMEONE_ELSE_HAS_A_VALID_STRONG_REF;
391+
sym->skip_refcount = SKIP_REFCOUNT;
392392
}
393393

394394
void
395-
_Py_uop_sym_set_strong_ref_might_be_this_sym(JitOptContext *ctx, JitOptSymbol *sym)
395+
_Py_uop_sym_set_dont_skip_refcount(JitOptContext *ctx, JitOptSymbol *sym)
396396
{
397-
sym->strong_ref_held_by_someone_else = WE_MIGHT_BE_THE_ONLY_STRONG_REF;
397+
sym->skip_refcount = DONT_SKIP_REFCOUNT;
398398
}
399399

400400
bool
401-
_Py_uop_sym_is_strong_ref_held_by_someone_else(JitOptContext *ctx, JitOptSymbol *sym)
401+
_Py_uop_sym_is_skip_refcount(JitOptContext *ctx, JitOptSymbol *sym)
402402
{
403-
assert(sym->strong_ref_held_by_someone_else == SOMEONE_ELSE_HAS_A_VALID_STRONG_REF ||
404-
sym->strong_ref_held_by_someone_else == WE_MIGHT_BE_THE_ONLY_STRONG_REF);
405-
return sym->strong_ref_held_by_someone_else == SOMEONE_ELSE_HAS_A_VALID_STRONG_REF;
403+
assert(sym->skip_refcount == SKIP_REFCOUNT || sym->skip_refcount == DONT_SKIP_REFCOUNT);
404+
return sym->skip_refcount == SKIP_REFCOUNT;
406405
}
407406

408407

@@ -795,7 +794,7 @@ _Py_uop_symbols_test(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(ignored))
795794
if (sym == NULL) {
796795
goto fail;
797796
}
798-
TEST_PREDICATE(!_Py_uop_sym_is_strong_ref_held_by_someone_else(ctx, sym), "top is refcounted");
797+
TEST_PREDICATE(!_Py_uop_sym_is_skip_refcount(ctx, sym), "top is refcounted");
799798
TEST_PREDICATE(!_Py_uop_sym_is_null(sym), "top is NULL");
800799
TEST_PREDICATE(!_Py_uop_sym_is_not_null(sym), "top is not NULL");
801800
TEST_PREDICATE(!_Py_uop_sym_matches_type(sym, &PyLong_Type), "top matches a type");
@@ -844,7 +843,7 @@ _Py_uop_symbols_test(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(ignored))
844843
goto fail;
845844
}
846845
_Py_uop_sym_set_const(ctx, sym, val_42);
847-
TEST_PREDICATE(_Py_uop_sym_is_strong_ref_held_by_someone_else(ctx, sym), "42 isn't refcounted");
846+
TEST_PREDICATE(_Py_uop_sym_is_skip_refcount(ctx, sym), "42 isn't refcounted");
848847
TEST_PREDICATE(_Py_uop_sym_truthiness(ctx, sym) == 1, "bool(42) is not True");
849848
TEST_PREDICATE(!_Py_uop_sym_is_null(sym), "42 is NULL");
850849
TEST_PREDICATE(_Py_uop_sym_is_not_null(sym), "42 isn't not NULL");
@@ -877,12 +876,12 @@ _Py_uop_symbols_test(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(ignored))
877876
if (sym == NULL) {
878877
goto fail;
879878
}
880-
TEST_PREDICATE(!_Py_uop_sym_is_strong_ref_held_by_someone_else(ctx, sym), "type should be refcounted");
881-
_Py_uop_sym_set_strong_ref_is_held_by_someone_else(ctx, sym);
882-
TEST_PREDICATE(_Py_uop_sym_is_strong_ref_held_by_someone_else(ctx, sym), "type should not be refcounted");
879+
TEST_PREDICATE(!_Py_uop_sym_is_skip_refcount(ctx, sym), "type should be refcounted");
880+
_Py_uop_sym_set_skip_refcount(ctx, sym);
881+
TEST_PREDICATE(_Py_uop_sym_is_skip_refcount(ctx, sym), "type should not be refcounted");
883882

884883
sym = _Py_uop_sym_new_const(ctx, Py_None);
885-
TEST_PREDICATE(_Py_uop_sym_is_strong_ref_held_by_someone_else(ctx, sym), "None should not be refcounted");
884+
TEST_PREDICATE(_Py_uop_sym_is_skip_refcount(ctx, sym), "None should not be refcounted");
886885
TEST_PREDICATE(_Py_uop_sym_truthiness(ctx, sym) == 0, "bool(None) is not False");
887886
sym = _Py_uop_sym_new_const(ctx, Py_False);
888887
TEST_PREDICATE(_Py_uop_sym_truthiness(ctx, sym) == 0, "bool(False) is not False");

0 commit comments

Comments
 (0)