Skip to content

>500x runtime slowdown from hashing changes in #452 #558

@ericphanson

Description

@ericphanson

#452 seems to have regressed runtime in ExplicitImports quite a bit

On the parent commit f425045 I get

julia> using ExplicitImports

julia> @time explicit_imports(ExplicitImports);
  0.196597 seconds (922.30 k allocations: 37.488 MiB, 46.57% gc time, 12.30% compilation time)

julia> @time explicit_imports(ExplicitImports);
  0.076680 seconds (921.33 k allocations: 37.444 MiB)

julia> @time explicit_imports(ExplicitImports);
  0.145795 seconds (921.33 k allocations: 37.444 MiB, 45.09% gc time)

julia> @time explicit_imports(ExplicitImports);
  0.077001 seconds (921.33 k allocations: 37.444 MiB)

on 8a123a1 I get

julia> using ExplicitImports

julia> @time explicit_imports(ExplicitImports);
116.010345 seconds (1.34 G allocations: 25.114 GiB, 0.98% gc time, 0.02% compilation time)

julia> @time explicit_imports(ExplicitImports);
115.139176 seconds (1.34 G allocations: 25.114 GiB, 1.07% gc time)

I used the SIGINFO profiling tool on JuliaSyntax v1.0.2 to see why it was so slow, which is what led me to the hashing and thus that PR. I've included that profile below.

Profiling
julia> print_explicit_imports(ExplicitImports)
load: 3.42  cmd: julia 45867 running 12.07u 0.22s

======================================================================================
Information request received. A stacktrace will print followed by a 1.0 second profile
======================================================================================

signal (29): Information request: 29
__psynch_cvwait at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
__psynch_cvwait at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
__psynch_cvwait at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
__psynch_cvwait at /usr/lib/system/libsystem_kernel.dylib (unknown line)
unknown function (ip: 0x0)
MurmurHash3_x64_128 at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/support/MurmurHash3.c:242
memhash_seed at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/support/hashing.c:74
hash at ./strings/substring.jl:140 [inlined]
hash at ./tuple.jl:583
jfptr_hash_6501 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/source_files.jl:146
hash at ./tuple.jl:583
jfptr_hash_6494 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:53
hash at ./tuple.jl:583 [inlined]
hash at ./tuple.jl:583
jfptr_hash_6498 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583
jfptr_hash_6514 at /Users/eph/.julia/compiled/v1.11/ExplicitImports/kpiVf_oV9rA.dylib (unknown line)
hash at /Users/eph/.julia/packages/JuliaSyntax/J00sR/src/syntax_tree.jl:21
hash at ./abstractarray.jl:3550
hash at ./tuple.jl:583 [inlined]
hash at ./tuple.jl:583 [inlined]
hash at ./namedtuple.jl:253 [inlined]
hash at ./hashing.jl:28 [inlined]
hashindex at ./dict.jl:128 [inlined]
ht_keyindex at ./dict.jl:242
get at ./dict.jl:503 [inlined]
is_name_internal_in_higher_local_scope at /Users/eph/ExplicitImports/src/get_names_used.jl:505
#14 at /Users/eph/ExplicitImports/src/get_names_used.jl:567
iterate at ./generator.jl:48 [inlined]
collect_to! at ./array.jl:849 [inlined]
collect_to_with_first! at ./array.jl:827 [inlined]
_collect at ./array.jl:821
collect_similar at ./array.jl:720 [inlined]
map at ./abstractarray.jl:3371 [inlined]
analyze_per_usage_info at /Users/eph/ExplicitImports/src/get_names_used.jl:527 [inlined]
analyze_all_names at /Users/eph/ExplicitImports/src/get_names_used.jl:490
get_names_used at /Users/eph/ExplicitImports/src/get_names_used.jl:628
fill_cache! at /Users/eph/ExplicitImports/src/ExplicitImports.jl:375
#explicit_imports#141 at /Users/eph/ExplicitImports/src/ExplicitImports.jl:128
explicit_imports at /Users/eph/ExplicitImports/src/ExplicitImports.jl:116 [inlined]
#print_explicit_imports#61 at /Users/eph/ExplicitImports/src/interactive_usage.jl:69
print_explicit_imports at /Users/eph/ExplicitImports/src/interactive_usage.jl:42
#print_explicit_imports#60 at /Users/eph/ExplicitImports/src/interactive_usage.jl:2
print_explicit_imports at /Users/eph/ExplicitImports/src/interactive_usage.jl:1 [inlined]
print_explicit_imports at /Users/eph/ExplicitImports/src/interactive_usage.jl:1
unknown function (ip: 0x1301580df)
jl_apply at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/./julia.h:2157 [inlined]
do_call at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/interpreter.c:126
eval_stmt_value at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/interpreter.c:174
eval_body at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/interpreter.c:666
jl_interpret_toplevel_thunk at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/interpreter.c:824
jl_toplevel_eval_flex at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/toplevel.c:943
jl_toplevel_eval_flex at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/toplevel.c:886
jl_toplevel_eval_flex at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/toplevel.c:886
jl_toplevel_eval_flex at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/toplevel.c:886
ijl_toplevel_eval at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/toplevel.c:952 [inlined]
ijl_toplevel_eval_in at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/toplevel.c:994
eval at ./boot.jl:430 [inlined]
eval_user_input at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:261
repl_backend_loop at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:368
#start_repl_backend#59 at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:343
start_repl_backend at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:340
#run_repl#76 at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:500
run_repl at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:486
jfptr_run_repl_10112.1 at /Users/eph/.julia/juliaup/julia-1.11.5+0.aarch64.apple.darwin14/share/julia/compiled/v1.11/REPL/u0gqU_RnzCd.dylib (unknown line)
#1150 at ./client.jl:446
jfptr_YY.1150_14703.1 at /Users/eph/.julia/juliaup/julia-1.11.5+0.aarch64.apple.darwin14/share/julia/compiled/v1.11/REPL/u0gqU_RnzCd.dylib (unknown line)
jl_apply at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/./julia.h:2157 [inlined]
jl_f__call_latest at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/builtins.c:875
#invokelatest#2 at ./essentials.jl:1055 [inlined]
invokelatest at ./essentials.jl:1052 [inlined]
run_main_repl at ./client.jl:430
repl_main at ./client.jl:567 [inlined]
_start at ./client.jl:541
jfptr__start_73721.1 at /Users/eph/.julia/juliaup/julia-1.11.5+0.aarch64.apple.darwin14/lib/julia/sys.dylib (unknown line)
jl_apply at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/./julia.h:2157 [inlined]
true_main at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/jlapi.c:900
jl_repl_entrypoint at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-HL2F7YQ3XH.0/build/default-honeycrisp-HL2F7YQ3XH-0/julialang/julia-release-1-dot-11/src/jlapi.c:1059
unknown function (ip: 0x0)

