@@ -479,14 +479,35 @@ CC.may_compress(analyzer::AbstractAnalyzer) = false
479
479
CC. may_discard_trees (analyzer:: AbstractAnalyzer ) = false
480
480
CC. verbose_stmt_info (analyzer:: AbstractAnalyzer ) = false
481
481
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)`.
482
491
"""
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
484
504
485
- Implements `Core.Compiler.inlining_policy` for `AbstractAnalyzer`.
505
+ `jet_inlining_policy` implements `Core.Compiler.inlining_policy` for `AbstractAnalyzer`.
486
506
Since `AbstractAnalyzer` works on `InferenceResult` whose `src` field keeps
487
507
[`JETResult`](@ref) or [`JETCachedResult`](@ref), `jet_inlining_policy` bypasses
488
508
their wrapped source to `Core.Compiler.default_inlining_policy`.
489
509
"""
510
+ CC. inlining_policy (:: AbstractAnalyzer ) = jet_inlining_policy
490
511
@inline function jet_inlining_policy (@nospecialize (src))
491
512
if isa (src, JETResult)
492
513
src = get_source (src)
@@ -495,7 +516,7 @@ their wrapped source to `Core.Compiler.default_inlining_policy`.
495
516
end
496
517
return default_inlining_policy (src)
497
518
end
498
- CC . inlining_policy ( :: AbstractAnalyzer ) = jet_inlining_policy
519
+ end # @static if isdefined(Compiler, :is_stmt_inline)
499
520
500
521
# AbstractAnalyzer
501
522
# ----------------
0 commit comments