Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some convenience hotkeys #11

Open
Keno opened this issue Jan 26, 2019 · 5 comments
Open

Some convenience hotkeys #11

Keno opened this issue Jan 26, 2019 · 5 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Keno
Copy link
Collaborator

Keno commented Jan 26, 2019

I regularly find myself wanting some convenience hotkeys for

  1. Switching between optimized and unoptimized views
  2. Somehow saving or printing the current view, so I can come back later after fixing some things.
@Keno
Copy link
Collaborator Author

Keno commented Jan 26, 2019

Also something for enabling/disabling filtering on union types.

@Keno
Copy link
Collaborator Author

Keno commented Jan 26, 2019

Also for re-printing with location info.

@vchuravy vchuravy added enhancement New feature or request help wanted Extra attention is needed labels Jan 26, 2019
@vchuravy
Copy link
Member

vchuravy commented Feb 5, 2019

#12 adds a hotkey for optimize and unoptimize

@vchuravy
Copy link
Member

vchuravy commented Feb 5, 2019

I would also add that I want to output code_llvm and code_native.

@vchuravy
Copy link
Member

Only missing is:

  • Somehow saving or printing the current view, so I can come back later after fixing some things.
  • Also something for enabling/disabling filtering on union types.

aviatesk added a commit that referenced this issue Nov 24, 2021
…rpreter` params

```julia
julia> function summer(f, xs)
           s = zero(eltype(xs))
           for x in xs
               s += f(x)
           end
           s
       end
summer (generic function with 1 method)

