https://github.com/JuliaLang/julia
Revision 91455710f38f226e45591203b0d4cd8e392131fd authored by Keno Fischer on 22 March 2024, 09:37:18 UTC, committed by GitHub on 22 March 2024, 09:37:18 UTC
I don't like `jl_filename`/`jl_lineno`. They are weird internal state, and they are also not thread safe, so if different threads are evaling different things at the same time, line numbers can get confused. This PR changes the core function `jl_toplevel_eval_flex` to keep track of its current file/line context on the stack, so at least there is no confusion within one call to this function. With this PR and #53797, the global `jl_filename`/`jl_lineno` are used for three purposes: 1. To initialize the filename/lineno used by lowering from `Core.eval`. 2. To give binding deprecation warnings. 3. For `jl_critical_error`. 4. By humans in the debugger. I think 3 and 4 are fine, they are exceptional cases. Case 2, I think could be changed to plumb through locations explicitly, but it's a bit annoying, so I didn't tackle it here. Case 1, I think can probably just be changed to consistently initialize, and if you want a proper line number, you need to put it in there explicitly. However, I didn't change that in this PR, because I think it could be slightly breaking, so should be pkgeval'd.
1 parent 6c22dfd
Tip revision: 91455710f38f226e45591203b0d4cd8e392131fd authored by Keno Fischer on 22 March 2024, 09:37:18 UTC
Use jl_filename/jl_lineno less (#53799)
Use jl_filename/jl_lineno less (#53799)
Tip revision: 9145571
File | Mode | Size |
---|---|---|
clangsa | ||
flisp | ||
support | ||
.gitignore | -rw-r--r-- | 376 bytes |
APInt-C.cpp | -rw-r--r-- | 15.8 KB |
APInt-C.h | -rw-r--r-- | 5.2 KB |
Makefile | -rw-r--r-- | 31.6 KB |
abi_aarch64.cpp | -rw-r--r-- | 15.6 KB |
abi_arm.cpp | -rw-r--r-- | 9.2 KB |
abi_llvm.cpp | -rw-r--r-- | 2.4 KB |
abi_ppc64le.cpp | -rw-r--r-- | 6.2 KB |
abi_win32.cpp | -rw-r--r-- | 3.0 KB |
abi_win64.cpp | -rw-r--r-- | 3.0 KB |
abi_x86.cpp | -rw-r--r-- | 3.3 KB |
abi_x86_64.cpp | -rw-r--r-- | 8.7 KB |
aotcompile.cpp | -rw-r--r-- | 87.7 KB |
array.c | -rw-r--r-- | 12.4 KB |
ast.c | -rw-r--r-- | 53.8 KB |
ast.scm | -rw-r--r-- | 21.9 KB |
bin2hex.scm | -rw-r--r-- | 388 bytes |
builtin_proto.h | -rw-r--r-- | 2.4 KB |
builtins.c | -rw-r--r-- | 97.7 KB |
ccall.cpp | -rw-r--r-- | 94.0 KB |
ccalllazybar.c | -rw-r--r-- | 234 bytes |
ccalllazyfoo.c | -rw-r--r-- | 156 bytes |
ccalltest.c | -rw-r--r-- | 24.1 KB |
ccalltest_common.h | -rw-r--r-- | 779 bytes |
cgmemmgr.cpp | -rw-r--r-- | 30.5 KB |
cgutils.cpp | -rw-r--r-- | 198.5 KB |
codegen-stubs.c | -rw-r--r-- | 5.9 KB |
codegen.cpp | -rw-r--r-- | 451.2 KB |
common_symbols1.inc | -rw-r--r-- | 2.0 KB |
common_symbols2.inc | -rw-r--r-- | 5.6 KB |
coverage.cpp | -rw-r--r-- | 7.2 KB |
crc32c-tables.c | -rw-r--r-- | 43.4 KB |
crc32c.c | -rw-r--r-- | 19.9 KB |
datatype.c | -rw-r--r-- | 82.4 KB |
debug-registry.h | -rw-r--r-- | 4.7 KB |
debuginfo.cpp | -rw-r--r-- | 60.9 KB |
debuginfo.h | -rw-r--r-- | 697 bytes |
disasm.cpp | -rw-r--r-- | 47.9 KB |
dlload.c | -rw-r--r-- | 17.0 KB |
features_aarch32.h | -rw-r--r-- | 1.1 KB |
features_aarch64.h | -rw-r--r-- | 4.6 KB |
features_x86.h | -rw-r--r-- | 4.1 KB |
file_constants.h | -rw-r--r-- | 2.1 KB |
gc-alloc-profiler.cpp | -rw-r--r-- | 4.7 KB |
gc-alloc-profiler.h | -rw-r--r-- | 1.7 KB |
gc-debug.c | -rw-r--r-- | 41.3 KB |
gc-heap-snapshot.cpp | -rw-r--r-- | 23.4 KB |
gc-heap-snapshot.h | -rw-r--r-- | 5.7 KB |
gc-page-profiler.c | -rw-r--r-- | 4.8 KB |
gc-page-profiler.h | -rw-r--r-- | 2.1 KB |
gc-pages.c | -rw-r--r-- | 6.3 KB |
gc-stacks.c | -rw-r--r-- | 10.0 KB |
gc.c | -rw-r--r-- | 171.7 KB |
gc.h | -rw-r--r-- | 23.0 KB |
gen_sysimg_symtab.jl | -rw-r--r-- | 1.8 KB |
genericmemory.c | -rw-r--r-- | 27.5 KB |
gf.c | -rw-r--r-- | 177.7 KB |
iddict.c | -rw-r--r-- | 6.2 KB |
idset.c | -rw-r--r-- | 3.9 KB |
init.c | -rw-r--r-- | 31.2 KB |
interpreter.c | -rw-r--r-- | 33.8 KB |
intrinsics.cpp | -rw-r--r-- | 72.3 KB |
intrinsics.h | -rw-r--r-- | 3.1 KB |
ircode.c | -rw-r--r-- | 49.3 KB |
jitlayers.cpp | -rw-r--r-- | 94.3 KB |
jitlayers.h | -rw-r--r-- | 22.7 KB |
jl_exported_data.inc | -rw-r--r-- | 4.6 KB |
jl_exported_funcs.inc | -rw-r--r-- | 16.5 KB |
jl_uv.c | -rw-r--r-- | 35.7 KB |
jlapi.c | -rw-r--r-- | 31.3 KB |
jlfrontend.scm | -rw-r--r-- | 9.7 KB |
jloptions.c | -rw-r--r-- | 40.7 KB |
jloptions.h | -rw-r--r-- | 1.6 KB |
jltypes.c | -rw-r--r-- | 143.2 KB |
julia-parser.scm | -rw-r--r-- | 113.2 KB |
julia-syntax.scm | -rw-r--r-- | 238.5 KB |
julia.expmap.in | -rw-r--r-- | 933 bytes |
julia.h | -rw-r--r-- | 114.0 KB |
julia_assert.h | -rw-r--r-- | 1.1 KB |
julia_atomics.h | -rw-r--r-- | 13.6 KB |
julia_fasttls.h | -rw-r--r-- | 1.8 KB |
julia_gcext.h | -rw-r--r-- | 7.0 KB |
julia_internal.h | -rw-r--r-- | 81.4 KB |
julia_locks.h | -rw-r--r-- | 3.8 KB |
julia_threads.h | -rw-r--r-- | 13.2 KB |
llvm-alloc-helpers.cpp | -rw-r--r-- | 15.8 KB |
llvm-alloc-helpers.h | -rw-r--r-- | 5.5 KB |
llvm-alloc-opt.cpp | -rw-r--r-- | 49.3 KB |
llvm-codegen-shared.h | -rw-r--r-- | 19.8 KB |
llvm-cpufeatures.cpp | -rw-r--r-- | 3.9 KB |
llvm-demote-float16.cpp | -rw-r--r-- | 7.8 KB |
llvm-final-gc-lowering.cpp | -rw-r--r-- | 10.7 KB |
llvm-gc-invariant-verifier.cpp | -rw-r--r-- | 6.9 KB |
llvm-julia-licm.cpp | -rw-r--r-- | 17.0 KB |
llvm-julia-passes.inc | -rw-r--r-- | 1.3 KB |
llvm-late-gc-lowering.cpp | -rw-r--r-- | 124.0 KB |
llvm-lower-handlers.cpp | -rw-r--r-- | 8.9 KB |
llvm-muladd.cpp | -rw-r--r-- | 3.4 KB |
llvm-multiversioning.cpp | -rw-r--r-- | 40.7 KB |
llvm-pass-helpers.cpp | -rw-r--r-- | 12.5 KB |
llvm-pass-helpers.h | -rw-r--r-- | 5.6 KB |
llvm-propagate-addrspaces.cpp | -rw-r--r-- | 11.7 KB |
llvm-ptls.cpp | -rw-r--r-- | 15.8 KB |
llvm-remove-addrspaces.cpp | -rw-r--r-- | 15.6 KB |
llvm-remove-ni.cpp | -rw-r--r-- | 980 bytes |
llvm-simdloop.cpp | -rw-r--r-- | 9.4 KB |
llvm-version.h | -rw-r--r-- | 837 bytes |
llvm_api.cpp | -rw-r--r-- | 5.1 KB |
llvmcalltest.cpp | -rw-r--r-- | 2.0 KB |
mach_excServer.c | -rw-r--r-- | 30.5 KB |
macroexpand.scm | -rw-r--r-- | 29.8 KB |
match.scm | -rw-r--r-- | 9.8 KB |
method.c | -rw-r--r-- | 57.9 KB |
mk_julia_flisp_boot.scm | -rw-r--r-- | 137 bytes |
module.c | -rw-r--r-- | 38.8 KB |
mtarraylist.c | -rw-r--r-- | 2.5 KB |
opaque_closure.c | -rw-r--r-- | 8.3 KB |
options.h | -rw-r--r-- | 5.2 KB |
passes.h | -rw-r--r-- | 5.9 KB |
pipeline.cpp | -rw-r--r-- | 43.9 KB |
precompile.c | -rw-r--r-- | 7.3 KB |
precompile_utils.c | -rw-r--r-- | 11.8 KB |
processor.cpp | -rw-r--r-- | 34.0 KB |
processor.h | -rw-r--r-- | 11.6 KB |
processor_arm.cpp | -rw-r--r-- | 69.9 KB |
processor_fallback.cpp | -rw-r--r-- | 5.8 KB |
processor_x86.cpp | -rw-r--r-- | 42.9 KB |
rtutils.c | -rw-r--r-- | 54.2 KB |
runtime_ccall.cpp | -rw-r--r-- | 10.2 KB |
runtime_intrinsics.c | -rw-r--r-- | 64.1 KB |
safepoint.c | -rw-r--r-- | 16.0 KB |
scheduler.c | -rw-r--r-- | 23.8 KB |
serialize.h | -rw-r--r-- | 3.7 KB |
signal-handling.c | -rw-r--r-- | 16.2 KB |
signals-mach.c | -rw-r--r-- | 29.6 KB |
signals-unix.c | -rw-r--r-- | 39.1 KB |
signals-win.c | -rw-r--r-- | 18.9 KB |
simplevector.c | -rw-r--r-- | 2.9 KB |
smallintset.c | -rw-r--r-- | 7.3 KB |
stackwalk.c | -rw-r--r-- | 47.7 KB |
staticdata.c | -rw-r--r-- | 163.9 KB |
staticdata_utils.c | -rw-r--r-- | 57.5 KB |
subtype.c | -rw-r--r-- | 189.8 KB |
symbol.c | -rw-r--r-- | 5.1 KB |
sys.c | -rw-r--r-- | 21.6 KB |
task.c | -rw-r--r-- | 62.3 KB |
threading.c | -rw-r--r-- | 31.7 KB |
threading.h | -rw-r--r-- | 795 bytes |
timing.c | -rw-r--r-- | 22.7 KB |
timing.h | -rw-r--r-- | 14.0 KB |
toplevel.c | -rw-r--r-- | 42.5 KB |
typemap.c | -rw-r--r-- | 66.0 KB |
uprobes.d | -rw-r--r-- | 1.5 KB |
utils.scm | -rw-r--r-- | 3.3 KB |
uv_constants.h | -rw-r--r-- | 783 bytes |
win32_ucontext.c | -rw-r--r-- | 2.9 KB |
win32_ucontext.h | -rw-r--r-- | 639 bytes |
work-stealing-queue.h | -rw-r--r-- | 3.2 KB |
Computing file changes ...