Skip to content

Commit 6a32b9a

Browse files
committed
Address code review
1 parent b3b608b commit 6a32b9a

5 files changed

Lines changed: 28 additions & 28 deletions

File tree

Include/internal/pycore_backoff.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ extern "C" {
1212
#include <assert.h>
1313
#include <stdbool.h>
1414
#include "pycore_structs.h" // _Py_BackoffCounter
15+
#include "pycore_tstate.h" // _PyThreadStateImpl
1516

1617
/* 16-bit countdown counters using exponential backoff.
1718
@@ -127,9 +128,11 @@ trigger_backoff_counter(void)
127128
#define JUMP_BACKWARD_INITIAL_VALUE 4000
128129
#define JUMP_BACKWARD_INITIAL_BACKOFF 6
129130
static inline _Py_BackoffCounter
130-
initial_jump_backoff_counter(uint16_t initial_value, uint16_t initial_backoff)
131+
initial_jump_backoff_counter(_PyPolicy *policy)
131132
{
132-
return make_backoff_counter(initial_value, initial_backoff);
133+
return make_backoff_counter(
134+
policy->interp.jump_backward_initial_value,
135+
policy->interp.jump_backward_initial_backoff);
133136
}
134137

135138
/* Initial exit temperature.
@@ -139,11 +142,15 @@ initial_jump_backoff_counter(uint16_t initial_value, uint16_t initial_backoff)
139142
#define SIDE_EXIT_INITIAL_VALUE 4000
140143
#define SIDE_EXIT_INITIAL_BACKOFF 6
141144

145+
#ifdef _TIER2
142146
static inline _Py_BackoffCounter
143-
initial_temperature_backoff_counter(uint16_t initial_value, uint16_t initial_backoff)
147+
initial_temperature_backoff_counter(_PyPolicy *policy)
144148
{
145-
return make_backoff_counter(initial_value, initial_backoff);
149+
return make_backoff_counter(
150+
policy->jit.side_exit_initial_value,
151+
policy->jit.side_exit_initial_backoff);
146152
}
153+
#endif
147154

148155
/* Unreachable backoff counter. */
149156
static inline _Py_BackoffCounter

Python/ceval.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1474,8 +1474,7 @@ stop_tracing_and_jit(PyThreadState *tstate, _PyInterpreterFrame *frame)
14741474
}
14751475
else {
14761476
_tstate->jit_tracer_state.initial_state.jump_backward_instr[1].counter = initial_jump_backoff_counter(
1477-
_tstate->policy.interp.jump_backward_initial_value,
1478-
_tstate->policy.interp.jump_backward_initial_backoff);
1477+
&_tstate->policy);
14791478
}
14801479
}
14811480
else {
@@ -1485,9 +1484,7 @@ stop_tracing_and_jit(PyThreadState *tstate, _PyInterpreterFrame *frame)
14851484
exit->temperature = restart_backoff_counter(exit->temperature);
14861485
}
14871486
else {
1488-
exit->temperature = initial_temperature_backoff_counter(
1489-
_tstate->policy.jit.side_exit_initial_value,
1490-
_tstate->policy.jit.side_exit_initial_backoff);
1487+
exit->temperature = initial_temperature_backoff_counter(&_tstate->policy);
14911488
}
14921489
}
14931490
_PyJit_FinalizeTracing(tstate);

Python/optimizer.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1343,9 +1343,7 @@ make_executor_from_uops(_PyThreadStateImpl *tstate, _PyUOpInstruction *buffer, i
13431343
cold->vm_data.chain_depth = chain_depth;
13441344
for (int i = 0; i < exit_count; i++) {
13451345
executor->exits[i].index = i;
1346-
executor->exits[i].temperature = initial_temperature_backoff_counter(
1347-
tstate->policy.jit.side_exit_initial_value,
1348-
tstate->policy.jit.side_exit_initial_backoff);
1346+
executor->exits[i].temperature = initial_temperature_backoff_counter(&tstate->policy);
13491347
}
13501348
int next_exit = exit_count-1;
13511349
_PyUOpInstruction *dest = (_PyUOpInstruction *)&executor->trace[length];

Python/pystate.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,7 +1440,7 @@ decref_threadstate(_PyThreadStateImpl *tstate)
14401440
}
14411441