julia> @Descend interp=CC.NativeInterpreter(; opt_params=CC.OptimizationParams(; inline_nonleaf_penalty=10)) inline_cost=true summer(sin, Number[1,2,3])
summer(f, xs) in Main at REPL[9]:1
│ ─ %-1  = invoke summer(::typeof(sin),::Vector{Number})::Any
3 1 ──  1 %1  = Base.bitcast(UInt64, 1)::UInt64        │╻╷╷   iterate
  │     1 %2  = Base.sub_int(%1, 0x0000000000000001)::UInt64   iterate
  │     4 %3  = Base.arraylen(_3)::Int64               │││╻     length
  │     1 %4  = Base.sle_int(0, %3)::Bool              ││││╻╷    >=
  │     1 %5  = Base.bitcast(UInt64, %3)::UInt64       │││││╻     reinterpret
  │     1 %6  = Base.ult_int(%2, %5)::Bool             ││││╻     <
  │     1 %7  = Base.and_int(%4, %6)::Bool             ││││╻     &
  └───  0       goto #3 if not %7                      │││
  2 ──  4 %9  = Base.arrayref(false, _3, 1)::Number    │││╻     getindex
  │     1 %10 = Base.add_int(1, 1)::Int64              │││╻     +
  └───  0       goto #4                                │││
  3 ──  0       Base.nothing::Core.Const(nothing)      │││
  └───  0       goto #4                                │││
  4 ┄─  0 %14 = φ (#2 => false, #3 => true)::Bool      ││
  │     0 %15 = φ (#2 => %9)::Number                   ││
  │     0 %16 = φ (#2 => %10)::Int64                   ││
  └───  0       goto #5                                ││
  5 ──  0 %18 = Base.not_int(%14)::Bool                │
  └───  0       goto #11 if not %18                    │
  6 ┄─  0 %20 = φ (#5 => %15, #10 => %38)::Number      │
  │     0 %21 = φ (#5 => %16, #10 => %39)::Int64       │
  │     0 %22 = φ (#5 => 0, #10 => %24)::Any           │
4 │    10 %23 = (_2)(%20)::Any                         │
  │    10 %24 = (%22 + %23)::Any                       │
5 │     1 %25 = Base.bitcast(UInt64, %21)::UInt64      │╻╷    iterate
  │     1 %26 = Base.sub_int(%25, 0x0000000000000001)::UInt64  -
  │     4 %27 = Base.arraylen(_3)::Int64               ││╻     length
  │     1 %28 = Base.sle_int(0, %27)::Bool             │││╻╷    >=
  │     1 %29 = Base.bitcast(UInt64, %27)::UInt64      ││││╻     reinterpret
  │     1 %30 = Base.ult_int(%26, %29)::Bool           │││╻     <
  │     1 %31 = Base.and_int(%28, %30)::Bool           │││╻     &
  └───  0       goto #8 if not %31                     ││
  7 ──  4 %33 = Base.arrayref(false, _3, %21)::Number  ││╻     getindex
  │     1 %34 = Base.add_int(%21, 1)::Int64            ││╻     +
  └───  0       goto #9                                ││
  8 ──  0       Base.nothing::Core.Const(nothing)      ││
  └───  0       goto #9                                ││
  9 ┄─  0 %38 = φ (#7 => %33)::Number                  │
  │     0 %39 = φ (#7 => %34)::Int64                   │
  │     0 %40 = φ (#7 => false, #8 => true)::Bool      │
  │     0 %41 = Base.not_int(%40)::Bool                │
  └───  0       goto #11 if not %41                    │
  10 ─ 40       goto #6                                │
6 11 ┄  0 %44 = φ (#9 => %24, #5 => 0)::Any            │
  └───  0       return %44                             │
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [o]ptimize, [w]arn, [h]ide type-stable statements, [d]ebuginfo, [r]emarks, [i]nlining costs, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
Advanced: dump [P]arams cache.
 • ↩
```
aviatesk added a commit that referenced this issue Nov 24, 2021
…rpreter` params (#251)

```julia
julia> function summer(f, xs)
           s = zero(eltype(xs))
           for x in xs
               s += f(x)
           end
           s
       end
summer (generic function with 1 method)

julia> @Descend interp=CC.NativeInterpreter(; opt_params=CC.OptimizationParams(; inline_nonleaf_penalty=10)) inline_cost=true summer(sin, Number[1,2,3])
summer(f, xs) in Main at REPL[9]:1
│ ─ %-1  = invoke summer(::typeof(sin),::Vector{Number})::Any
3 1 ──  1 %1  = Base.bitcast(UInt64, 1)::UInt64        │╻╷╷   iterate
  │     1 %2  = Base.sub_int(%1, 0x0000000000000001)::UInt64   iterate
  │     4 %3  = Base.arraylen(_3)::Int64               │││╻     length
  │     1 %4  = Base.sle_int(0, %3)::Bool              ││││╻╷    >=
  │     1 %5  = Base.bitcast(UInt64, %3)::UInt64       │││││╻     reinterpret
  │     1 %6  = Base.ult_int(%2, %5)::Bool             ││││╻     <
  │     1 %7  = Base.and_int(%4, %6)::Bool             ││││╻     &
  └───  0       goto #3 if not %7                      │││
  2 ──  4 %9  = Base.arrayref(false, _3, 1)::Number    │││╻     getindex
  │     1 %10 = Base.add_int(1, 1)::Int64              │││╻     +
  └───  0       goto #4                                │││
  3 ──  0       Base.nothing::Core.Const(nothing)      │││
  └───  0       goto #4                                │││
  4 ┄─  0 %14 = φ (#2 => false, #3 => true)::Bool      ││
  │     0 %15 = φ (#2 => %9)::Number                   ││
  │     0 %16 = φ (#2 => %10)::Int64                   ││
  └───  0       goto #5                                ││
  5 ──  0 %18 = Base.not_int(%14)::Bool                │
  └───  0       goto #11 if not %18                    │
  6 ┄─  0 %20 = φ (#5 => %15, #10 => %38)::Number      │
  │     0 %21 = φ (#5 => %16, #10 => %39)::Int64       │
  │     0 %22 = φ (#5 => 0, #10 => %24)::Any           │
4 │    10 %23 = (_2)(%20)::Any                         │
  │    10 %24 = (%22 + %23)::Any                       │
5 │     1 %25 = Base.bitcast(UInt64, %21)::UInt64      │╻╷    iterate
  │     1 %26 = Base.sub_int(%25, 0x0000000000000001)::UInt64  -
  │     4 %27 = Base.arraylen(_3)::Int64               ││╻     length
  │     1 %28 = Base.sle_int(0, %27)::Bool             │││╻╷    >=
  │     1 %29 = Base.bitcast(UInt64, %27)::UInt64      ││││╻     reinterpret
  │     1 %30 = Base.ult_int(%26, %29)::Bool           │││╻     <
  │     1 %31 = Base.and_int(%28, %30)::Bool           │││╻     &
  └───  0       goto #8 if not %31                     ││
  7 ──  4 %33 = Base.arrayref(false, _3, %21)::Number  ││╻     getindex
  │     1 %34 = Base.add_int(%21, 1)::Int64            ││╻     +
  └───  0       goto #9                                ││
  8 ──  0       Base.nothing::Core.Const(nothing)      ││
  └───  0       goto #9                                ││
  9 ┄─  0 %38 = φ (#7 => %33)::Number                  │
  │     0 %39 = φ (#7 => %34)::Int64                   │
  │     0 %40 = φ (#7 => false, #8 => true)::Bool      │
  │     0 %41 = Base.not_int(%40)::Bool                │
  └───  0       goto #11 if not %41                    │
  10 ─ 40       goto #6                                │
6 11 ┄  0 %44 = φ (#9 => %24, #5 => 0)::Any            │
  └───  0       return %44                             │
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [o]ptimize, [w]arn, [h]ide type-stable statements, [d]ebuginfo, [r]emarks, [i]nlining costs, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
Advanced: dump [P]arams cache.
 • ↩
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants