sort by:
Revision Author Date Message Commit Date
4d378dc bump LLVM to 14.0.6-1 16 January 2023, 14:29:54 UTC
74fc310 Fix code block type in doc (#48298) 16 January 2023, 13:25:37 UTC
8c48fe9 Change default output of `[@]code_native` to intel syntax (#48103) * Change `[@]code_{native,llvm}` default output to intel syntax * Add code_native change to NEWS.md Co-authored-by: Sukera <Seelengrab@users.noreply.github.com> 16 January 2023, 12:43:55 UTC
a9ce60a Avoid dtrace regenerating the header (#48278) 16 January 2023, 12:16:48 UTC
12c3b1c Fix mistake in docstring of `keys(::RegexMatch)` (#48252) This method was added in 1.7.0 and is not available in any 1.6 release 16 January 2023, 10:55:48 UTC
1bfdf98 Use `get_bool_env` in more places (#48202) 15 January 2023, 21:24:23 UTC
0371bf4 In string search, replace unsafe_wrap with codeunits (#48275) Currently, `findfirst(::String, ::String)` will eventually end up calling `unsafe_wrap` on both arguments, in order to use Julia's generic vector search functions. This causes unnecessary allocations. This PR replaces use of `unsafe_wrap` with `codeunits`, removing the allocation. See also: #45393 14 January 2023, 17:38:28 UTC
65e6919 Corrected a spelling mistake in CONTRIBUTING.md (#48274) Corrected a spelling mistake in CONTRIBUTING.md 14 January 2023, 12:26:35 UTC
0c3b950 Add inline to cache flags (#48179) and fix the behavior of the check-bounds flag. Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> 14 January 2023, 08:33:22 UTC
428d242 threads: during abrupt thread-exit, cleanup anyways (#48223) Closes #47590 (pthread_cancel still forbidden though, since async mode will corrupt or deadlock the process, and synchronously tested with cancelation disabled whenever this is a lock is just a slow implementation of a boolean) Refs #47201 (only deals with thread exit, not other case where this is an issue, like cfunction exit and gc-safe-leave) May help #46537, by blocking jl_wake_libuv before uv_library_shutdown, and other tweaks to GC mode. For example, avoiding: [4011824] signal (6.-6): Aborted gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line) abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line) uv__async_send at /workspace/srcdir/libuv/src/unix/async.c:198 uv_async_send at /workspace/srcdir/libuv/src/unix/async.c:73 jl_wake_libuv at /data/vtjnash/julia1/src/jl_uv.c:44 [inlined] JL_UV_LOCK at /data/vtjnash/julia1/src/jl_uv.c:64 [inlined] ijl_iolock_begin at /data/vtjnash/julia1/src/jl_uv.c:72 iolock_begin at ./libuv.jl:48 [inlined] _trywait at ./asyncevent.jl:140 wait at ./asyncevent.jl:155 [inlined] profile_printing_listener at /data/vtjnash/julia1/usr/share/julia/stdlib/v1.10/Profile/src/Profile.jl:39 jfptr_YY.3_58617 at /data/vtjnash/julia1/usr/lib/julia/sys.so (unknown line) _jl_invoke at /data/vtjnash/julia1/src/gf.c:2665 [inlined] ijl_apply_generic at /data/vtjnash/julia1/src/gf.c:2866 jl_apply at /data/vtjnash/julia1/src/julia.h:1870 [inlined] start_task at /data/vtjnash/julia1/src/task.c:1093 Aborted Fixes #37400 14 January 2023, 01:03:51 UTC
faa37a6 Merge pull request #48256 from topolarity/noalias Add `!noalias` and `!alias.scope` metadata, starting to replace our current use of `tbaa` 13 January 2023, 23:32:11 UTC
4f34aa9 🤖 [master] Bump the Tar stdlib from 6bfc114 to ff55460 (#48268) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 13 January 2023, 21:23:54 UTC
313f646 fix a soure of invalidations (#48270) This occurred when loading GMT and came from a new `convert(::Type{String}, ...)` method getting defined in one of the dependencies. 13 January 2023, 20:03:14 UTC
670190c Don't deprecate splat (#48038) Keep the splat function and mention in the documentation that it's the recommended way of constructing a Base.Splat object. 13 January 2023, 18:47:51 UTC
9707594 rename QuickerSort to ScratchQuickSort (#48160) 13 January 2023, 18:01:08 UTC
eb5f6d6 docstring for `@time_imports`: explain what is shown (it's not cumulative) (#48248) Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com> 13 January 2023, 15:58:48 UTC
29fbd1c also cache `identify_package` and `locate_package` during package loading (#48247) 13 January 2023, 15:28:23 UTC
4dad6d3 avoid calling `uncompressed_ir` when checking `has_fcall` (#48258) We don't need to allocate new `CodeInfo` just to check `has_fcall` since the equivalent information can be encoded in `Method` object. 13 January 2023, 09:00:29 UTC
1ee253d respect `@noinline` annotations when inlining semi-concrete eval result (#48266) 13 January 2023, 06:45:34 UTC
8ad9dbd Improve effects for NamedTuple merge/diff fallback (#48262) This fallback path is rarely used when the compiler is available. However, inference does look at it to determine effects for the entire method (side note, it's not entirely clear that this is sound for `if @generated` methods, but that's a more general problem). Previously inference was able to determine neither effects nor return type for `merge`/`structdiff` of unknown `NamedTuples`, which was problematic, because it prevented other methods that made use of these primitives from having sufficient effects to be eligible for concrete evaluation. Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> 13 January 2023, 04:33:10 UTC
b43ef97 NFC followups for #48246 (#48264) 13 January 2023, 04:31:27 UTC
206fd5a distinguish "inlineable" from "declared as inline" (#48250) This commit addresses the current asymmetry in handling `@inline/@noinline` declarations by storing the information in `src::CodeInfo`. `src` now has the `inlining` field that indicates the inlining declaration as follows: - `src.inlining == 0`: no declaration - `src.inlining == 1`: declared as `@inline` - `src.inlining == 2`: declared as `@noinline` This change is a preparation for an upcoming refactor that will allow for judging inlineability at callsites of `is_inlineable`, while leaving the `inline_cost` function to simply compute the inlining cost without determining inlineability. 13 January 2023, 03:58:36 UTC
d61cfd2 support UInt & BigInt in TOML (#47903) * support parsing uint and long int Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> 12 January 2023, 21:53:16 UTC
d544e78 Rework :inbounds effects tainting (#48246) This works to fix #48243, by only tanting effects if an `@inbounds` statement is actually reached. Further, it refines the `noinbounds` effect to be IPO-cached and used to track whether a particular method read the inbounds state. A `:boundscheck` expression now does not immediately taint consistencty, but instead, taints `noinbounds` only. Then, if a method that has `:noinbounds` tainted is called within an `@inbounds` region, consistency is tainted. Similarly, a tainted `:noinbounds` disables constant propagation at `@inbounds` statements or if the method propagates inbounds. 12 January 2023, 21:12:08 UTC
1a94dab move some badly typed logging calls behind an invokelatest (#48254) 12 January 2023, 20:41:33 UTC
b08c644 Derive `!noalias` from `!tbaa` for most loads/stores This is an interim solution that derives the correct `!noalias` region from the existing TBAA information. Later we will want to: - Revise the TBAA hierarchy to remove region information - Delete `jl_aliasinfo_t::fromTBAA()` - Update `jl_cgval_t` to store a `jl_aliasinfo_t` 12 January 2023, 20:25:10 UTC
7313b7f Add !noalias and !alias.scope metadata The main idea here is that the TBAA domain is ill-equipped for reasoning about regions (and, in particular, suffers total precision less when merging disparate types in a `memcpy`). Instead, `!noalias` should be used for region-based memory information and `!tbaa` should be used exclusively for layout. We use (5) regions corresponding to the top level of the TBAA tree: - gcframe - stack - data - constant - type_metadata For now, this leaves the TBAA hierarchy in tact and only adds additional `!noalias` metadata. `!tbaa` annotations should be the same as before. 12 January 2023, 18:28:18 UTC
b07484c store bindings now in an array for safe, fast iteration (#48212) This lets us query and iterate the bindings without needing to hold locks over the queries, making those operations more scalable and safe to use across safepoints or concurrently. It is similar to how we already deal with specializations and datatype caches. Updates the smallintcache to additionally be more threadsafe for users, with explicit acquire and release operations. 12 January 2023, 15:05:40 UTC
e40d813 NFC: minor followups for #48220 (#48234) 12 January 2023, 09:10:01 UTC
3933f90 Some small patch for typeintersect. (#48224) * Add missing var-substitution in omit_bad_union. follow up 303734204dbe74f1a5d1defcb4ae3ada3e318dd4 * Also check free typevar's bounds in `reachable_var` They might be recreated in `finish_unionall`, (thus `lookup` returns false.) But their bounds might still live in the current env. close #44395. (#44395 could also be fixed by the fast path added in #48221. This commit would skip more `intersect_var` under circular constraint.) * Disallow more circulation once we set `lb`==`ub`. close #26487. This should be valid as we never set `X<:Y<:X` (assuming `Y` is the outer var). 12 January 2023, 04:46:20 UTC
793eaa3 Stop using `rand(lo:hi)` for QuickerSort pivot selection (#48241) Co-authored-by: Fredrik Ekre <ekrefredrik@gmail.com> 12 January 2023, 00:17:32 UTC
fec8304 fixed the overflow problem of powermod(x::Integer, p::Integer, m::T) (#48192) * fixed the overflow problem of `powermod(x::Integer, p::Integer, m::T)` Co-authored-by: Oscar Smith <oscardssmith@gmail.com> 11 January 2023, 20:12:52 UTC
a526a4a Merge pull request #48220 from JuliaLang/kf/ismutationfree effects: Improve is_mutation_free_type to also include immutable type… 11 January 2023, 15:23:19 UTC
8985403 Make LLVM Profiling robust for multithreaded programs (#47778) * Use stringsteam to atomically write LLVM opt timings * Add boolean to ensure we don't _only_ write the after block * Use ios_printf Co-authored-by: Nathan Daly <NHDaly@gmail.com> 11 January 2023, 04:52:14 UTC
318828c Also memoize is_consistent_type I called the data type property `isidentityfree`, which I think more accurately reflects what is being queried here. 11 January 2023, 04:48:50 UTC
0717238 effects: Improve is_mutation_free_type to also include immutable types thereof Addresses an outstanding todo. The property is memoized in the datatype like `isbitstype`. It is possible for types to refer to themselves via fields, so some form of memoization is required to avoid an infinite recursion. 11 January 2023, 04:48:31 UTC
392725d recover test case that was accidentally removed by #48194 (#48222) 11 January 2023, 04:35:18 UTC
1e5fdb2 update MPFR to 4.2.0 (#48165) Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com> 10 January 2023, 22:52:36 UTC
79ceb8d Define `valtype(::NamedTuple)` and `keytype(::NamedTuple)` (#46555) 10 January 2023, 17:56:53 UTC
a229fbd [REPL] Fix bug in TerminalMenus when pagesize is larger than the number of options. (#48173) Co-authored-by: Gunnar Farnebäck <gunnar.farneback@inify.com> 10 January 2023, 17:56:38 UTC
5ede942 Merge pull request #48196 from JuliaLang/jn/isambiguous-better ambiguous: fix a rare case of mis-comparison 10 January 2023, 17:55:11 UTC
00b0a7b Merge pull request #47929 from JuliaLang/jn/globalref-binding Continue working to make GlobalRef more first-class 10 January 2023, 17:54:21 UTC
5f84b35 doc: improve RegexMatch example (#48156) 10 January 2023, 17:49:56 UTC
d2c2709 Merge pull request #48167 from N5N3/inter-fix2 typeintersect: improve `merge_env` accuracy and avoid possible false `Union{}` 10 January 2023, 16:03:40 UTC
e81218e Typo fix in comment of sort.jl (#48190) 10 January 2023, 15:56:28 UTC
2364914 limit the type parameter of `CachedMethodTable` to `<:MethodTableView` (#48208) 10 January 2023, 15:54:46 UTC
548aee6 Revert "Merge pull request #47994 from JuliaLang/avi/improve-semi-concrete-accuracy" (#48194) This reverts commit 03bdf15483cbe2d06526d3b46f26e5d20893f07e, reversing changes made to a9e0545969bb76f33fe9ad9bcf52180caa1651b9. Fixes #48089 regression That PR causes the runtime to store an undesirable amount of garbage, to work around a bug in the semi-concrete interpreter failing to correctly compute the inferred result. That should be fixed in the semi-concrete interpreter, without bloating the runtime caches with extraneous information. 10 January 2023, 14:20:53 UTC
2424af1 make `getfield_notundefined` more robust (#48207) Follow up #48203. See the added test cases for the purpose of this commit. 10 January 2023, 13:57:09 UTC
11d83b8 "Widen" `T>:Any` to `Any` in `simple_join`. I gave up fixing the deep stack overflow. Making the `env` soundness seems much easier. close #47874. At present, we only catch cases with pattern like A1 = Union{T,Int} where {T} A2 = Union{T2,Int} where {T,T2<:Union{T,Int}} A3 = Union{Int,A2} 10 January 2023, 13:18:42 UTC
04cb6fb More thorough `reachable_var` check. Fix #47874 case2 10 January 2023, 13:18:42 UTC
c221f0f More circulation check. 10 January 2023, 13:18:42 UTC
5e2fbc8 Add another by bounds check to avoid stack-overflow. 10 January 2023, 13:18:42 UTC
df377ad bounds merge tuning 1. use `obviously_in_union` to catch more unneeded duplication in `Union`. 2. under-estimate merged `lb` in more case. (Should not affect subtype path.) 10 January 2023, 13:18:42 UTC
56be1cd Always accumulates bounds on outer var. 10 January 2023, 13:18:42 UTC
3037342 Omit circular bounds in upbound to avoid false `Union{}` This is not ideal. As some times circular bound seems meaningful. But at least better than `Union{}` ? 10 January 2023, 13:18:42 UTC
748149e Only merge vars occur in the local union decision. If we always merge the whole env, then the output bounds would be widen than input if different Union decision touch different vars. Also add missing `occurs_inv/cov`'s merge (by max). 10 January 2023, 13:18:42 UTC
6deb98f Merge pull request #48158 from JuliaLang/avi/inbounds effects: taint `:consistent`-cy on `:inbounds` and `:boundscheck` exprs 10 January 2023, 11:39:04 UTC
8c131d4 Fix `top_set_bit` docstring and use it in more places (#48201) * Fix `top_set_bit` docstring and use it in more places * Fix `top_set_bit` doctest now that it's actually running Co-authored-by: Oscar Smith <oscardssmith@gmail.com> 10 January 2023, 10:24:31 UTC
79eb7be fix boundscheck tests Co-Authored-By: Shawn LeMaster <shlemas@users.noreply.github.com> 10 January 2023, 09:22:25 UTC
e9f44a9 add a hack to avoid tainting `:consistent`-cy of `getfield(::Tuple, ::Int)` too aggressively 10 January 2023, 09:22:25 UTC
7928591 effects: taint `:consistent`-cy on `:inbounds` and `:boundscheck` exprs - taint `:consistent`-cy on `:boundscheck` expr - taint `:consistent`-cy on `:inbounds` expr N.B it turns out that we didn't taint it correctly before, since `jl_code_info_set_ir` encodes `:inbounds` expressions into `ssaflags` and eliminates them before abstract interpretation - improved `ntuple` effects slightly Since this commit ends up tainting `:consistent` of `getindex(::Tuple, ::Int)` too aggressively even for cases when the `getindex` call is known to safe, this commit also converts some `getindex(::Tuple, ::Int)` calls in Base to direct `getfield(::Tuple, i)` calls. 10 January 2023, 09:22:25 UTC
9a2f016 Merge pull request #48203 from JuliaLang/kf/instanceffects Refine effects for getfield corner cases 10 January 2023, 09:21:48 UTC
26b0588 effects: Mark _typevar CONSISTENT_IF_NOTRETURNED Like other mutable allocation consistency here is flow-dependent. 10 January 2023, 06:55:58 UTC
e397948 effects: Refine effects for getfield of unknown field When all fields are known initialized syntactically, we do not need to test whether accessing the fields will give an UndefRef. We only need to check for the fields that are not syntactically known to be initialized. As a result, this commit improves `:consistent`-cy of `getfield` call, which is better in general but leads to inference/inlining accuracy regression in some edge cases because now irinterp is enabled on more frames. There are two regressions, but we are fine with them so we modify the test cases: - inlining regression: irinterp ends up some extra junk basic blocks, that LLVM can optimize away down the road. - inference regressions: these regressions are all related to the `MustAlias` lattice extension, which was added for JET's use case especially and not enabled in base yet. Since JET doesn't enable irinterp, this commit marks the regressed cases as broken. 10 January 2023, 06:50:07 UTC
5ba3f1b Refine effects for T.instance We were already able to essentially fold this away, but we were incorrectly tainting :consistency. 10 January 2023, 06:33:18 UTC
2fc3b29 irinterp: Fix extra_reprocess with loops and add control hook (#48199) Fixes a bug where the extra_reprocess argument was ignored once we switched to the looping code and also adds a hook to allow external absint that may have control-dependent lattice elements to enqueue additional statements to revisit during irinterp. 10 January 2023, 06:27:41 UTC
557ddf2 fix some nits in gc docs (#48204) Co-authored-by: Diogo Netto <dcn@dhcp-10-29-83-174.dyn.MIT.EDU> 10 January 2023, 06:18:15 UTC
e163c84 lattice: Thread lattice through to va_process_argtypes (#48198) 10 January 2023, 06:00:37 UTC
fae53d0 binding: drop lock around owner field access The owner field is now handled with cmpswap, so we can avoid needing a module lock for it. This now means we only need the module lock for handling the bindings and usings fields. 10 January 2023, 01:56:38 UTC
3a8abf1 Continue working to make GlobalRef more first-class The `owner` field now points directly at the target binding (which may be itself), rather than indirecting through a module+name re-lookup. This makes `module X; import .x as y; end` behavior more precise. The `globalref` field is currently now mandatory, since otherwise incremental compilation will be impossible right now. Maybe world-age splitting will help improve that later? Fix up a lot of locations that previously used the `name` field badly. There are some valid uses of this, but mostly it was wrong, since it would may fail to reflect what content actually appeared in the user's code. Directly forwarding the actual lookup result is cleaner and clearer for the user in most cases. Also remove `resolve` for GlobalRef: This has been wrong since `import as` was added, and appears unused and untested. 09 January 2023, 23:45:46 UTC
88030b0 🤖 [master] Bump the Pkg stdlib from a8ae3c580 to 5ae866151 (#48184) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 09 January 2023, 22:07:42 UTC
d21a25d parameterize lattice operations in `abstract_call_unionall` (#48191) 09 January 2023, 20:35:43 UTC
ec437b7 add a suffix to a new cache files in case of failure of renaming it to an exisiting cache file already in use (#48137) * add a suffix to a new cache files in case of failure of renaming it to an exisiting file 09 January 2023, 18:44:29 UTC
45c81b1 ensure jl_compilation_sig does not narrow Vararg (#48152) Some code cleanup, and an early exit path that avoids trying to create a compilation signature from something that cannot be turned into one. Previously we might try a little too hard to make one, even if it meant we ignored that it was expected to be Varargs. Fix #48085 09 January 2023, 18:37:08 UTC
27bdbf6 ambiguous: fix a rare case of comparison This used to do the opposite test of what should have been required here (it checked if it was ambiguous, rather than if it was sortable). This now better aligns with the implementation in gf.c for the similar fast path check during ml_matches. 09 January 2023, 18:07:44 UTC
53a0a69 Extend method root to support more than 16bit roots (#48185) 09 January 2023, 14:11:15 UTC
708d1bd Add internal `top_set_bit` function (#47523) * add top_set_bit Co-authored-by: Lilith Hafner <Lilith.Hafner@gmail.com> Co-authored-by: Michael Abbott <32575566+mcabbott@users.noreply.github.com> 08 January 2023, 22:16:48 UTC
f6b5157 deps: fix broken `p7zip` url (#48176) 08 January 2023, 18:48:28 UTC
2f51851 🤖 Bump the SparseArrays stdlib from 31b491e to a3116b9 (#48175) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 08 January 2023, 18:14:00 UTC
0847a7f Make cache mismatch log more informative (#48168) 08 January 2023, 17:42:39 UTC
db7d762 Move safepoint emission to llvm-final-gc-lowering (#47393) 08 January 2023, 15:03:08 UTC
de73c26 Make sure `reachable_var` not falls into infinite recusion. (#48135) 07 January 2023, 10:39:46 UTC
8dbf7a1 Remove redundant definition of `UIntType` (#48157) 07 January 2023, 07:17:30 UTC
98d5a0a ir/passes: Various followups from previous PRs (#48164) Rolls up individual review comments from #48066, #48144, #48151. 07 January 2023, 02:45:27 UTC
b76fdcc ir: Respect GlobalRef lattice elements (#48151) Currently IncrementalCompact recomputes the type of globals on every iteration. There is not much reason to do this - the type of a global cannot change. In addition, external abstract interpreters may want to inject custom, more precise lattice elements for globals, which should be respected. Overall, this should be both faster and better for external absint, though of course GlobalRefs now need to be inserted into the IR with the correct type. If there's any callsites that don't do that, those would have to be updated. 06 January 2023, 22:50:40 UTC
1508425 Slightly generalize _compute_sparam elision (#48144) To catch a case that occurs in FuncPipelines.jl and was causing precision issues in #48066. 06 January 2023, 22:50:26 UTC
fd41b59 Allow irinterp to refine nothrow effect (#48066) This addresses a remaining todo in the irinterp code to allow it to compute whether its particular evaluation refined `nothrow`. As a result, we can re-enable it for a larger class of ir (we had previously disabled it to avoid regressing cases where regular constprop was able to prove a `nothrow` refinement, but irinterp was not). 06 January 2023, 22:49:43 UTC
0eafda8 doc: clarify `let x` without an assignment (#48122) 06 January 2023, 15:29:58 UTC
46365ea improve the effects of `Base._tuple_unique_fieldtypes` (#48112) Discovered during inspecting #48097. 06 January 2023, 14:28:41 UTC
f056c34 Improve type stability of array_subpadding slightly (#48136) This should be slightly more efficient as the compiler now only tries to call `iterate` on `t` and `s` once, and will not try to destructure the result if the `iterate` call returns `nothing`. This change reduce spurious JET warnings. 06 January 2023, 08:19:13 UTC
463e5f0 add a note to `ismutable` docstring about `String` and `Symbol` (#48149) 06 January 2023, 03:43:23 UTC
6d14b0f Math tests: if fma is not available, relax some tests from exact equality to approximate equality (#48102) * Math tests: if fma is not available, relax some tests from exact equality to approximate equality * Apply suggestions from code review Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com> * `has_fma` has no runtime support * Add `Rational{Int}` * Put the FMA support info in the testset context * Fix whitespace * Remove inaccurate testset name Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com> 06 January 2023, 01:57:07 UTC
4562cfa Fix small nits in multiversioning (#47675) 05 January 2023, 20:17:59 UTC
54aa57c Make QuickerSort efficient for non-homogonous eltype (#47973) * set `v[j] = pivot` in partition rather than returning pivot to caller to make partition! type stable for non-concrete eltype 05 January 2023, 20:15:01 UTC
0913cbc Fix invalidations in `finish_show_ir` (#48134) The whole module is under `@nospecialize`, so inference needs us to annotate the argtypes. 05 January 2023, 20:03:05 UTC
dc2b4d9 Deprecate AMD's LWP extension (#48131) 05 January 2023, 18:32:40 UTC
321c5f5 Avoid a couple of InexactErrors in the IdDict code. (#48116) 05 January 2023, 15:59:45 UTC
35d1840 Switch back to LLVM's IR linker (#48106) Co-authored-by: Tim Besard <tim.besard@gmail.com> 05 January 2023, 15:52:54 UTC
b984c4e make get! type-stable for AbstractDict (#48128) 05 January 2023, 15:18:23 UTC
80aeebe Don't perform extra inference during incremental image creation (#48054) As noted in #48047, we're currently attempting to infer extra methods during incremental image saving, which causes us to miss edges in the image. In particular, in the case of #48047, Cthulhu had the `compile=min` option set, which caused the code instance for `do_typeinf!` to not be infered. However, later it was nevertheless queued for precompilation, causing inference to occur at an inopportune time. This PR simply prevents code instances that don't explicitly have the `->precompile` flag set (e.g. the guard instance created for the interpreter) from being enqueued for precompilation. It is not clear that this is necessarily the correct behavior - we may in fact want to infer these method instances, just before we set up the serializer state, but for now this fixes #48047 for me. I also included an appropriate test and a warning message if we attempt to enter inference when this is not legal, so any revisit of what should be happening here can hopefully make use of those. 05 January 2023, 12:47:42 UTC
back to top