==============================================================
Profile collected. A report will print at the next yield point
==============================================================

  Module ExplicitImports is relying on implicit imports for 9 names. These could be explicitly
  imported as follows:

  using AbstractTrees: AbstractTrees, Leaves, TreeCursor, children, nodevalue
  using JuliaSyntax: JuliaSyntax, @K_str, SyntaxNode, parseall

  Additionally, module ExplicitImports explicitly imports 1 non-public name:

    •  parent is not public in AbstractTrees but it was imported from AbstractTrees at
       /Users/eph/ExplicitImports/src/ExplicitImports.jl:8:22

julia> ┌ Warning: There were no samples collected in one or more groups.
│ This may be due to idle threads, or you may need to run your
│ program longer (perhaps by running it multiple times),
│ or adjust the delay between samples with `Profile.init()`.
└ @ Profile ~/.julia/juliaup/julia-1.11.5+0.aarch64.apple.darwin14/share/julia/stdlib/v1.11/Profile/src/Profile.jl:1240
Overhead ╎ [+additional indent] Count File:Line; Function
=========================================================
Thread 1 Task 0x000000010a02c010 Total snapshots: 575. Utilization: 100%
  ╎539 @Base/client.jl:541; _start()
  ╎ 539 @Base/client.jl:567; repl_main
  ╎  539 @Base/client.jl:430; run_main_repl(interactive::Bool, quiet::Bool, banner::Symbol, histo539 @Base/essentials.jl:1052; invokelatest
  ╎    539 @Base/essentials.jl:1055; #invokelatest#2539 @Base/client.jl:446; (::Base.var"#1150#1152"{Bool, Symbol, Bool})(REPL::Module)
  ╎    ╎ 539 @REPL/src/REPL.jl:486; run_repl(repl::REPL.AbstractREPL, consumer::Any)
  ╎    ╎  539 @REPL/src/REPL.jl:500; run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_
  ╎    ╎   539 @REPL/src/REPL.jl:340; kwcall(::NamedTuple, ::typeof(REPL.start_repl_backend), bac
  ╎    ╎    539 @REPL/src/REPL.jl:343; start_repl_backend(backend::REPL.REPLBackend, consumer::An
  ╎    ╎     539 @REPL/src/REPL.jl:368; repl_backend_loop(backend::REPL.REPLBackend, get_module::
  ╎    ╎    ╎ 539 @REPL/src/REPL.jl:261; eval_user_input(ast::Any, backend::REPL.REPLBackend, mod
64╎    ╎    ╎  539 @Base/boot.jl:430; eval
  ╎    ╎    ╎   475 /src/interactive_usage.jl:1; print_explicit_imports(mod::Module)
  ╎    ╎    ╎    475 /src/interactive_usage.jl:1; print_explicit_imports
  ╎    ╎    ╎     475 /src/interactive_usage.jl:2; print_explicit_imports(mod::Module, file::Str
  ╎    ╎    ╎    ╎ 475 src/interactive_usage.jl:42; print_explicit_imports(final_io::Base.TTY, m
  ╎    ╎    ╎    ╎  475 rc/interactive_usage.jl:69; print_explicit_imports(final_io::Base.TTY, m
  ╎    ╎    ╎    ╎   475 /src/ExplicitImports.jl:116; explicit_imports
  ╎    ╎    ╎    ╎    475 src/ExplicitImports.jl:128; explicit_imports(mod::Module, file::String
  ╎    ╎    ╎    ╎     475 src/ExplicitImports.jl:375; fill_cache!(file_analysis::Dict{String, E
  ╎    ╎    ╎    ╎    ╎ 475 src/get_names_used.jl:628; get_names_used(file::String)
  ╎    ╎    ╎    ╎    ╎  475 src/get_names_used.jl:490; analyze_all_names(file::String)
  ╎    ╎    ╎    ╎    ╎   475 src/get_names_used.jl:527; analyze_per_usage_info
  ╎    ╎    ╎    ╎    ╎    475 ase/abstractarray.jl:3371; map
  ╎    ╎    ╎    ╎    ╎     475 @Base/array.jl:720; collect_similar
  ╎    ╎    ╎    ╎    ╎    ╎ 475 @Base/array.jl:821; _collect(c::Vector{@NamedTuple{name::Symbol,
  ╎    ╎    ╎    ╎    ╎    ╎  475 @Base/array.jl:827; collect_to_with_first!
  ╎    ╎    ╎    ╎    ╎    ╎   475 @Base/array.jl:849; collect_to!
  ╎    ╎    ╎    ╎    ╎    ╎    475 @Base/generator.jl:48; iterate
  ╎    ╎    ╎    ╎    ╎    ╎     232 /get_names_used.jl:528; (::ExplicitImports.var"#14#15"{Dict
  ╎    ╎    ╎    ╎    ╎    ╎    ╎ 232 @Base/dict.jl:549; in
  ╎    ╎    ╎    ╎    ╎    ╎    ╎  231 @Base/dict.jl:242; ht_keyindex(h::Dict{@NamedTuple{name::S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎   231 @Base/dict.jl:128; hashindex
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    231 @Base/hashing.jl:28; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎     231 se/namedtuple.jl:253; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 231 @Base/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  231 @Base/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   231 stractarray.jl:3550; hash(A::Vector{JuliaSyntax.Syn
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    231 /syntax_tree.jl:21; hash(node::JuliaSyntax.SyntaxN
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     231 @Base/tuple.jl:583; hash(t::Tuple{Vector{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 225 tractarray.jl:3550; hash(A::Vector{JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  225 yntax_tree.jl:21; hash(node::JuliaSyntax.Syntax
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   225 @Base/tuple.jl:583; hash(t::Tuple{Vector{JuliaS
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    212 ractarray.jl:3550; hash(A::Vector{JuliaSyntax
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     212 ntax_tree.jl:21; hash(node::JuliaSyntax.Synt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 212 se/tuple.jl:583; hash(t::Tuple{Vector{Julia
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  194 actarray.jl:3550; hash(A::Vector{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   194 tax_tree.jl:21; hash(node::JuliaSyntax.Sy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    194 se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +1 173 actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +2 173 tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +3 173 se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +4 133 actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +5 133 tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +6 132 se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +7 113 actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +8 113 tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ +9 113 se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +10 89  actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +11 89  tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +12 89  se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +13 67  actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +14 67  tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +15 66  se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +16 48  actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +17 48  tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +18 48  se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +19 37  actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +20 37  tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +21 37  se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +22 14  actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +23 14  tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +24 13  se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +25 9   actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +26 9   tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 9   se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 7   actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +29 7   tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 6   se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 3   actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 3   tax_tree.jl:21; hash(node::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 3   se/tuple.jl:583; hash(t::Tuple{Nothing, 
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 3   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 3   tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +36 3   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +37 3   ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +38 3   se/tuple.jl:583; hash(t::Tuple{SubString
 3╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +39 3   ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 3   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 3   tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 3   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 3   ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 3   se/tuple.jl:583; hash(t::Tuple{SubString
 3╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +36 3   ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +29 2   tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 2   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 2   ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 2   se/tuple.jl:583; hash(t::Tuple{SubString
 2╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 2   ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +25 4   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +26 4   tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 4   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 4   ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +29 4   se/tuple.jl:583; hash(t::Tuple{SubString
 3╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 3   ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 1   actarray.jl:3550; hash(A::Vector{Int64},
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 1   /hashing.jl:86; hash
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +36 1   @Base/int.jl:86; -
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +22 23  se/tuple.jl:583; hash
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +23 23  tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +24 22  se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +25 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +26 2   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 2   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +29 2   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 2   actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 2   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 2   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 2   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 2   actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +36 2   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +37 2   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +38 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +39 2   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +40 2   actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +41 2   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +42 1   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +43 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +44 1   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +45 1   actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +46 1   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +47 1   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +48 1   /hashing.jl:36; hash
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +49 1   flection.jl:741; objectid
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +25 20  ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +26 19  se/tuple.jl:583; hash(t::Tuple{SubString
15╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 15  ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 4   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 4   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +29 4   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 4   se/tuple.jl:583; hash
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 1   actarray.jl:0; hash(A::Vector{Int64}, h:
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 3   actarray.jl:3550; hash(A::Vector{Int64},
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 3   /hashing.jl:86; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 2   /hashing.jl:77; hash_uint64
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 1   /hashing.jl:44; hash_64_64
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 1   @Base/int.jl:321; ~
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 1   /hashing.jl:49; hash_64_64
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 1   @Base/int.jl:373; xor
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 1   @Base/int.jl:1013; *
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 1   @Base/int.jl:88; *
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +19 11  se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +20 11  tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +21 11  se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +22 11  ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +23 11  se/tuple.jl:583; hash(t::Tuple{SubString
10╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +24 10  ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +24 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +25 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +26 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 1   se/tuple.jl:583; hash
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 1   se/array.jl:0; hash(A::Vector{Int64}, h:
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +16 18  se/tuple.jl:583; hash
 2╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +17 18  tax_tree.jl:53; hash(data::JuliaSyntax.S
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +18 16  se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +19 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +20 2   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +21 2   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +22 2   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +23 2   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +24 2   actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +25 2   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +26 1   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +27 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +28 1   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +29 1   actarray.jl:3550; hash(A::Vector{JuliaSy
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +30 1   een_tree.jl:75; hash(node::JuliaSyntax.G
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +31 1   se/tuple.jl:583; hash(t::Tuple{JuliaSynt
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +32 1   se/tuple.jl:583; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +33 1   se/tuple.jl:583; hash(t::Tuple{Vector{Ju
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +34 1   actarray.jl:3550; hash(A::Vector{JuliaSy
 1╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +35 1   een_tree.jl:75; hash(node::JuliaSyntax.G
 3╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +19 14  ce_files.jl:146; hash(s::JuliaSyntax.Sou
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +20 11  se/tuple.jl:583; hash(t::Tuple{SubString
 8╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +21 8   ubstring.jl:140; hash
  ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     +21 3   se/tuple.jl:583; hash
...

[truncated to fit in issue]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy