diff --git a/Makefile b/Makefile index 5846f65ee5fb0..c7ac7258e6120 100644 --- a/Makefile +++ b/Makefile @@ -206,7 +206,7 @@ define sysimg_builder $$(build_private_libdir)/sys$1-o.a $$(build_private_libdir)/sys$1-bc.a : $$(build_private_libdir)/sys$1-%.a : $$(build_private_libdir)/sys.ji @$$(call PRINT_JULIA, cd $$(JULIAHOME)/base && \ if ! $$(call spawn,$3) $2 -C "$$(JULIA_CPU_TARGET)" --output-$$* $$(call cygpath_w,$$@).tmp $$(JULIA_SYSIMG_BUILD_FLAGS) \ - --startup-file=no --warn-overwrite=yes --sysimage $$(call cygpath_w,$$<) $$(call cygpath_w,$$(JULIAHOME)/contrib/generate_precompile.jl) $$(call cygpath_w,$$<); then \ + --startup-file=no --warn-overwrite=yes --sysimage $$(call cygpath_w,$$<) -e nothing; then \ echo '*** This error is usually fixed by running `make clean`. If the error persists$$(COMMA) try `make cleanall`. ***'; \ false; \ fi ) diff --git a/base/options.jl b/base/options.jl index 0abf2d55fd866..4561d29965176 100644 --- a/base/options.jl +++ b/base/options.jl @@ -26,7 +26,6 @@ struct JLOptions warn_overwrite::Int8 can_inline::Int8 polly::Int8 - trace_compile::Int8 fast_math::Int8 worker::Int8 cookie::Ptr{UInt8} diff --git a/base/precompile.jl b/base/precompile.jl new file mode 100644 index 0000000000000..715c376774ca6 --- /dev/null +++ b/base/precompile.jl @@ -0,0 +1,746 @@ +# This file is a part of Julia. License is MIT: https://julialang.org/license + +# Steps to regenerate this file: +# 1. Remove all `precompile` calls +# 2. Rebuild system image +# 3. Enable TRACE_COMPILE in options.h and rebuild +# 4. Run `./julia 2> precompiles.txt` and do various things. +# 5. Run `./julia contrib/fixup_precompile.jl precompiles.txt to overwrite `precompile.jl` +# or ./julia contrib/fixup_precompile.jl --merge precompiles.txt to merge into existing +# `precompile.jl` + +let +PrecompileStagingArea = Module() +for (_pkgid, _mod) in Base.loaded_modules + if !(_pkgid.name in ("Main", "Core", "Base")) + @eval PrecompileStagingArea $(Symbol(_mod)) = $_mod + end +end +@eval PrecompileStagingArea begin +precompile(Tuple{Type{Array{Base.StackTraces.StackFrame, 1}}, UndefInitializer, Int64}) +precompile(Tuple{Type{Array{Union{Nothing, String}, 1}}, UndefInitializer, Int64}) +precompile(Tuple{Type{Base.CoreLogging.LogState}, Logging.ConsoleLogger}) +precompile(Tuple{Type{Base.Dict{Any, Any}}}) +precompile(Tuple{Type{Base.Dict{Any, Int64}}}) +precompile(Tuple{Type{Base.Dict{Char, Any}}}) +precompile(Tuple{Type{Base.Dict{Symbol, Any}}, Base.Pair{Symbol, REPL.LineEdit.Prompt}, Base.Pair{Symbol, REPL.LineEdit.Prompt}, Base.Pair{Symbol, REPL.LineEdit.Prompt}}) +precompile(Tuple{Type{Base.Dict{Symbol, Any}}, Base.Pair{Symbol, REPL.LineEdit.Prompt}, Vararg{Base.Pair{Symbol, REPL.LineEdit.Prompt}, N} where N}) +precompile(Tuple{Type{Base.Dict{Symbol, Any}}}) +precompile(Tuple{Type{Base.GC_Diff}, Base.GC_Num, Base.GC_Num}) +precompile(Tuple{Type{Base.Generator{I, F} where F where I}, typeof(Base.names), Array{Any, 1}}) +precompile(Tuple{Type{Base.IOContext{IO_t} where IO_t<:IO}, Base.GenericIOBuffer{Array{UInt8, 1}}, Base.IOStream}) +precompile(Tuple{Type{Base.IOContext{IO_t} where IO_t<:IO}, REPL.Terminals.TTYTerminal, Base.Pair{Symbol, Bool}}) +precompile(Tuple{Type{Base.InterpreterIP}, Core.CodeInfo, Ptr{Nothing}}) +precompile(Tuple{Type{Base.IteratorSize}, Array{Any, 1}}) +precompile(Tuple{Type{Base.LinearIndices{N, R} where R<:Tuple{Vararg{Base.AbstractUnitRange{Int64}, N}} where N}, Array{Method, 1}}) +precompile(Tuple{Type{Base.MIME{Symbol("text/plain")}}}) +precompile(Tuple{Type{Base.Multimedia.TextDisplay}, Base.TTY}) +precompile(Tuple{Type{Base.Order.Perm{O, V} where V<:(AbstractArray{T, 1} where T) where O<:Base.Order.Ordering}, Base.Order.ForwardOrdering, Array{Tuple{Float64, Int64}, 1}}) +precompile(Tuple{Type{Base.Pair{A, B} where B where A}, Base.PkgId, UInt64}) +precompile(Tuple{Type{Base.Pair{A, B} where B where A}, Int64, Int64}) +precompile(Tuple{Type{Base.PkgId}, String}) +precompile(Tuple{Type{Base.StackTraces.StackFrame}, Symbol, Symbol, Int64, Core.CodeInfo, Bool, Bool, Int64}) +precompile(Tuple{Type{Base.StackTraces.StackFrame}, Symbol, Symbol, Int64, Core.MethodInstance, Bool, Bool, Ptr{Nothing}}) +precompile(Tuple{Type{Base.StackTraces.StackFrame}, Symbol, Symbol, Int64, Nothing, Bool, Bool, Ptr{Nothing}}) +precompile(Tuple{Type{Base.SubString{T} where T<:AbstractString}, String, Int64}) +precompile(Tuple{Type{Base.Val{2}}}) +precompile(Tuple{Type{Base.Val{3}}}) +precompile(Tuple{Type{Logging.ConsoleLogger}, Base.IOStream}) +precompile(Tuple{Type{Logging.ConsoleLogger}, Base.TTY}) +precompile(Tuple{Type{Markdown.Header{1}}, Array{Any, 1}}) +precompile(Tuple{Type{Markdown.MD}, Markdown.MD, Markdown.MD}) +precompile(Tuple{Type{NamedTuple{(), T} where T<:Tuple}, Tuple{}}) +precompile(Tuple{Type{NamedTuple{(:bold, :color), Tuple{Bool, Symbol}}}, Tuple{Bool, Symbol}}) +precompile(Tuple{Type{NamedTuple{(:bold, :color), T} where T<:Tuple}, Tuple{Bool, Symbol}}) +precompile(Tuple{Type{NamedTuple{(:create,), T} where T<:Tuple}, Tuple{Bool}}) +precompile(Tuple{Type{NamedTuple{(:merge,), T} where T<:Tuple}, Tuple{Bool}}) +precompile(Tuple{Type{NamedTuple{(:prompt_prefix, :prompt_suffix, :complete, :sticky), Tuple{String, String, Pkg.REPLMode.PkgCompletionProvider, Bool}}}, Tuple{String, String, Pkg.REPLMode.PkgCompletionProvider, Bool}}) +precompile(Tuple{Type{NamedTuple{(:prompt_prefix, :prompt_suffix, :complete, :sticky), T} where T<:Tuple}, Tuple{String, String, Pkg.REPLMode.PkgCompletionProvider, Bool}}) +precompile(Tuple{Type{NamedTuple{(:prompt_prefix, :prompt_suffix, :repl, :complete, :on_enter), Tuple{String, typeof(Base.input_color), REPL.LineEditREPL, REPL.REPLCompletionProvider, typeof(REPL.return_callback)}}}, Tuple{String, typeof(Base.input_color), REPL.LineEditREPL, REPL.REPLCompletionProvider, typeof(REPL.return_callback)}}) +precompile(Tuple{Type{NamedTuple{(:prompt_prefix, :prompt_suffix, :repl, :complete, :on_enter), T} where T<:Tuple}, Tuple{String, typeof(Base.input_color), REPL.LineEditREPL, REPL.REPLCompletionProvider, typeof(REPL.return_callback)}}) +precompile(Tuple{Type{NamedTuple{(:stderr,), Tuple{Base.IOStream}}}, Tuple{Base.IOStream}}) +precompile(Tuple{Type{REPL.LineEditREPL}, REPL.Terminals.TTYTerminal, Bool, Bool}) +precompile(Tuple{Type{REPL.LineEditREPL}, REPL.Terminals.TTYTerminal, Bool, String, String, String, String, String, Bool, Bool, Bool, Bool}) +precompile(Tuple{Type{REPL.REPLDisplay{R} where R<:REPL.AbstractREPL}, REPL.LineEditREPL}) +precompile(Tuple{Type{REPL.Terminals.TTYTerminal}, String, Base.PipeEndpoint, Base.TTY, Base.IOStream}) +precompile(Tuple{Type{REPL.Terminals.TTYTerminal}, String, Base.TTY, Base.TTY, Base.IOStream}) +precompile(Tuple{Type{REPL.Terminals.TTYTerminal}, String, Base.TTY, Base.TTY, Base.TTY}) +precompile(Tuple{Type{String}, Array{UInt8, 1}}) +precompile(Tuple{Type{UInt32}, UInt8}) +precompile(Tuple{Type{UnionAll}, TypeVar, Any}) +precompile(Tuple{getfield(Base, Symbol("#@time")), LineNumberNode, Module, Expr}) +precompile(Tuple{getfield(Base, Symbol("#kw##_spawn")), NamedTuple{(:chain,), Tuple{Nothing}}, typeof(Base._spawn), Base.Cmd, Tuple{Base.Pipe, Base.TTY, Base.IOStream}}) +precompile(Tuple{getfield(Base, Symbol("#kw##pipeline")), NamedTuple{(:stderr,), Tuple{Base.IOStream}}, typeof(Base.pipeline), Base.Cmd}) +precompile(Tuple{getfield(Base, Symbol("#kw##printstyled")), NamedTuple{(:bold, :color), Tuple{Bool, Symbol}}, typeof(Base.printstyled), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String, String}) +precompile(Tuple{getfield(Base, Symbol("#kw##printstyled")), NamedTuple{(:bold, :color), Tuple{Bool, Symbol}}, typeof(Base.printstyled), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String}) +precompile(Tuple{getfield(Base, Symbol("#kw##printstyled")), NamedTuple{(:bold, :color), Tuple{Bool, Symbol}}, typeof(Base.printstyled), REPL.Terminals.TTYTerminal, String}) +precompile(Tuple{getfield(Base, Symbol("#kw##printstyled")), NamedTuple{(:color,), Tuple{Symbol}}, typeof(Base.printstyled), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String}) +precompile(Tuple{getfield(Base, Symbol("#kw##show_trace_entry")), NamedTuple{(:prefix,), Tuple{String}}, typeof(Base.show_trace_entry), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.StackTraces.StackFrame, Int64}) +precompile(Tuple{getfield(Base, Symbol("#kw##sort!")), NamedTuple{(:by,), Tuple{typeof(REPL.REPLCompletions.completion_text)}}, typeof(Base.sort!), Array{REPL.REPLCompletions.Completion, 1}}) +precompile(Tuple{getfield(Base, Symbol("#kw##with_output_color")), NamedTuple{(:bold,), Tuple{Bool}}, typeof(Base.with_output_color), typeof(Base.print), Symbol, Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String, String}) +precompile(Tuple{getfield(Base.Cartesian, Symbol("#@ncall")), LineNumberNode, Module, Int64, Symbol, Symbol, Expr}) +precompile(Tuple{getfield(Base.Cartesian, Symbol("#@nexprs")), LineNumberNode, Module, Int64, Expr}) +precompile(Tuple{getfield(Base.Meta, Symbol("#kw##parse")), NamedTuple{(:raise, :depwarn), Tuple{Bool, Bool}}, typeof(Base.Meta.parse), String, Int64}) +precompile(Tuple{getfield(Core, Symbol("#@doc")), LineNumberNode, Module, Symbol}) +precompile(Tuple{getfield(Core, Symbol("#kw#Type")), NamedTuple{(:prompt_prefix, :prompt_suffix, :complete, :sticky), Tuple{String, String, Pkg.REPLMode.PkgCompletionProvider, Bool}}, Type{REPL.LineEdit.Prompt}, typeof(Pkg.REPLMode.promptf)}) +precompile(Tuple{getfield(Core, Symbol("#kw#Type")), NamedTuple{(:prompt_prefix, :prompt_suffix, :repl, :complete, :on_enter), Tuple{String, typeof(Base.input_color), REPL.LineEditREPL, REPL.REPLCompletionProvider, typeof(REPL.return_callback)}}, Type{REPL.LineEdit.Prompt}, String}) +precompile(Tuple{getfield(REPL, Symbol("#@repl")), LineNumberNode, Module, Base.TTY, Symbol}) +precompile(Tuple{getfield(REPL, Symbol("#kw##printmatches")), NamedTuple{(:cols,), Tuple{Int64}}, typeof(REPL.printmatches), Base.TTY, String, Array{String, 1}}) +precompile(Tuple{getfield(REPL.LineEdit, Symbol("#kw##add_nested_key!")), NamedTuple{(:override,), Tuple{Bool}}, typeof(REPL.LineEdit.add_nested_key!), Base.Dict{Char, Any}, Char, Function}) +precompile(Tuple{getfield(REPL.LineEdit, Symbol("#kw##refresh_multi_line")), NamedTuple{(:beeping,), Tuple{Bool}}, typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TTYTerminal, REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(Base.:(!=)), Char, Char}) +precompile(Tuple{typeof(Base.:(!=)), Int64, Int64}) +precompile(Tuple{typeof(Base.:(!=)), Int8, Int64}) +precompile(Tuple{typeof(Base.:(!=)), Nothing, Nothing}) +precompile(Tuple{typeof(Base.:(!=)), REPL.LineEdit.Prompt, Nothing}) +precompile(Tuple{typeof(Base.:(!=)), String, Nothing}) +precompile(Tuple{typeof(Base.:(!=)), String, String}) +precompile(Tuple{typeof(Base.:(!=)), UInt8, UInt8}) +precompile(Tuple{typeof(Base.:(*)), Base.SubString{String}, String}) +precompile(Tuple{typeof(Base.:(+)), Int64, Bool}) +precompile(Tuple{typeof(Base.:(<<)), UInt32, Int64}) +precompile(Tuple{typeof(Base.:(<=)), Int64, Int64}) +precompile(Tuple{typeof(Base.:(==)), Base.Multimedia.TextDisplay, REPL.REPLDisplay{REPL.LineEditREPL}}) +precompile(Tuple{typeof(Base.:(==)), Int8, Int64}) +precompile(Tuple{typeof(Base.:(==)), Module, Module}) +precompile(Tuple{typeof(Base.:(==)), Nothing, String}) +precompile(Tuple{typeof(Base.:(==)), REPL.REPLDisplay{REPL.LineEditREPL}, REPL.REPLDisplay{REPL.LineEditREPL}}) +precompile(Tuple{typeof(Base.:(>)), UInt64, Int64}) +precompile(Tuple{typeof(Base.:(^)), Char, Int64}) +precompile(Tuple{typeof(Base.:(|>)), Array{Any, 1}, typeof(Base.unique)}) +precompile(Tuple{typeof(Base.:(|>)), Array{Any, 1}, typeof(REPL.filtervalid)}) +precompile(Tuple{typeof(Base.CoreLogging.global_logger), Logging.ConsoleLogger}) +precompile(Tuple{typeof(Base.CoreLogging.global_logger)}) +precompile(Tuple{typeof(Base.CoreLogging.logmsg_shim), Int64, String, Nothing, Symbol, Symbol, Symbol, Int64, Array{Any, 1}}) +precompile(Tuple{typeof(Base.Docs.catdoc), Markdown.MD, Markdown.MD}) +precompile(Tuple{typeof(Base.Docs.doc), Base.Docs.Binding, Type{Union{}}}) +precompile(Tuple{typeof(Base.Docs.doc), Base.Docs.Binding}) +precompile(Tuple{typeof(Base.Docs.docm), LineNumberNode, Module, Symbol}) +precompile(Tuple{typeof(Base.Docs.formatdoc), Base.GenericIOBuffer{Array{UInt8, 1}}, Base.Docs.DocStr, String}) +precompile(Tuple{typeof(Base.Filesystem.basename), String}) +precompile(Tuple{typeof(Base.Filesystem.isdir), String}) +precompile(Tuple{typeof(Base.Filesystem.pwd)}) +precompile(Tuple{typeof(Base.Filesystem.splitdir), String}) +precompile(Tuple{typeof(Base.Filesystem.splitext), String}) +precompile(Tuple{typeof(Base.Meta.isexpr), Symbol, Symbol, Int64}) +precompile(Tuple{typeof(Base.Meta.parse), String}) +precompile(Tuple{typeof(Base.Multimedia.display), Int64}) +precompile(Tuple{typeof(Base.Multimedia.display), Markdown.MD}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, Array{Float64, 1}}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, Array{Float64, 2}}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, Array{Int64, 1}}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, Float64}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, Int64}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, Markdown.MD}) +precompile(Tuple{typeof(Base.Multimedia.display), REPL.REPLDisplay{REPL.LineEditREPL}, String}) +precompile(Tuple{typeof(Base.Multimedia.pushdisplay), REPL.REPLDisplay{REPL.LineEditREPL}}) +precompile(Tuple{typeof(Base.Order.ord), typeof(Base.isless), typeof(Base.identity), Nothing, Base.Order.ForwardOrdering}) +precompile(Tuple{typeof(Base.Printf.decode_dec), Base.TTY, Float64, String, Int64, Int64, Char}) +precompile(Tuple{typeof(Base.StackTraces.lookup), Base.InterpreterIP}) +precompile(Tuple{typeof(Base.Unicode.textwidth), String}) +precompile(Tuple{typeof(Base.__atreplinit), REPL.LineEditREPL}) +precompile(Tuple{typeof(Base.__precompile__)}) +precompile(Tuple{typeof(Base._atexit)}) +precompile(Tuple{typeof(Base._compute_eltype), Type{Tuple{Int64, String}}}) +precompile(Tuple{typeof(Base._iterate), Base.Dict{Symbol, Any}, Int64}) +precompile(Tuple{typeof(Base._promote_typejoin), Type{Int64}, Type{String}}) +precompile(Tuple{typeof(Base._promote_typejoin), Type{Nothing}, Type{String}}) +precompile(Tuple{typeof(Base._promote_typejoin), Type{Union{}}, Type{Int64}}) +precompile(Tuple{typeof(Base._reformat_bt), Array{Ptr{Nothing}, 1}, Array{Any, 1}}) +precompile(Tuple{typeof(Base._similar_for), Array{Any, 1}, Type{String}, Base.Generator{Array{Any, 1}, typeof(Base.string)}, Base.HasShape{1}}) +precompile(Tuple{typeof(Base._similar_for), Array{Base.Docs.DocStr, 1}, Type{Markdown.MD}, Base.Generator{Array{Base.Docs.DocStr, 1}, typeof(Base.Docs.parsedoc)}, Base.HasShape{1}}) +precompile(Tuple{typeof(Base._similar_for), Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}, Type{Array{Base.StackTraces.StackFrame, 1}}, Base.Generator{Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}, typeof(Base.StackTraces.lookup)}, Base.HasShape{1}}) +precompile(Tuple{typeof(Base._spawn), Base.CmdRedirect, Tuple{Base.Pipe, Base.TTY, Base.IOStream}}) +precompile(Tuple{typeof(Base._start)}) +precompile(Tuple{typeof(Base._typed_vcat), Type{Any}, Tuple{Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{String, 1}}}) +precompile(Tuple{typeof(Base._uv_hook_close), Base.PipeEndpoint}) +precompile(Tuple{typeof(Base._uv_hook_close), Base.Process}) +precompile(Tuple{typeof(Base._uv_hook_close), Base.Timer}) +precompile(Tuple{typeof(Base.alignment), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Float64, 1}, Base.OneTo{Int64}, Base.OneTo{Int64}, Int64, Int64, Int64}) +precompile(Tuple{typeof(Base.alignment), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Float64, 2}, Base.OneTo{Int64}, Base.OneTo{Int64}, Int64, Int64, Int64}) +precompile(Tuple{typeof(Base.alignment), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Int64, 1}, Base.OneTo{Int64}, Base.OneTo{Int64}, Int64, Int64, Int64}) +precompile(Tuple{typeof(Base.alloc_buf_hook), Base.PipeEndpoint, UInt64}) +precompile(Tuple{typeof(Base.alloc_buf_hook), Base.TTY, UInt64}) +precompile(Tuple{typeof(Base.append!), Array{String, 1}, Array{String, 1}}) +precompile(Tuple{typeof(Base.arg_gen), Base.Cmd}) +precompile(Tuple{typeof(Base.arg_gen), String}) +precompile(Tuple{typeof(Base.axes), Array{Any, 1}}) +precompile(Tuple{typeof(Base.bytesavailable), Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.catch_backtrace)}) +precompile(Tuple{typeof(Base.check_open), Base.TTY}) +precompile(Tuple{typeof(Base.close), Base.Pipe}) +precompile(Tuple{typeof(Base.collect_similar), Array{Any, 1}, Base.Generator{Array{Any, 1}, typeof(Base.names)}}) +precompile(Tuple{typeof(Base.collect_to_with_first!), Array{Array{Base.StackTraces.StackFrame, 1}, 1}, Array{Base.StackTraces.StackFrame, 1}, Base.Generator{Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}, typeof(Base.StackTraces.lookup)}, Int64}) +precompile(Tuple{typeof(Base.collect_to_with_first!), Array{Markdown.MD, 1}, Markdown.MD, Base.Generator{Array{Base.Docs.DocStr, 1}, typeof(Base.Docs.parsedoc)}, Int64}) +precompile(Tuple{typeof(Base.collect_to_with_first!), Array{String, 1}, String, Base.Generator{Array{Any, 1}, typeof(Base.string)}, Int64}) +precompile(Tuple{typeof(Base.collect_to_with_first!), Array{String, 1}, String, Base.Generator{Array{REPL.REPLCompletions.Completion, 1}, typeof(REPL.REPLCompletions.completion_text)}, Int64}) +precompile(Tuple{typeof(Base.convert), Type{Array{String, 1}}, Array{Any, 1}}) +precompile(Tuple{typeof(Base.convert), Type{Base.Dict{Char, V} where V}, Base.Dict{Char, Any}}) +precompile(Tuple{typeof(Base.convert), Type{Base.Dict{K, V} where V where K}, Base.Dict{String, Any}}) +precompile(Tuple{typeof(Base.convert), Type{Base.GenericIOBuffer{Array{UInt8, 1}}}, Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.convert), Type{Bool}, Bool}) +precompile(Tuple{typeof(Base.convert), Type{Int64}, Int64}) +precompile(Tuple{typeof(Base.convert), Type{Ptr{Nothing}}, Ptr{Nothing}}) +precompile(Tuple{typeof(Base.convert), Type{Ptr{Nothing}}, Ptr{UInt8}}) +precompile(Tuple{typeof(Base.convert), Type{REPL.LineEdit.InputAreaState}, REPL.LineEdit.InputAreaState}) +precompile(Tuple{typeof(Base.convert), Type{REPL.LineEdit.MIState}, REPL.LineEdit.MIState}) +precompile(Tuple{typeof(Base.convert), Type{REPL.LineEdit.Prompt}, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.convert), Type{Union{Base.UUID, Bool}}, Bool}) +precompile(Tuple{typeof(Base.convert), Type{Union{Function, String}}, String}) +precompile(Tuple{typeof(Base.convert), Type{Union{Nothing, REPL.LineEdit.Prompt}}, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.convert), Type{Union{Nothing, Type{T} where T}}, Nothing}) +precompile(Tuple{typeof(Base.copy), Array{Any, 1}}) +precompile(Tuple{typeof(Base.copy), Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.copymutable), Array{String, 1}}) +precompile(Tuple{typeof(Base.copyto!), Array{Union{Nothing, String}, 1}, Int64, Array{Nothing, 1}, Int64, Int64}) +precompile(Tuple{typeof(Base.delete!), Base.Set{Any}, Char}) +precompile(Tuple{typeof(Base.diff_names), Tuple{Symbol, Symbol, Symbol, Symbol, Symbol}, Tuple{Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol}}) +precompile(Tuple{typeof(Base.diff_names), Tuple{Symbol, Symbol, Symbol}, Tuple{Symbol, Symbol, Symbol, Symbol, Symbol}}) +precompile(Tuple{typeof(Base.diff_names), Tuple{Symbol}, Tuple{Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol}}) +precompile(Tuple{typeof(Base.diff_names), Tuple{Symbol}, Tuple{Symbol}}) +precompile(Tuple{typeof(Base.display_error), REPL.Terminals.TTYTerminal, ErrorException, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.display_error), REPL.Terminals.TTYTerminal, MethodError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.display_error), REPL.Terminals.TTYTerminal, UndefVarError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.displaysize), Base.IOStream}) +precompile(Tuple{typeof(Base.displaysize), Base.TTY}) +precompile(Tuple{typeof(Base.displaysize), REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(Base.divrem), Int64, Int64}) +precompile(Tuple{typeof(Base.eachline), String}) +precompile(Tuple{typeof(Base.empty!), Array{Base.Pair{Base.PkgId, UInt64}, 1}}) +precompile(Tuple{typeof(Base.ensure_rescheduled), Task}) +precompile(Tuple{typeof(Base.eof), Base.PipeEndpoint}) +precompile(Tuple{typeof(Base.eof), Base.TTY}) +precompile(Tuple{typeof(Base.error), String}) +precompile(Tuple{typeof(Base.findlast), String, String}) +precompile(Tuple{typeof(Base.findprev), Base.Fix2{typeof(Base.in), Array{Char, 1}}, String, Int64}) +precompile(Tuple{typeof(Base.findprev), String, String, Int64}) +precompile(Tuple{typeof(Base.first), Base.OneTo{Int64}}) +precompile(Tuple{typeof(Base.first), Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.firstindex), String}) +precompile(Tuple{typeof(Base.flush), Base.IOStream}) +precompile(Tuple{typeof(Base.gc_alloc_count), Base.GC_Diff}) +precompile(Tuple{typeof(Base.gc_num)}) +precompile(Tuple{typeof(Base.get), Base.Dict{Char, Any}, Char, Nothing}) +precompile(Tuple{typeof(Base.getindex), Array{AbstractString, 1}, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.getindex), Array{AbstractString, 1}, Int64}) +precompile(Tuple{typeof(Base.getindex), Array{Any, 1}, Int32}) +precompile(Tuple{typeof(Base.getindex), Array{Int32, 1}, UInt64}) +precompile(Tuple{typeof(Base.getindex), Array{String, 1}, Int64}) +precompile(Tuple{typeof(Base.getindex), Array{UInt8, 1}, Int64}) +precompile(Tuple{typeof(Base.getindex), Base.Dict{Any, Any}, Char}) +precompile(Tuple{typeof(Base.getindex), Base.Dict{String, Any}, String}) +precompile(Tuple{typeof(Base.getindex), Base.Dict{Symbol, Any}, Symbol}) +precompile(Tuple{typeof(Base.getindex), Core.SimpleVector, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.getindex), String, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.getindex), Tuple{Base.GenericIOBuffer{Array{UInt8, 1}}, Int64}, Int64}) +precompile(Tuple{typeof(Base.getindex), Tuple{Base.StackTraces.StackFrame, Int64}, Int64}) +precompile(Tuple{typeof(Base.getindex), Tuple{Int64, Int64}, Int64}) +precompile(Tuple{typeof(Base.getindex), Tuple{Symbol, Symbol, Symbol}, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.getindex), Tuple{Symbol}, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.getindex), Tuple{Symbol}, Int64}) +precompile(Tuple{typeof(Base.getproperty), Base.CoreLogging.LogState, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Base.GC_Diff, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Base.GenericIOBuffer{Array{UInt8, 1}}, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Base.Process, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Base.StackTraces.StackFrame, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Core.CodeInfo, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Core.LineInfoNode, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Core.MethodTable, Symbol}) +precompile(Tuple{typeof(Base.getproperty), Method, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.HistoryPrompt, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.ModalInterface, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.PrefixHistoryPrompt, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.PrefixSearchState, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.Prompt, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.PromptState, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEdit.SearchState, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.LineEditREPL, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.Options, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.REPLHistoryProvider, Symbol}) +precompile(Tuple{typeof(Base.getproperty), REPL.Terminals.TTYTerminal, Symbol}) +precompile(Tuple{typeof(Base.haskey), Base.Dict{String, Any}, String}) +precompile(Tuple{typeof(Base.haskey), Base.Dict{Symbol, Any}, Symbol}) +precompile(Tuple{typeof(Base.haskey), Base.Dict{Symbol, Function}, Symbol}) +precompile(Tuple{typeof(Base.haskey), Base.IdDict{Any, Any}, Base.Docs.Binding}) +precompile(Tuple{typeof(Base.hvcat), Tuple{Int64, Int64}, Float64, Float64, Float64, Float64}) +precompile(Tuple{typeof(Base.identity), Char}) +precompile(Tuple{typeof(Base.in), Char, Tuple{Char, Char, Char}}) +precompile(Tuple{typeof(Base.in), String, Base.Set{Any}}) +precompile(Tuple{typeof(Base.in), String, Tuple{String, String}}) +precompile(Tuple{typeof(Base.in), Symbol, Base.Set{Any}}) +precompile(Tuple{typeof(Base.incomplete_tag), Symbol}) +precompile(Tuple{typeof(Base.indexed_iterate), Base.Pair{String, String}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Base.Pair{String, String}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{ArgumentError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{ArgumentError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Float64, 1}, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Float64, 1}, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Float64, 2}, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Float64, 2}, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Int64, 1}, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{Int64, 1}, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{String, 1}, String, Bool}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Array{String, 1}, String, Bool}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Base.GenericIOBuffer{Array{UInt8, 1}}, Bool, Bool}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Base.GenericIOBuffer{Array{UInt8, 1}}, Bool, Bool}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Base.StackTraces.StackFrame, Int64}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Base.StackTraces.StackFrame, Int64}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{ErrorException, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{ErrorException, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Expr, Int64}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Expr, Int64}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Float64, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Float64, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Int64, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Int64, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Markdown.MD, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Markdown.MD, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{MethodError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{MethodError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Nothing, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Nothing, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{String, Nothing}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{String, Nothing}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Symbol, String, String}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{Symbol, String, String}, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{UndefVarError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64, Int64}) +precompile(Tuple{typeof(Base.indexed_iterate), Tuple{UndefVarError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}, Int64}) +precompile(Tuple{typeof(Base.init_stdio), Ptr{Nothing}}) +precompile(Tuple{typeof(Base.isempty), Array{Base.Docs.DocStr, 1}}) +precompile(Tuple{typeof(Base.isempty), Array{String, 1}}) +precompile(Tuple{typeof(Base.isempty), Core.SimpleVector}) +precompile(Tuple{typeof(Base.isempty), NamedTuple{(), Tuple{}}}) +precompile(Tuple{typeof(Base.isempty), Nothing}) +precompile(Tuple{typeof(Base.isempty), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(Base.isempty), String}) +precompile(Tuple{typeof(Base.isequal), REPL.LineEdit.Prompt, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.isequal), String, Symbol}) +precompile(Tuple{typeof(Base.issingletontype), Type{Base.Regex}}) +precompile(Tuple{typeof(Base.iterate), Array{AbstractString, 1}, Int64}) +precompile(Tuple{typeof(Base.iterate), Array{AbstractString, 1}}) +precompile(Tuple{typeof(Base.iterate), Array{Base.StackTraces.StackFrame, 1}, Int64}) +precompile(Tuple{typeof(Base.iterate), Array{Base.StackTraces.StackFrame, 1}}) +precompile(Tuple{typeof(Base.iterate), Array{REPL.LineEdit.TextInterface, 1}, Int64}) +precompile(Tuple{typeof(Base.iterate), Array{REPL.LineEdit.TextInterface, 1}}) +precompile(Tuple{typeof(Base.iterate), Base.Dict{String, String}, Int64}) +precompile(Tuple{typeof(Base.iterate), Base.Dict{String, String}}) +precompile(Tuple{typeof(Base.iterate), Base.OneTo{Int64}, Int64}) +precompile(Tuple{typeof(Base.iterate), Base.OneTo{Int64}}) +precompile(Tuple{typeof(Base.iterate), Nothing}) +precompile(Tuple{typeof(Base.iterate), Tuple{Int64, Int64}, Int64}) +precompile(Tuple{typeof(Base.iterate), Tuple{Int64, Int64}}) +precompile(Tuple{typeof(Base.last), Base.OneTo{Int64}}) +precompile(Tuple{typeof(Base.lastindex), Array{AbstractString, 1}}) +precompile(Tuple{typeof(Base.lastindex), Array{String, 1}}) +precompile(Tuple{typeof(Base.lastindex), Core.SimpleVector}) +precompile(Tuple{typeof(Base.lastindex), String}) +precompile(Tuple{typeof(Base.lastindex), Tuple{Symbol}}) +precompile(Tuple{typeof(Base.leading_ones), UInt8}) +precompile(Tuple{typeof(Base.length), Array{AbstractString, 1}}) +precompile(Tuple{typeof(Base.length), Array{Int32, 1}}) +precompile(Tuple{typeof(Base.length), Array{Symbol, 1}}) +precompile(Tuple{typeof(Base.length), Tuple{DataType, DataType}}) +precompile(Tuple{typeof(Base.map), typeof(Base.names), Array{Any, 1}}) +precompile(Tuple{typeof(Base.merge), Base.Dict{String, Any}, Base.Dict{String, Any}}) +precompile(Tuple{typeof(Base.merge), NamedTuple{(), Tuple{}}, NamedTuple{(), Tuple{}}}) +precompile(Tuple{typeof(Base.min), Int64, Int64}) +precompile(Tuple{typeof(Base.nextind), String, Int64}) +precompile(Tuple{typeof(Base.occursin), Base.Regex, Base.SubString{String}}) +precompile(Tuple{typeof(Base.occursin), String, String}) +precompile(Tuple{typeof(Base.open), Base.CmdRedirect, String, Base.TTY}) +precompile(Tuple{typeof(Base.open), String, String}) +precompile(Tuple{typeof(Base.poptask)}) +precompile(Tuple{typeof(Base.position), Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.precompilableerror), LoadError, Bool}) +precompile(Tuple{typeof(Base.preserve_handle), Base.Timer}) +precompile(Tuple{typeof(Base.prevind), String, Int64}) +precompile(Tuple{typeof(Base.print), Base.GenericIOBuffer{Array{UInt8, 1}}, Base.UUID}) +precompile(Tuple{typeof(Base.print), Base.GenericIOBuffer{Array{UInt8, 1}}, String, Base.SubString{String}, String}) +precompile(Tuple{typeof(Base.print), Base.GenericIOBuffer{Array{UInt8, 1}}, String, String, String, String, String, String, String}) +precompile(Tuple{typeof(Base.print), Base.GenericIOBuffer{Array{UInt8, 1}}, Type{Int64}}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Base.SubString{String}}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Char, String, String}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Char}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Module, String, Symbol}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String, String}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String, Symbol, String, Int32}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String, Symbol}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String}) +precompile(Tuple{typeof(Base.print), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Symbol}) +precompile(Tuple{typeof(Base.print), Base.IOContext{REPL.Terminals.TTYTerminal}, Char, String, String}) +precompile(Tuple{typeof(Base.print), Base.IOContext{REPL.Terminals.TTYTerminal}, Char}) +precompile(Tuple{typeof(Base.print), Base.IOContext{REPL.Terminals.TTYTerminal}, String, String, String, String}) +precompile(Tuple{typeof(Base.print), Base.IOContext{REPL.Terminals.TTYTerminal}, String, Type{Module}}) +precompile(Tuple{typeof(Base.print), Base.IOContext{REPL.Terminals.TTYTerminal}, String}) +precompile(Tuple{typeof(Base.print), Base.IOContext{REPL.Terminals.TTYTerminal}, Type{Module}}) +precompile(Tuple{typeof(Base.print), Base.IOStream, Char}) +precompile(Tuple{typeof(Base.print), Base.IOStream, String}) +precompile(Tuple{typeof(Base.print), Base.TTY, Char}) +precompile(Tuple{typeof(Base.print), Base.TTY, String}) +precompile(Tuple{typeof(Base.print), REPL.Terminals.TTYTerminal, String}) +precompile(Tuple{typeof(Base.print_matrix_row), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Float64, 1}, Array{Tuple{Int64, Int64}, 1}, Int64, Base.OneTo{Int64}, String}) +precompile(Tuple{typeof(Base.print_matrix_row), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Float64, 2}, Array{Tuple{Int64, Int64}, 1}, Int64, Base.OneTo{Int64}, String}) +precompile(Tuple{typeof(Base.print_matrix_row), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Int64, 1}, Array{Tuple{Int64, Int64}, 1}, Int64, Base.OneTo{Int64}, String}) +precompile(Tuple{typeof(Base.print_to_string), Type{Any}}) +precompile(Tuple{typeof(Base.println), Base.TTY}) +precompile(Tuple{typeof(Base.println), REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(Base.println), String}) +precompile(Tuple{typeof(Base.promote_eltype), Array{Symbol, 1}, Array{String, 1}}) +precompile(Tuple{typeof(Base.promote_eltype), Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{String, 1}}) +precompile(Tuple{typeof(Base.push!), Array{Base.Docs.DocStr, 1}, Base.Docs.DocStr}) +precompile(Tuple{typeof(Base.push!), Array{Base.Docs.MultiDoc, 1}, Base.Docs.MultiDoc}) +precompile(Tuple{typeof(Base.push!), Array{Base.Pair{Base.PkgId, UInt64}, 1}, Base.Pair{Base.PkgId, UInt64}}) +precompile(Tuple{typeof(Base.push!), Array{Char, 1}, Char}) +precompile(Tuple{typeof(Base.push!), Array{Symbol, 1}, Symbol}) +precompile(Tuple{typeof(Base.push!), Array{Tuple{String, Int64}, 1}, Tuple{String, Int64}}) +precompile(Tuple{typeof(Base.push!), Base.Set{Any}, Char}) +precompile(Tuple{typeof(Base.push!), Base.Set{Any}, Tuple{Module, String, Float64}}) +precompile(Tuple{typeof(Base.push!), Base.Set{REPL.REPLCompletions.Completion}, REPL.REPLCompletions.PackageCompletion}) +precompile(Tuple{typeof(Base.push!), Base.Set{String}, Base.SubString{String}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{ArgumentError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Array{Float64, 1}, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Array{Float64, 2}, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Array{Int64, 1}, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{ErrorException, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Float64, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Int64, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Markdown.MD, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{MethodError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{Nothing, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{String, Nothing}}) +precompile(Tuple{typeof(Base.put!), Base.Channel{Any}, Tuple{UndefVarError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}}) +precompile(Tuple{typeof(Base.rand), Int64, Int64}) +precompile(Tuple{typeof(Base.rand), Int64}) +precompile(Tuple{typeof(Base.rand), Random.RandomDevice, Type{UInt32}, Int64}) +precompile(Tuple{typeof(Base.rand)}) +precompile(Tuple{typeof(Base.read!), Base.GenericIOBuffer{Array{UInt8, 1}}, Array{UInt8, 1}}) +precompile(Tuple{typeof(Base.read), Base.TTY, Type{UInt8}}) +precompile(Tuple{typeof(Base.readuntil), Base.PipeEndpoint, Char}) +precompile(Tuple{typeof(Base.readuntil), Base.TTY, String}) +precompile(Tuple{typeof(Base.readuntil), REPL.Terminals.TTYTerminal, String}) +precompile(Tuple{typeof(Base.reinterpret), Type{Char}, UInt32}) +precompile(Tuple{typeof(Base.replace), Base.SubString{String}, Base.Pair{Base.Regex, String}}) +precompile(Tuple{typeof(Base.resize!), Array{Tuple{String, Int64}, 1}, Int64}) +precompile(Tuple{typeof(Base.rethrow)}) +precompile(Tuple{typeof(Base.seek), Base.GenericIOBuffer{Array{UInt8, 1}}, Int64}) +precompile(Tuple{typeof(Base.setindex!), Array{Any, 1}, Array{String, 1}, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.setindex!), Array{Any, 1}, Array{Symbol, 1}, Base.UnitRange{Int64}}) +precompile(Tuple{typeof(Base.setindex!), Array{Base.StackTraces.StackFrame, 1}, Base.StackTraces.StackFrame, Int64}) +precompile(Tuple{typeof(Base.setindex!), Array{Method, 1}, Method, Int64}) +precompile(Tuple{typeof(Base.setindex!), Array{String, 1}, String, Int64}) +precompile(Tuple{typeof(Base.setindex!), Array{Symbol, 1}, Symbol, Int64}) +precompile(Tuple{typeof(Base.setindex!), Array{Union{Nothing, String}, 1}, String, Int64}) +precompile(Tuple{typeof(Base.setindex!), Base.Dict{Any, Any}, Char, Char}) +precompile(Tuple{typeof(Base.setindex!), Base.Dict{Any, Any}, Char, String}) +precompile(Tuple{typeof(Base.setindex!), Base.Dict{Any, Any}, Module, Symbol}) +precompile(Tuple{typeof(Base.setindex!), Base.Dict{Any, Any}, Type{Union{}}, Symbol}) +precompile(Tuple{typeof(Base.setindex!), Base.Dict{Symbol, Any}, REPL.LineEdit.Prompt, Symbol}) +precompile(Tuple{typeof(Base.setindex!), Base.RefValue{Bool}, Bool}) +precompile(Tuple{typeof(Base.setproperty!), Base.Iterators.Stateful{Tuple{String, String}, Any}, Symbol, Tuple{String, Int64}}) +precompile(Tuple{typeof(Base.setproperty!), Base.Process, Symbol, Ptr{Nothing}}) +precompile(Tuple{typeof(Base.setproperty!), Base.Process, Symbol, Symbol}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.MIState, Symbol, Symbol}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PrefixHistoryPrompt, Symbol, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PrefixSearchState, Symbol, Int64}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PrefixSearchState, Symbol, REPL.LineEdit.MIState}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PrefixSearchState, Symbol, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PrefixSearchState, Symbol, String}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.Prompt, Symbol, Base.Dict{Char, Any}}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PromptState, Symbol, Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.PromptState, Symbol, REPL.LineEdit.InputAreaState}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.SearchState, Symbol, Bool}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEdit.SearchState, Symbol, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.setproperty!), REPL.LineEditREPL, Symbol, Bool}) +precompile(Tuple{typeof(Base.setproperty!), REPL.REPLHistoryProvider, Symbol, Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.setproperty!), REPL.REPLHistoryProvider, Symbol, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Base.show), Base.GenericIOBuffer{Array{UInt8, 1}}, Array{String, 1}}) +precompile(Tuple{typeof(Base.show), Base.GenericIOBuffer{Array{UInt8, 1}}, String}) +precompile(Tuple{typeof(Base.show), Base.GenericIOBuffer{Array{UInt8, 1}}, Type{Any}}) +precompile(Tuple{typeof(Base.show), Base.GenericIOBuffer{Array{UInt8, 1}}, UInt64}) +precompile(Tuple{typeof(Base.show), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Array{Any, 1}}) +precompile(Tuple{typeof(Base.show), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Int64}) +precompile(Tuple{typeof(Base.show), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String}) +precompile(Tuple{typeof(Base.show), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, typeof(OldPkg.dir)}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, Array{Float64, 1}}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, Array{Float64, 2}}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, Array{Int64, 1}}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, Float64}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, Int64}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, Markdown.MD}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Base.MIME{Symbol("text/plain")}, String}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Int64}) +precompile(Tuple{typeof(Base.show), Base.IOContext{REPL.Terminals.TTYTerminal}, Type{Module}}) +precompile(Tuple{typeof(Base.show_datatype), Base.IOContext{REPL.Terminals.TTYTerminal}, Type{Module}}) +precompile(Tuple{typeof(Base.show_tuple_as_call), Base.IOContext{REPL.Terminals.TTYTerminal}, Symbol, Type{Tuple{typeof(Base.require), Module, Symbol}}}) +precompile(Tuple{typeof(Base.showerror), Base.IOContext{REPL.Terminals.TTYTerminal}, ArgumentError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.showerror), Base.IOContext{REPL.Terminals.TTYTerminal}, ErrorException, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.showerror), Base.IOContext{REPL.Terminals.TTYTerminal}, MethodError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.showerror), Base.IOContext{REPL.Terminals.TTYTerminal}, UndefVarError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}}) +precompile(Tuple{typeof(Base.similar), Array{Any, 1}, Type{Nothing}, Tuple{Base.OneTo{Int64}}}) +precompile(Tuple{typeof(Base.similar), Array{Base.Docs.DocStr, 1}, Type{Markdown.MD}, Tuple{Base.OneTo{Int64}}}) +precompile(Tuple{typeof(Base.similar), Array{REPL.REPLCompletions.Completion, 1}, Type{String}, Tuple{Base.OneTo{Int64}}}) +precompile(Tuple{typeof(Base.similar), Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}, Type{Array{Base.StackTraces.StackFrame, 1}}, Tuple{Base.OneTo{Int64}}}) +precompile(Tuple{typeof(Base.similar), Type{Array{Method, N} where N}, Tuple{Base.OneTo{Int64}}}) +precompile(Tuple{typeof(Base.sizeof), String}) +precompile(Tuple{typeof(Base.skip_deleted_floor!), Base.Dict{Symbol, Any}}) +precompile(Tuple{typeof(Base.sort!), Array{Int64, 1}, Base.Sort.QuickSortAlg, Base.Order.Perm{Base.Order.ForwardOrdering, Array{Tuple{Float64, Int64}, 1}}}) +precompile(Tuple{typeof(Base.start), Nothing}) +precompile(Tuple{typeof(Base.startswith), Base.SubString{String}, String}) +precompile(Tuple{typeof(Base.startswith), String, Char}) +precompile(Tuple{typeof(Base.stream_wait), Base.Timer, Base.Condition}) +precompile(Tuple{typeof(Base.string), String, Nothing, String, String, String, Int64}) +precompile(Tuple{typeof(Base.string), String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, Base.VersionNumber, String, String, String, String, String, String, String, String, String, String, String, String, String, String}) +precompile(Tuple{typeof(Base.string), String, Type{Int64}}) +precompile(Tuple{typeof(Base.string), Type{Any}}) +precompile(Tuple{typeof(Base.strip), String}) +precompile(Tuple{typeof(Base.take!), Base.Channel{Any}}) +precompile(Tuple{typeof(Base.take!), Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(Base.task_done_hook), Task}) +precompile(Tuple{typeof(Base.time_print), UInt64, Int64, Int64, Int64}) +precompile(Tuple{typeof(Base.truncate), Base.GenericIOBuffer{Array{UInt8, 1}}, Int64}) +precompile(Tuple{typeof(Base.try_yieldto), typeof(Base.ensure_rescheduled), Base.RefValue{Task}}) +precompile(Tuple{typeof(Base.tuple_type_head), Type{Tuple{Vararg{Int64, N}} where N}}) +precompile(Tuple{typeof(Base.tuple_type_tail), Type{Tuple{Vararg{Int64, N}} where N}}) +precompile(Tuple{typeof(Base.typed_vcat), Type{Any}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{String, 1}}) +precompile(Tuple{typeof(Base.typeinfo_eltype), Type{Any}}) +precompile(Tuple{typeof(Base.typesof), Int64, Int64}) +precompile(Tuple{typeof(Base.unique), Array{Any, 1}}) +precompile(Tuple{typeof(Base.unlock), Base.Threads.RecursiveTatasLock}) +precompile(Tuple{typeof(Base.unpreserve_handle), Base.Timer}) +precompile(Tuple{typeof(Base.unsafe_convert), Type{Ptr{Int64}}, Base.Threads.Atomic{Int64}}) +precompile(Tuple{typeof(Base.unsafe_convert), Type{Ptr{Nothing}}, Ptr{Nothing}}) +precompile(Tuple{typeof(Base.unsafe_convert), Type{Ptr{UInt64}}, Base.Threads.Atomic{UInt64}}) +precompile(Tuple{typeof(Base.unsafe_write), Base.Pipe, Ptr{UInt8}, UInt64}) +precompile(Tuple{typeof(Base.unsafe_write), Base.TTY, Ptr{UInt8}, Int32}) +precompile(Tuple{typeof(Base.unsafe_write), Base.TTY, Ptr{UInt8}, UInt64}) +precompile(Tuple{typeof(Base.uvfinalize), Base.PipeEndpoint}) +precompile(Tuple{typeof(Base.uvfinalize), Base.Process}) +precompile(Tuple{typeof(Base.uvfinalize), Base.TTY}) +precompile(Tuple{typeof(Base.uvfinalize), Base.Timer}) +precompile(Tuple{typeof(Base.vcat), Array{Any, 1}, String, String}) +precompile(Tuple{typeof(Base.vcat), Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}, Array{Base.StackTraces.StackFrame, 1}}) +precompile(Tuple{typeof(Base.vcat), Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{Symbol, 1}, Array{String, 1}}) +precompile(Tuple{typeof(Base.vcat), Markdown.MD, Markdown.MD}) +precompile(Tuple{typeof(Base.vcat), Markdown.MD}) +precompile(Tuple{typeof(Base.vect), Symbol, Vararg{Symbol, N} where N}) +precompile(Tuple{typeof(Base.wait), Base.Condition}) +precompile(Tuple{typeof(Base.wait), Base.Timer}) +precompile(Tuple{typeof(Base.wait)}) +precompile(Tuple{typeof(Base.write), Base.GenericIOBuffer{Array{UInt8, 1}}, String}) +precompile(Tuple{typeof(Base.write), Base.IOStream, Array{UInt8, 1}}) +precompile(Tuple{typeof(Base.write), Base.Pipe, String}) +precompile(Tuple{typeof(Base.write), Base.Process, String}) +precompile(Tuple{typeof(Base.write), Base.TTY, Char}) +precompile(Tuple{typeof(Base.write), Base.TTY, String}) +precompile(Tuple{typeof(Base.write), Base.TTY, UInt8}) +precompile(Tuple{typeof(Base.write), REPL.Terminals.TTYTerminal, String}) +precompile(Tuple{typeof(Base.write), REPL.Terminals.TerminalBuffer, Base.Missing}) +precompile(Tuple{typeof(Base.write), REPL.Terminals.TerminalBuffer, String}) +precompile(Tuple{typeof(Core.Compiler.:(!=)), Type{Any}, Core.Compiler.Const}) +precompile(Tuple{typeof(Core.Compiler.getindex), Array{DataType, 1}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Array{Bool, 0}}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Array{String, 1}}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Broadcast.DefaultArrayStyle{0}, typeof(Base.identity), Int64}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Colon}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.Multimedia.display)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.__atreplinit)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.display_error)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.show)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(REPL.helpmode)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Base.Val{1}, Union}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Char, Char}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Core.Compiler.IndexLinear, Array{Bool, 0}}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Nothing, Nothing}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Nothing, typeof(Base.replace), Nothing}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{QuoteNode, Int64}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{String, Int64}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Symbol, Bool}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{Symbol, GlobalRef}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.:(*)), Int64}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.Multimedia.display), Int64}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.convert), Int64}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.convert), typeof(Base.getindex), typeof(Base.setindex!)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.getindex), typeof(Base.setindex!)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.open_flags)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Tuple{typeof(Base.setindex!)}, Int64}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Core.SSAValue, Char, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Core.SSAValue, Core.Compiler.Argument, Core.Compiler.Argument, Core.SSAValue, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Core.SSAValue, Core.SSAValue, Int64, Core.SSAValue, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Core.SSAValue, Core.SSAValue, String, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Core.SSAValue, Int64, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Core.SSAValue, UInt8, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, Tuple{Symbol}, Tuple{Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol}}) +precompile(Tuple{typeof(Core.Compiler.getindex), Type{Any}, getfield(Markdown, Symbol("#kw##print_wrapped")), Core.SSAValue, Core.SSAValue, Core.SSAValue, Core.Compiler.Argument, Core.SSAValue}) +precompile(Tuple{typeof(Core.Compiler.instanceof_tfunc), Any}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Array{Bool, 0}}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Array{String, 1}}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Broadcast.DefaultArrayStyle{0}, typeof(Base.identity), Int64}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Colon}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.Multimedia.display)}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.__atreplinit)}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.display_error)}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(Base.show)}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, typeof(Base.invokelatest), typeof(REPL.helpmode)}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Base.Val{1}, Union}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Char, Char}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Core.Compiler.IndexLinear, Array{Bool, 0}}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Nothing, Nothing}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Nothing, typeof(Base.replace), Nothing}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Symbol, Bool}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{Symbol, GlobalRef}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{typeof(Base.:(*)), Int64}}) +precompile(Tuple{typeof(Core.Compiler.length), Tuple{typeof(Base.open_flags)}}) +precompile(Tuple{typeof(Core.Compiler.rewrap_unionall), Any, Any}) +precompile(Tuple{typeof(Core.Compiler.vect), Type{typeof(typeassert)}}) +precompile(Tuple{typeof(Distributed.flush_gc_msgs), Distributed.Worker}) +precompile(Tuple{typeof(Distributed.flush_gc_msgs)}) +precompile(Tuple{typeof(Distributed.terminate_all_workers)}) +precompile(Tuple{typeof(LibGit2.ensure_initialized)}) +precompile(Tuple{typeof(LibGit2.initialize)}) +precompile(Tuple{typeof(Logging.__init__)}) +precompile(Tuple{typeof(Logging.default_metafmt), Base.CoreLogging.LogLevel, Module, Symbol, Symbol, String, Int64}) +precompile(Tuple{typeof(Logging.default_metafmt), Base.CoreLogging.LogLevel, Nothing, Symbol, Symbol, String, Int64}) +precompile(Tuple{typeof(Markdown.ansi_length), Base.SubString{String}}) +precompile(Tuple{typeof(Markdown.ansi_length), String}) +precompile(Tuple{typeof(Markdown.footnote_link), Base.GenericIOBuffer{Array{UInt8, 1}}, Markdown.MD}) +precompile(Tuple{typeof(Markdown.link), Base.GenericIOBuffer{Array{UInt8, 1}}, Markdown.MD}) +precompile(Tuple{typeof(Markdown.term), Base.IOContext{REPL.Terminals.TTYTerminal}, Markdown.Code, Int64}) +precompile(Tuple{typeof(Markdown.term), Base.IOContext{REPL.Terminals.TTYTerminal}, Markdown.Header{1}, Int64}) +precompile(Tuple{typeof(Markdown.term), Base.IOContext{REPL.Terminals.TTYTerminal}, Markdown.HorizontalRule, Int64}) +precompile(Tuple{typeof(Markdown.term), Base.IOContext{REPL.Terminals.TTYTerminal}, Markdown.MD, Int64}) +precompile(Tuple{typeof(Markdown.term), Base.IOContext{REPL.Terminals.TTYTerminal}, Markdown.Paragraph, Int64}) +precompile(Tuple{typeof(Markdown.terminline), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Array{Any, 1}}) +precompile(Tuple{typeof(Markdown.terminline), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Markdown.Code}) +precompile(Tuple{typeof(Markdown.terminline), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Markdown.Link}) +precompile(Tuple{typeof(Markdown.terminline), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, String}) +precompile(Tuple{typeof(Markdown.terminline_string), Base.IOContext{Base.GenericIOBuffer{Array{UInt8, 1}}}, Array{Any, 1}}) +precompile(Tuple{typeof(Markdown.terminline_string), Base.IOContext{REPL.Terminals.TTYTerminal}, Array{Any, 1}}) +precompile(Tuple{typeof(OldPkg.dir)}) +precompile(Tuple{typeof(Pkg.REPLMode.create_mode), REPL.LineEditREPL, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(Pkg.REPLMode.repl_init), REPL.LineEditREPL}) +precompile(Tuple{typeof(REPL.LineEdit.accept_result), REPL.LineEdit.MIState, REPL.LineEdit.PrefixHistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.activate), REPL.LineEdit.HistoryPrompt, REPL.LineEdit.SearchState, REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.activate), REPL.LineEdit.PrefixHistoryPrompt, REPL.LineEdit.PrefixSearchState, REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.activate), REPL.LineEdit.Prompt, REPL.LineEdit.MIState, REPL.Terminals.TTYTerminal, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.activate), REPL.LineEdit.Prompt, REPL.LineEdit.PromptState, REPL.Terminals.TTYTerminal, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.activate), REPL.LineEdit.Prompt, REPL.LineEdit.PromptState, REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.activate_region), REPL.LineEdit.MIState, Symbol}) +precompile(Tuple{typeof(REPL.LineEdit.buffer), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.buffer), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.cancel_beep), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.cancel_beep), REPL.LineEdit.PrefixSearchState}) +precompile(Tuple{typeof(REPL.LineEdit.cancel_beep), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.cancel_beep), REPL.LineEdit.SearchState}) +precompile(Tuple{typeof(REPL.LineEdit.commit_changes), REPL.Terminals.TTYTerminal, REPL.Terminals.TerminalBuffer}) +precompile(Tuple{typeof(REPL.LineEdit.common_prefix), Array{String, 1}}) +precompile(Tuple{typeof(REPL.LineEdit.complete_line), REPL.LineEdit.PromptState, Int64}) +precompile(Tuple{typeof(REPL.LineEdit.complete_line), REPL.REPLCompletionProvider, REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.deactivate), REPL.LineEdit.HistoryPrompt, REPL.LineEdit.SearchState, REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.deactivate), REPL.LineEdit.PrefixHistoryPrompt, REPL.LineEdit.PrefixSearchState, REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.deactivate), REPL.LineEdit.Prompt, REPL.LineEdit.PromptState, REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.LineEdit.deactivate_region), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.deactivate_region), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.default_enter_cb), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.edit_abort), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.edit_backspace), REPL.LineEdit.PromptState, Bool, Bool}) +precompile(Tuple{typeof(REPL.LineEdit.edit_delete), Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(REPL.LineEdit.edit_delete), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.edit_insert), Base.GenericIOBuffer{Array{UInt8, 1}}, Base.SubString{String}}) +precompile(Tuple{typeof(REPL.LineEdit.edit_splice!), REPL.LineEdit.PromptState, Base.Pair{Int64, Int64}, String}) +precompile(Tuple{typeof(REPL.LineEdit.eval), Module, Expr}) +precompile(Tuple{typeof(REPL.LineEdit.history_next_prefix), REPL.LineEdit.PrefixSearchState, REPL.REPLHistoryProvider, String}) +precompile(Tuple{typeof(REPL.LineEdit.history_prev_prefix), REPL.LineEdit.PrefixSearchState, REPL.REPLHistoryProvider, String}) +precompile(Tuple{typeof(REPL.LineEdit.init_state), REPL.Terminals.TTYTerminal, REPL.LineEdit.HistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.init_state), REPL.Terminals.TTYTerminal, REPL.LineEdit.ModalInterface}) +precompile(Tuple{typeof(REPL.LineEdit.init_state), REPL.Terminals.TTYTerminal, REPL.LineEdit.PrefixHistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.is_region_active), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.keymap), REPL.LineEdit.PrefixSearchState, REPL.LineEdit.PrefixHistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.keymap), REPL.LineEdit.SearchState, REPL.LineEdit.HistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.keymap_data), REPL.LineEdit.PrefixSearchState, REPL.LineEdit.PrefixHistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.keymap_data), REPL.LineEdit.SearchState, REPL.LineEdit.HistoryPrompt}) +precompile(Tuple{typeof(REPL.LineEdit.match_input), Base.Dict{Char, Any}, REPL.LineEdit.MIState, Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(REPL.LineEdit.match_input), Base.Dict{Char, Any}, REPL.LineEdit.MIState, REPL.Terminals.TTYTerminal, Array{Char, 1}, Base.Dict{Char, Any}}) +precompile(Tuple{typeof(REPL.LineEdit.match_input), Base.Dict{Char, Any}, REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.match_input), Function, REPL.LineEdit.MIState, REPL.Terminals.TTYTerminal, Array{Char, 1}, Base.Dict{Char, Any}}) +precompile(Tuple{typeof(REPL.LineEdit.mode), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.options), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.options), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.pop_undo), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.prompt_string), typeof(Base.input_color)}) +precompile(Tuple{typeof(REPL.LineEdit.push_undo), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TTYTerminal, REPL.LineEdit.PrefixSearchState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TTYTerminal, REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TTYTerminal, REPL.LineEdit.SearchState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal, Base.GenericIOBuffer{Array{UInt8, 1}}, REPL.LineEdit.InputAreaState, String}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal, REPL.LineEdit.PrefixSearchState}) +precompile(Tuple{typeof(REPL.LineEdit.refresh_multi_line), REPL.Terminals.TerminalBuffer, REPL.Terminals.TTYTerminal, REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.region_active), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.replace_line), REPL.LineEdit.MIState, String}) +precompile(Tuple{typeof(REPL.LineEdit.replace_line), REPL.LineEdit.PromptState, Base.GenericIOBuffer{Array{UInt8, 1}}}) +precompile(Tuple{typeof(REPL.LineEdit.reset_state), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.reset_state), REPL.LineEdit.PrefixSearchState}) +precompile(Tuple{typeof(REPL.LineEdit.reset_state), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.reset_state), REPL.LineEdit.SearchState}) +precompile(Tuple{typeof(REPL.LineEdit.reset_state), REPL.REPLHistoryProvider}) +precompile(Tuple{typeof(REPL.LineEdit.run_interface), REPL.Terminals.TTYTerminal, REPL.LineEdit.ModalInterface, REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.set_action!), REPL.LineEdit.MIState, Symbol}) +precompile(Tuple{typeof(REPL.LineEdit.setmark), REPL.LineEdit.MIState, Bool}) +precompile(Tuple{typeof(REPL.LineEdit.setup_prefix_keymap), REPL.REPLHistoryProvider, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(REPL.LineEdit.setup_search_keymap), REPL.REPLHistoryProvider}) +precompile(Tuple{typeof(REPL.LineEdit.show_completions), REPL.LineEdit.PromptState, Array{String, 1}}) +precompile(Tuple{typeof(REPL.LineEdit.terminal), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.LineEdit.terminal), REPL.LineEdit.PrefixSearchState}) +precompile(Tuple{typeof(REPL.LineEdit.terminal), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.LineEdit.terminal), REPL.LineEdit.SearchState}) +precompile(Tuple{typeof(REPL.REPLCompletions.completion_text), REPL.REPLCompletions.PackageCompletion}) +precompile(Tuple{typeof(REPL.REPLCompletions.completions), String, Int64, Module}) +precompile(Tuple{typeof(REPL.REPLCompletions.get_type), Symbol, Module}) +precompile(Tuple{typeof(REPL.REPLCompletions.get_value), Symbol, Module}) +precompile(Tuple{typeof(REPL.Terminals.beep), REPL.LineEdit.MIState}) +precompile(Tuple{typeof(REPL.Terminals.beep), REPL.LineEdit.PromptState, Float64, Float64, Float64}) +precompile(Tuple{typeof(REPL.Terminals.beep), REPL.LineEdit.SearchState}) +precompile(Tuple{typeof(REPL.Terminals.cmove_col), REPL.Terminals.TTYTerminal, Int64}) +precompile(Tuple{typeof(REPL.Terminals.cmove_down), REPL.Terminals.TTYTerminal, Int64}) +precompile(Tuple{typeof(REPL.Terminals.hascolor), REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.Terminals.width), REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(Base.banner), REPL.Terminals.TTYTerminal}) +precompile(Tuple{typeof(REPL.ends_with_semicolon), String}) +precompile(Tuple{typeof(REPL.eval), Module, Expr}) +precompile(Tuple{typeof(REPL.eval), Module, String}) +precompile(Tuple{typeof(REPL.eval_user_input), Any, REPL.REPLBackend}) +precompile(Tuple{typeof(REPL.eval_user_input), Expr, REPL.REPLBackend}) +precompile(Tuple{typeof(REPL.filtervalid), Array{Any, 1}}) +precompile(Tuple{typeof(REPL.fuzzysort), String, Array{String, 1}}) +precompile(Tuple{typeof(REPL.helpmode), Base.TTY, String}) +precompile(Tuple{typeof(REPL.helpmode), String}) +precompile(Tuple{typeof(REPL.hist_from_file), REPL.REPLHistoryProvider, Base.IOStream, String}) +precompile(Tuple{typeof(REPL.insert_hlines), Base.TTY, Markdown.MD}) +precompile(Tuple{typeof(REPL.lookup_doc), Symbol}) +precompile(Tuple{typeof(REPL.mode_idx), REPL.REPLHistoryProvider, REPL.LineEdit.Prompt}) +precompile(Tuple{typeof(REPL.prepare_next), REPL.LineEditREPL}) +precompile(Tuple{typeof(REPL.print_response), REPL.LineEditREPL, ArgumentError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}, Bool, Bool}) +precompile(Tuple{typeof(REPL.print_response), REPL.LineEditREPL, Markdown.MD, Nothing, Bool, Bool}) +precompile(Tuple{typeof(REPL.print_response), REPL.Terminals.TTYTerminal, ArgumentError, Array{Union{Ptr{Nothing}, Base.InterpreterIP}, 1}, Bool, Bool, Nothing}) +precompile(Tuple{typeof(REPL.print_response), REPL.Terminals.TTYTerminal, Markdown.MD, Nothing, Bool, Bool, Nothing}) +precompile(Tuple{typeof(REPL.repl), Base.TTY, Symbol}) +precompile(Tuple{typeof(REPL.repl_latex), Base.TTY, String}) +precompile(Tuple{typeof(REPL.repl_search), Base.TTY, String}) +precompile(Tuple{typeof(REPL.reset), REPL.LineEditREPL}) +precompile(Tuple{typeof(REPL.return_callback), REPL.LineEdit.PromptState}) +precompile(Tuple{typeof(REPL.run_repl), REPL.LineEditREPL, typeof(x->nothing)}) +precompile(Tuple{typeof(REPL.send_to_backend), Expr, Base.Channel{Any}, Base.Channel{Any}}) +precompile(Tuple{typeof(REPL.send_to_backend), Expr, REPL.REPLBackendRef}) +precompile(Tuple{typeof(REPL.send_to_backend), String, Base.Channel{Any}, Base.Channel{Any}}) +precompile(Tuple{typeof(REPL.send_to_backend), String, REPL.REPLBackendRef}) +precompile(Tuple{typeof(REPL.send_to_backend), Symbol, Base.Channel{Any}, Base.Channel{Any}}) +precompile(Tuple{typeof(REPL.send_to_backend), Symbol, REPL.REPLBackendRef}) +precompile(Tuple{typeof(REPL.setup_interface), REPL.LineEditREPL, Bool, Array{Base.Dict{Any, Any}, 1}}) +precompile(Tuple{typeof(REPL.setup_interface), REPL.LineEditREPL, Bool, Base.Dict{Any, Any}}) +precompile(Tuple{typeof(REPL.setup_interface), REPL.LineEditREPL}) +precompile(Tuple{typeof(REPL.start_repl_backend), Base.Channel{Any}, Base.Channel{Any}}) +precompile(Tuple{typeof(Random.__init__)}) +precompile(Tuple{typeof(eval), Module, Expr}) +end +end diff --git a/base/sysimg.jl b/base/sysimg.jl index a5633d51ed222..e3ac5f39e44bc 100644 --- a/base/sysimg.jl +++ b/base/sysimg.jl @@ -522,9 +522,9 @@ let :SuiteSparse, :Distributed, :SharedArrays, + :Pkg, :Test, :REPL, - :Pkg, :Statistics, ] @@ -922,9 +922,11 @@ Base.init_load_path() # want to be able to find external packages in userimg.jl let tot_time_userimg = @elapsed (Base.isfile("userimg.jl") && Base.include(Main, "userimg.jl")) +tot_time_precompile = Base.is_primary_base_module ? (@elapsed Base.include(Base, "precompile.jl")) : 0.0 + tot_time_base = (Base.end_base_include - Base.start_base_include) * 10.0^(-9) -tot_time = tot_time_base + Base.tot_time_stdlib[] + tot_time_userimg +tot_time = tot_time_base + Base.tot_time_stdlib[] + tot_time_userimg + tot_time_precompile println("Sysimage built. Summary:") print("Total ─────── "); Base.time_print(tot_time * 10^9); print(" \n"); @@ -933,6 +935,7 @@ print("Stdlibs: ──── "); Base.time_print(Base.tot_time_stdlib[] * 10^9); if isfile("userimg.jl") print("Userimg: ──── "); Base.time_print(tot_time_userimg * 10^9); print(" "); show(IOContext(stdout, :compact=>true), (tot_time_userimg / tot_time) * 100); println("%") end +print("Precompile: ─ "); Base.time_print(tot_time_precompile * 10^9); print(" "); show(IOContext(stdout, :compact=>true), (tot_time_precompile / tot_time) * 100); println("%") end empty!(LOAD_PATH) diff --git a/contrib/add_license_to_files.jl b/contrib/add_license_to_files.jl index b2c731ea2a4e4..1aa05af96e452 100644 --- a/contrib/add_license_to_files.jl +++ b/contrib/add_license_to_files.jl @@ -30,6 +30,7 @@ const excludedirs = [ const skipfiles = [ "../contrib/add_license_to_files.jl", + "../contrib/fixup_precompile.jl", # files to check - already copyright # see: https://github.com/JuliaLang/julia/pull/11073#issuecomment-98099389 "../base/special/trig.jl", diff --git a/contrib/fixup_precompile.jl b/contrib/fixup_precompile.jl new file mode 100644 index 0000000000000..f1139a68e9bbe --- /dev/null +++ b/contrib/fixup_precompile.jl @@ -0,0 +1,70 @@ +# This file is a part of Julia. License is MIT: https://julialang.org/license + +function needs_USE_GPL_LIBS(s::String) + occursin("CHOLMOD", s) && return true + return false +end + +const HEADER = """ +# This file is a part of Julia. License is MIT: https://julialang.org/license + +# Steps to regenerate this file: +# 1. Remove all `precompile` calls +# 2. Rebuild system image +# 3. Enable TRACE_COMPILE in options.h and rebuild +# 4. Run `./julia 2> precompiles.txt` and do various things. +# 5. Run `./julia contrib/fixup_precompile.jl precompiles.txt to overwrite `precompile.jl` +# or ./julia contrib/fixup_precompile.jl --merge precompiles.txt to merge into existing +# `precompile.jl` +""" + +function fixup_precompile(new_precompile_file; merge=false) + old_precompile_file = joinpath(Sys.BINDIR, "..", "..", "base", "precompile.jl") + precompile_statements = Set{String}() + + for file in [new_precompile_file; merge ? old_precompile_file : []] + for line in eachline(file) + line = strip(line) + # filter out closures, which might have different generated names in different environments + occursin(r"#[0-9]", line) && continue + # Other stuff than precompile statements might have been written to STDERR + startswith(line, "precompile(Tuple{") || continue + # Ok, add the line + push!(precompile_statements, line) + end + end + + open(old_precompile_file, "w") do f + println(f, HEADER) + println(f, """ + let + PrecompileStagingArea = Module() + for (_pkgid, _mod) in Base.loaded_modules + if !(_pkgid.name in ("Main", "Core", "Base")) + @eval PrecompileStagingArea \$(Symbol(_mod)) = \$_mod + end + end + @eval PrecompileStagingArea begin""") + for statement in sort(collect(precompile_statements)) + isgpl = needs_USE_GPL_LIBS(statement) + isgpl && print(f, "if Base.USE_GPL_LIBS\n ") + println(f, statement) + isgpl && println(f, "end") + end + println(f, "end\nend") + end + if merge + "Merged $new_precompile_file into $old_precompile_file" + else + "Overwrite $old_precompile_file with $new_precompile_file" + end +end + +if length(ARGS) == 1 + fixup_precompile(joinpath(pwd(), ARGS[1])) +elseif length(ARGS) == 2 + @assert ARGS[1] == "--merge" + fixup_precompile(joinpath(pwd(), ARGS[2]); merge = true) +else + error("invalid arguments") +end diff --git a/contrib/generate_precompile.jl b/contrib/generate_precompile.jl deleted file mode 100644 index 7536424ea913e..0000000000000 --- a/contrib/generate_precompile.jl +++ /dev/null @@ -1,139 +0,0 @@ -# Prevent this from being put into the Main namespace -Base.reinit_stdio() -let -M = Module() -@eval M begin -julia_cmd() = (julia = joinpath(Sys.BINDIR, Base.julia_exename()); `$julia`) - -function generate_precompilable_package(path, pkgname) - mkpath(joinpath(path, pkgname, "src")) - write(joinpath(path, pkgname, "src", "$pkgname.jl"), - """ - __precompile__() - module $pkgname - end - """) -end - -function generate_precompile_statements() - t = time() - println("Generating precompile statements...") - println("──────────────────────────────────────") - - # Reset code loading vars - push!(LOAD_PATH, "@stdlib") - - tmpd = mktempdir() - push!(DEPOT_PATH, tmpd) - push!(LOAD_PATH, tmpd) - pkgname = "__PackagePrecompilationStatementModule" - generate_precompilable_package(tmpd, pkgname) - @eval using __PackagePrecompilationStatementModule - pop!(LOAD_PATH) - pop!(DEPOT_PATH) - rm(tmpd; recursive=true) - - if isempty(ARGS) - sysimg = joinpath(dirname(Sys.BINDIR), "lib", "julia", "sys.ji") - else - sysimg = ARGS[1] - end - - tmp = tempname() - touch(tmp) - have_repl = haskey(Base.loaded_modules, - Base.PkgId(Base.UUID("3fa0cd96-eef1-5676-8a61-b3b8758bbffb"), "REPL")) - if have_repl - # Have a REPL, run the repl replayer and an interactive session that we immidiately kill - setup = """ - include($(repr(joinpath(@__DIR__, "precompile_replay.jl")))) - @async while true - sleep(0.05) - if isdefined(Base, :active_repl) - exit(0) - end - end - """ - # Do not redirect stdin unless it is to a tty, because that changes code paths - ok = try - run(pipeline(`$(julia_cmd()) --sysimage $sysimg --trace-compile=yes -O0 - --startup-file=no --q -e $setup -i`; stderr=tmp)) - true - catch - false - end - else - # No REPL, just record the startup - ok = try - run(pipeline(`$(julia_cmd()) --sysimage $sysimg --trace-compile=yes -O0 - --startup-file=no --q -e0`; stderr=tmp)) - true - catch - false - end - end - - s = read(tmp, String) - if !ok - error("precompilation process failed, stderr is:\n$s") - end - new_precompiles = Set{String}() - for statement in split(s, '\n') - startswith(statement, "precompile(Tuple{") || continue - # Replace the FakeTerminal with a TTYTerminal and filter out everything we compiled in Main - statement = replace(statement, "FakeTerminals.FakeTerminal" => "REPL.Terminals.TTYTerminal") - (occursin(r"Main.", statement) || occursin(r"FakeTerminals.", statement)) && continue - # AppVeyor CI emits a single faulty precompile statement: - # precompile(Tuple{getfield(precompile(Tuple{typeof(Base.uvfinalize), Base.PipeEndpoint}) - # which lacks the correct closing brackets. - # Filter out such lines here. - for (l, r) in ('(' => ')', '{' => '}') - if count(isequal(l), statement) != count(isequal(r), statement) - continue - end - push!(new_precompiles, statement) - end - end - - PrecompileStagingArea = Module() - for (_pkgid, _mod) in Base.loaded_modules - if !(_pkgid.name in ("Main", "Core", "Base")) - eval(PrecompileStagingArea, :($(Symbol(_mod)) = $_mod)) - end - end - # Load the precompile statements - Base.include_string(PrecompileStagingArea, join(collect(new_precompiles), '\n')) - - # Add a few manual things, run `julia` with `--trace-compile` to find these. - if have_repl - @eval PrecompileStagingArea begin - # Could startup with REPL banner instead but it is a bit visually noisy, - # so just precompile it manualally here. - precompile(Tuple{typeof(Base.banner), REPL.Terminals.TTYTerminal}) - - # This is probablably important for precompilation (0.2s precompile time) - # but doesn't seem to get caught in the script above - precompile(Tuple{typeof(Base.create_expr_cache), String, String, Array{Base.Pair{Base.PkgId, UInt64}, 1}, Base.UUID}) - - # Manual things from starting and exiting julia - precompile(Tuple{Type{Logging.ConsoleLogger}, Base.TTY}) - precompile(Tuple{Type{REPL.Terminals.TTYTerminal}, String, Base.TTY, Base.TTY, Base.TTY}) - precompile(Tuple{typeof(Base.displaysize), Base.TTY}) - precompile(Tuple{typeof(REPL.LineEdit.prompt_string), typeof(Base.input_color)}) - precompile(Tuple{typeof(Base.input_color)}) - precompile(Tuple{typeof(Base.eof), Base.TTY}) - precompile(Tuple{typeof(Base.alloc_buf_hook), Base.TTY, UInt64}) - precompile(Tuple{typeof(Base.read), Base.TTY, Type{UInt8}}) - end - end - - println("──────────────────────────────────────") - print("$(length(new_precompiles)) precompile statements generated in "), Base.time_print((time() - t) * 10^9) - println() - return -end - -generate_precompile_statements() - -end # @eval -end # let diff --git a/contrib/precompile_replay.jl b/contrib/precompile_replay.jl deleted file mode 100644 index 8c07688eea548..0000000000000 --- a/contrib/precompile_replay.jl +++ /dev/null @@ -1,73 +0,0 @@ -import REPL -include(joinpath(Sys.STDLIB, "REPL", "test", "FakeTerminals.jl")) -import .FakeTerminals.FakeTerminal - -const CTRL_C = '\x03' -const UP_ARROW = "\e[A" -const DOWN_ARROW = "\e[B" - -# TODO: Have a utility to generate this from a real REPL session? -precompile_script = """ -2+2 -print("") -@time 1+1 -?reinterpret -;pwd -using Ra\t$CTRL_C -\\alpha\t$CTRL_C -\e[200~paste here ;)\e[201~"$CTRL_C -$UP_ARROW$DOWN_ARROW -123\b\b\b$CTRL_C -\b\b -f(x) = x03 -f(1,2) -[][1] -cd("complet_path\t\t$CTRL_C -""" - -function fake_repl(@nospecialize(f)) - input = Pipe() - output = Pipe() - err = Pipe() - Base.link_pipe!(input, reader_supports_async=true, writer_supports_async=true) - Base.link_pipe!(output, reader_supports_async=true, writer_supports_async=true) - Base.link_pipe!(err, reader_supports_async=true, writer_supports_async=true) - - repl = REPL.LineEditREPL(FakeTerminal(input.out, output.in, err.in), true) - - f(input.in, output.out, repl) - t = @async begin - close(input.in) - close(output.in) - close(err.in) - end - #print(read(output.out, String)) - Base._wait(t) - nothing -end - -function run_repl() - # Writing ^C to the repl will cause sigint, so let's not die on that - ccall(:jl_exit_on_sigint, Cvoid, (Cint,), 0) - - fake_repl() do stdin_write, stdout_read, repl - repl.specialdisplay = REPL.REPLDisplay(repl) - repl.history_file = false - - repltask = @async begin - REPL.run_repl(repl) - end - - write(stdin_write, precompile_script) - # Close REPL ^D - write(stdin_write, '\x04') - - readavailable(stdout_read) - - Base._wait(repltask) - end - - ccall(:jl_exit_on_sigint, Cvoid, (Cint,), 1) -end - -run_repl() diff --git a/src/gf.c b/src/gf.c index bb96cd3a721f0..b6b1d450b9eba 100644 --- a/src/gf.c +++ b/src/gf.c @@ -1088,13 +1088,13 @@ static jl_method_instance_t *jl_mt_assoc_by_type(jl_methtable_t *mt, jl_datatype if (entry != NULL) { jl_method_t *m = entry->func.method; if (!jl_has_call_ambiguities((jl_value_t*)tt, m)) { - if (jl_options.trace_compile) { - if (!jl_has_free_typevars((jl_value_t*)tt)) { - jl_printf(JL_STDERR, "precompile("); - jl_static_show(JL_STDERR, (jl_value_t*)tt); - jl_printf(JL_STDERR, ")\n"); - } +#ifdef TRACE_COMPILE + if (!jl_has_free_typevars((jl_value_t*)tt)) { + jl_printf(JL_STDERR, "precompile("); + jl_static_show(JL_STDERR, (jl_value_t*)tt); + jl_printf(JL_STDERR, ")\n"); } +#endif if (!mt_cache) { intptr_t nspec = (mt == jl_type_type_mt ? m->nargs + 1 : mt->max_args + 2); jl_compilation_sig(tt, env, m, nspec, &newparams); diff --git a/src/jloptions.c b/src/jloptions.c index 9d2a30e2d0fa7..147e0b8a28c7f 100644 --- a/src/jloptions.c +++ b/src/jloptions.c @@ -55,11 +55,6 @@ jl_options_t jl_options = { 0, // quiet 0, // method overwrite warning 1, // can_inline JL_OPTIONS_POLLY_ON, // polly -#ifdef TRACE_COMPILE - 1, // trace_compile -#else - 0, // trace_compile -#endif JL_OPTIONS_FAST_MATH_DEFAULT, 0, // worker NULL, // cookie @@ -164,7 +159,6 @@ JL_DLLEXPORT void jl_parse_opts(int *argcp, char ***argvp) opt_warn_overwrite, opt_inline, opt_polly, - opt_trace_compile, opt_math_mode, opt_worker, opt_bind_to, @@ -221,7 +215,6 @@ JL_DLLEXPORT void jl_parse_opts(int *argcp, char ***argvp) { "warn-overwrite", required_argument, 0, opt_warn_overwrite }, { "inline", required_argument, 0, opt_inline }, { "polly", required_argument, 0, opt_polly }, - { "trace-compile", required_argument, 0, opt_trace_compile }, { "math-mode", required_argument, 0, opt_math_mode }, { "handle-signals", required_argument, 0, opt_handle_signals }, // hidden command line options @@ -574,15 +567,6 @@ JL_DLLEXPORT void jl_parse_opts(int *argcp, char ***argvp) jl_errorf("julia: invalid argument to --polly (%s)", optarg); } break; - case opt_trace_compile: - if (!strcmp(optarg,"yes")) - jl_options.trace_compile = 1; - else if (!strcmp(optarg,"no")) - jl_options.trace_compile = 0; - else { - jl_errorf("julia: invalid argument to --trace-compile (%s)", optarg); - } - break; case opt_math_mode: if (!strcmp(optarg,"ieee")) jl_options.fast_math = JL_OPTIONS_FAST_MATH_OFF; diff --git a/src/julia.h b/src/julia.h index a49bd51db1853..98cbcf602f44d 100644 --- a/src/julia.h +++ b/src/julia.h @@ -1799,7 +1799,6 @@ typedef struct { int8_t warn_overwrite; int8_t can_inline; int8_t polly; - int8_t trace_compile; int8_t fast_math; int8_t worker; const char *cookie; diff --git a/stdlib/REPL/src/REPL.jl b/stdlib/REPL/src/REPL.jl index c80579eb56b5f..b260bc109275f 100644 --- a/stdlib/REPL/src/REPL.jl +++ b/stdlib/REPL/src/REPL.jl @@ -185,7 +185,7 @@ struct REPLBackendRef response_channel::Channel end -function run_repl(repl::AbstractREPL, @nospecialize(consumer = x -> nothing)) +function run_repl(repl::AbstractREPL, consumer::Function = x->nothing) repl_channel = Channel(1) response_channel = Channel(1) backend = start_repl_backend(repl_channel, response_channel) diff --git a/test/precompile.jl b/test/precompile.jl index d31ee17589a17..4a79f677bc54b 100644 --- a/test/precompile.jl +++ b/test/precompile.jl @@ -241,12 +241,7 @@ try :Future, :Libdl, :LinearAlgebra, :Logging, :Mmap, :Printf, :Profile, :Random, :Serialization, :SharedArrays, :SparseArrays, :SuiteSparse, :Test, :Unicode, :REPL, :InteractiveUtils, :OldPkg, :Pkg, :LibGit2, :SHA, :UUIDs, :Sockets, - :Statistics, ]), - # Plus precompilation module generated at build time - let id = Base.PkgId("__PackagePrecompilationStatementModule") - Dict(id => Base.module_build_id(Base.root_module(id))) - end - ) + :Statistics, ])) @test discard_module.(deps) == deps1 @test current_task()(0x01, 0x4000, 0x30031234) == 2