14421442
static inline void
1443-
init_jit_metric(uint16_t *target, const char *env_name, uint16_t default_value,
1443+
init_policy(uint16_t *target, const char *env_name, uint16_t default_value,
14441444
long min_value, long max_value)
14451445
{
14461446
*target = default_value;
@@ -1539,20 +1539,20 @@ init_threadstate(_PyThreadStateImpl *_tstate,
15391539
_tstate->asyncio_running_loop = NULL;
15401540
_tstate->asyncio_running_task = NULL;
15411541
// Initialize interpreter policy from environment variables
1542-
init_jit_metric(&_tstate->policy.interp.jump_backward_initial_value,
1543-
"PYTHON_JIT_JUMP_BACKWARD_INITIAL_VALUE",
1544-
JUMP_BACKWARD_INITIAL_VALUE, 1, MAX_VALUE);
1545-
init_jit_metric(&_tstate->policy.interp.jump_backward_initial_backoff,
1546-
"PYTHON_JIT_JUMP_BACKWARD_INITIAL_BACKOFF",
1547-
JUMP_BACKWARD_INITIAL_BACKOFF, 0, MAX_BACKOFF);
1542+
init_policy(&_tstate->policy.interp.jump_backward_initial_value,
1543+
"PYTHON_JIT_JUMP_BACKWARD_INITIAL_VALUE",
1544+
JUMP_BACKWARD_INITIAL_VALUE, 1, MAX_VALUE);
1545+
init_policy(&_tstate->policy.interp.jump_backward_initial_backoff,
1546+
"PYTHON_JIT_JUMP_BACKWARD_INITIAL_BACKOFF",
1547+
JUMP_BACKWARD_INITIAL_BACKOFF, 0, MAX_BACKOFF);
15481548
#ifdef _Py_TIER2
15491549
// Initialize JIT policy from environment variables
1550-
init_jit_metric(&_tstate->policy.jit.side_exit_initial_value,
1551-
"PYTHON_JIT_SIDE_EXIT_INITIAL_VALUE",
1552-
SIDE_EXIT_INITIAL_VALUE, 1, MAX_VALUE);
1553-
init_jit_metric(&_tstate->policy.jit.side_exit_initial_backoff,
1554-
"PYTHON_JIT_SIDE_EXIT_INITIAL_BACKOFF",
1555-
SIDE_EXIT_INITIAL_BACKOFF, 0, MAX_BACKOFF);
1550+
init_policy(&_tstate->policy.jit.side_exit_initial_value,
1551+
"PYTHON_JIT_SIDE_EXIT_INITIAL_VALUE",
1552+
SIDE_EXIT_INITIAL_VALUE, 1, MAX_VALUE);
1553+
init_policy(&_tstate->policy.jit.side_exit_initial_backoff,
1554+
"PYTHON_JIT_SIDE_EXIT_INITIAL_BACKOFF",
1555+
SIDE_EXIT_INITIAL_BACKOFF, 0, MAX_BACKOFF);
15561556
_tstate->jit_tracer_state.code_buffer = NULL;
15571557
#endif
15581558
tstate->delete_later = NULL;

Python/specialize.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ _PyCode_Quicken(_Py_CODEUNIT *instructions, Py_ssize_t size, int enable_counters
4949
if (enable_counters) {
5050
PyThreadState *tstate = _PyThreadState_GET();
5151
_PyThreadStateImpl *tstate_impl = (_PyThreadStateImpl *)tstate;
52-
jump_counter = initial_jump_backoff_counter(
53-
tstate_impl->policy.interp.jump_backward_initial_value,
54-
tstate_impl->policy.interp.jump_backward_initial_backoff);
52+
jump_counter = initial_jump_backoff_counter(&tstate_impl->policy);
5553
adaptive_counter = adaptive_counter_warmup();
5654
}
5755
else {

0 commit comments

Comments
 (0)