Skip to content

Commit 195a403

Browse files
authored
1 parent 4cb3357 commit 195a403

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

docs/src/internals.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ JET.analyze_task_parallel_code!
3131
```@docs
3232
JET.JET_CACHE
3333
JET.JETCachedResult
34-
JET.jet_inlining_policy
34+
JET.inlining_policy
3535
```
3636

3737

src/analyzer.jl

+24-3
Original file line numberDiff line numberDiff line change
@@ -479,14 +479,35 @@ CC.may_compress(analyzer::AbstractAnalyzer) = false
479479
CC.may_discard_trees(analyzer::AbstractAnalyzer) = false
480480
CC.verbose_stmt_info(analyzer::AbstractAnalyzer) = false
481481

482+
# branch on https://github.com/JuliaLang/julia/pull/41328
483+
@static if isdefined(CC, :is_stmt_inline)
484+
@doc """
485+
inlining_policy(analyzer::AbstractAnalyzer, @nospecialize(src), stmt_flag::UInt8) -> source::Any
486+
487+
Implements inlining policy for `AbstractAnalyzer`.
488+
Since `AbstractAnalyzer` works on `InferenceResult` whose `src` field keeps
489+
[`JETResult`](@ref) or [`JETCachedResult`](@ref), this implementation just bypasses
490+
their wrapped source to `inlining_policy(::AbstractInterpreter, ::Any, ::UInt8)`.
482491
"""
483-
jet_inlining_policy(src)
492+
function CC.inlining_policy(analyzer::AbstractAnalyzer, @nospecialize(src), stmt_flag::UInt8)
493+
if isa(src, JETResult)
494+
src = get_source(src)
495+
elseif isa(src, JETCachedResult)
496+
src = get_source(src)
497+
end
498+
return @invoke CC.inlining_policy(analyzer::AbstractInterpreter, @nospecialize(src), stmt_flag::UInt8)
499+
end
500+
else # @static if isdefined(Compiler, :is_stmt_inline)
501+
@doc """
502+
inlining_policy(::AbstractAnalyzer) = jet_inlining_policy
503+
jet_inlining_policy(@nospecialize(src)) -> source::Any
484504
485-
Implements `Core.Compiler.inlining_policy` for `AbstractAnalyzer`.
505+
`jet_inlining_policy` implements `Core.Compiler.inlining_policy` for `AbstractAnalyzer`.
486506
Since `AbstractAnalyzer` works on `InferenceResult` whose `src` field keeps
487507
[`JETResult`](@ref) or [`JETCachedResult`](@ref), `jet_inlining_policy` bypasses
488508
their wrapped source to `Core.Compiler.default_inlining_policy`.
489509
"""
510+
CC.inlining_policy(::AbstractAnalyzer) = jet_inlining_policy
490511
@inline function jet_inlining_policy(@nospecialize(src))
491512
if isa(src, JETResult)
492513
src = get_source(src)
@@ -495,7 +516,7 @@ their wrapped source to `Core.Compiler.default_inlining_policy`.
495516
end
496517
return default_inlining_policy(src)
497518
end
498-
CC.inlining_policy(::AbstractAnalyzer) = jet_inlining_policy
519+
end # @static if isdefined(Compiler, :is_stmt_inline)
499520

500521
# AbstractAnalyzer
501522
# ----------------

0 commit comments

Comments
 (0)