Skip to content

Commit 7549fe7

Browse files
alexmalyshevfacebook-github-bot
authored andcommitted
Move the perf trampoline worklist to ModuleState
Summary: Getting this out of global variables and into the ModuleState. Reviewed By: mpage Differential Revision: D78771759 fbshipit-source-id: 9846453e0802730595fe68abe5637ee2b250c268
1 parent 830f313 commit 7549fe7

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

_cinderx-lib.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
#include "internal/pycore_pystate.h"
66

77
#include "cinderx/CachedProperties/cached_properties.h"
8-
#include "cinderx/Common/dict.h"
9-
#include "cinderx/Common/func.h"
108
#include "cinderx/Common/log.h"
119
#include "cinderx/Common/py-portability.h"
1210
#include "cinderx/Common/util.h"
@@ -19,7 +17,6 @@
1917
#include "cinderx/Jit/global_cache.h"
2018
#include "cinderx/Jit/perf_jitdump.h"
2119
#include "cinderx/Jit/pyjit.h"
22-
#include "cinderx/Jit/pyjit_result.h"
2320
#include "cinderx/Jit/runtime.h"
2421
#include "cinderx/Jit/symbolizer.h"
2522
#include "cinderx/Shadowcode/shadowcode.h"
@@ -32,7 +29,6 @@
3229
#include "cinderx/StaticPython/methodobject_vectorcall.h"
3330
#include "cinderx/StaticPython/objectkey.h"
3431
#include "cinderx/StaticPython/strictmoduleobject.h"
35-
#include "cinderx/StaticPython/vtable_builder.h"
3632
#include "cinderx/UpstreamBorrow/borrowed.h"
3733
#include "cinderx/async_lazy_value.h"
3834
#include "cinderx/module_state.h"
@@ -58,9 +54,6 @@
5854

5955
namespace {
6056

61-
// Function objects registered for pre-fork perf-trampoline compilation.
62-
std::unordered_set<BorrowedRef<PyFunctionObject>> perf_trampoline_worklist;
63-
6457
/*
6558
* Misc. Python-facing utility functions.
6659
*/
@@ -287,6 +280,9 @@ PyObject* compile_perf_trampoline_pre_fork(PyObject*, PyObject*) {
287280

288281
PyUnstable_PerfTrampoline_SetPersistAfterFork(1);
289282

283+
auto& perf_trampoline_worklist =
284+
cinderx::getModuleState()->perfTrampolineWorklist();
285+
290286
for (BorrowedRef<PyFunctionObject> func : perf_trampoline_worklist) {
291287
BorrowedRef<PyCodeObject> code = func->func_code;
292288
if (PyUnstable_PerfTrampoline_CompileCode(code) == -1) {
@@ -439,6 +435,8 @@ PyObject* get_entire_call_stack_as_qualnames_with_lineno_and_frame(
439435
void scheduleCompile(BorrowedRef<PyFunctionObject> func) {
440436
bool scheduled = jit::scheduleJitCompile(func);
441437
if (!scheduled && jit::perf::isPreforkCompilationEnabled()) {
438+
auto& perf_trampoline_worklist =
439+
cinderx::getModuleState()->perfTrampolineWorklist();
442440
perf_trampoline_worklist.emplace(func);
443441
}
444442
}
@@ -756,6 +754,8 @@ int cinderx_func_watcher(
756754
#endif
757755
case PyFunction_EVENT_DESTROY:
758756
if (jit::perf::isPreforkCompilationEnabled()) {
757+
auto& perf_trampoline_worklist =
758+
cinderx::getModuleState()->perfTrampolineWorklist();
759759
perf_trampoline_worklist.erase(func);
760760
}
761761
jit::funcDestroyed(func);

module_state.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "cinderx/python.h"
66

77
#include "cinderx/Jit/code_allocator_iface.h"
8+
#include "cinderx/Jit/containers.h"
89
#include "cinderx/Jit/global_cache_iface.h"
910
#include "cinderx/Jit/runtime_iface.h"
1011
#include "cinderx/Jit/symbolizer_iface.h"
@@ -121,6 +122,10 @@ class ModuleState {
121122
return builtin_next_;
122123
}
123124

125+
jit::UnorderedSet<BorrowedRef<PyFunctionObject>>& perfTrampolineWorklist() {
126+
return perf_trampoline_worklist_;
127+
}
128+
124129
bool initialized() const {
125130
return initialized_;
126131
}
@@ -140,6 +145,10 @@ class ModuleState {
140145
Ref<> frame_reifier_;
141146
#endif
142147
Ref<> sys_clear_caches_, builtin_next_;
148+
149+
// Function objects registered for pre-fork perf-trampoline compilation.
150+
jit::UnorderedSet<BorrowedRef<PyFunctionObject>> perf_trampoline_worklist_;
151+
143152
bool initialized_{false};
144153
};
145154

0 commit comments

Comments
 (0)