2380 lines
90 KiB
Plaintext
2380 lines
90 KiB
Plaintext
{
|
|
|
|
let test = 3
|
|
let quux = loop ([1, 2]) with {
|
|
([]) -> false
|
|
([x]) -> eq? (x, test)
|
|
([x, ...xs]) -> if eq? (x, test)
|
|
then :yes
|
|
else recur (xs)
|
|
}
|
|
let foo = :bar
|
|
fn not {
|
|
(false) -> true
|
|
(nil) -> true
|
|
(_) -> false
|
|
}
|
|
let frob = loop ([1, 2, 3]) with {
|
|
([]) -> false
|
|
([y]) -> eq? (y, test)
|
|
([y, ...ys]) -> if not (eq? (y, test) )
|
|
then recur (ys)
|
|
else true
|
|
}
|
|
[quux, frob]
|
|
}
|
|
binding `base` in prelude
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: base@0//-1
|
|
binding `eq?` in prelude
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: base@0//-1|eq?@1//0
|
|
***function clause matching: : (x, y)
|
|
binding `x` in eq?
|
|
stack depth: 2; match depth: 1
|
|
at stack index: 0
|
|
new locals: x@0//0
|
|
binding `y` in eq?
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: x@0//0|y@1//0
|
|
***accessing keyword: base :eq? stack depth: 2
|
|
resolving binding `base` in eq?
|
|
locals: x@0//0|y@1//0
|
|
as enclosing upvalue 0
|
|
***after keyword access stack depth: 3
|
|
resolving binding `x` in eq?
|
|
locals: x@0//0|y@1//0
|
|
at locals position 0
|
|
resolving binding `y` in eq?
|
|
locals: x@0//0|y@1//0
|
|
at locals position 1
|
|
resolving binding `base` in prelude
|
|
locals: base@0//-1|eq?@1//0
|
|
at locals position 0
|
|
binding `first` in prelude
|
|
stack depth: 3; match depth: 0
|
|
at stack index: 2
|
|
new locals: base@0//-1|eq?@1//0|first@2//0
|
|
***function clause matching: : ([])
|
|
***function clause matching: : (xs as :list)
|
|
binding `xs` in first
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: xs@0//0
|
|
***accessing keyword: base :first stack depth: 1
|
|
resolving binding `base` in first
|
|
locals: xs@0//0
|
|
as enclosing upvalue 0
|
|
***after keyword access stack depth: 2
|
|
resolving binding `xs` in first
|
|
locals: xs@0//0
|
|
at locals position 0
|
|
resolving binding `base` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0
|
|
at locals position 0
|
|
binding `rest` in prelude
|
|
stack depth: 4; match depth: 0
|
|
at stack index: 3
|
|
new locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0
|
|
***function clause matching: : ([])
|
|
***function clause matching: : (xs as :list)
|
|
binding `xs` in rest
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: xs@0//0
|
|
***accessing keyword: base :rest stack depth: 1
|
|
resolving binding `base` in rest
|
|
locals: xs@0//0
|
|
as enclosing upvalue 0
|
|
***after keyword access stack depth: 2
|
|
resolving binding `xs` in rest
|
|
locals: xs@0//0
|
|
at locals position 0
|
|
resolving binding `base` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0
|
|
at locals position 0
|
|
binding `inc` in prelude
|
|
stack depth: 5; match depth: 0
|
|
at stack index: 4
|
|
new locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0
|
|
***function clause matching: : (x as :number)
|
|
binding `x` in inc
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: x@0//0
|
|
***accessing keyword: base :inc stack depth: 1
|
|
resolving binding `base` in inc
|
|
locals: x@0//0
|
|
as enclosing upvalue 0
|
|
***after keyword access stack depth: 2
|
|
resolving binding `x` in inc
|
|
locals: x@0//0
|
|
at locals position 0
|
|
resolving binding `base` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0
|
|
at locals position 0
|
|
binding `append` in prelude
|
|
stack depth: 6; match depth: 0
|
|
at stack index: 5
|
|
new locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0
|
|
***function clause matching: : ()
|
|
***function clause matching: : (xs as :list)
|
|
binding `xs` in append
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: xs@0//0
|
|
resolving binding `xs` in append
|
|
locals: xs@0//0
|
|
at locals position 0
|
|
***function clause matching: : (xs as :list, x)
|
|
binding `xs` in append
|
|
stack depth: 2; match depth: 1
|
|
at stack index: 0
|
|
new locals: xs@0//0
|
|
binding `x` in append
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: xs@0//0|x@1//0
|
|
***accessing keyword: base :append stack depth: 2
|
|
resolving binding `base` in append
|
|
locals: xs@0//0|x@1//0
|
|
as enclosing upvalue 0
|
|
***after keyword access stack depth: 3
|
|
resolving binding `xs` in append
|
|
locals: xs@0//0|x@1//0
|
|
at locals position 0
|
|
resolving binding `x` in append
|
|
locals: xs@0//0|x@1//0
|
|
at locals position 1
|
|
resolving binding `base` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0
|
|
at locals position 0
|
|
binding `fold` in prelude
|
|
stack depth: 7; match depth: 0
|
|
at stack index: 6
|
|
new locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0
|
|
***function clause matching: : (f as :fn, [])
|
|
binding `f` in fold
|
|
stack depth: 2; match depth: 1
|
|
at stack index: 0
|
|
new locals: f@0//0
|
|
***function clause matching: : (f as :fn, xs as :list)
|
|
binding `f` in fold
|
|
stack depth: 2; match depth: 1
|
|
at stack index: 0
|
|
new locals: f@0//0
|
|
binding `xs` in fold
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: f@0//0|xs@1//0
|
|
***calling function fold stack depth: 2
|
|
resolving binding `f` in fold
|
|
locals: f@0//0|xs@1//0
|
|
at locals position 0
|
|
resolving binding `xs` in fold
|
|
locals: f@0//0|xs@1//0
|
|
at locals position 1
|
|
***calling function f stack depth: 4
|
|
resolving binding `f` in fold
|
|
locals: f@0//0|xs@1//0
|
|
at locals position 0
|
|
***after 0 args stack depth: 5
|
|
resolving binding `fold` in fold
|
|
locals: f@0//0|xs@1//0
|
|
as enclosing upvalue 0
|
|
***after 3 args stack depth: 6
|
|
***function clause matching: : (f as :fn, [], root)
|
|
binding `f` in fold
|
|
stack depth: 3; match depth: 2
|
|
at stack index: 0
|
|
new locals: f@0//0
|
|
binding `root` in fold
|
|
stack depth: 3; match depth: 0
|
|
at stack index: 2
|
|
new locals: f@0//0|root@2//0
|
|
***function clause matching: : (f as :fn, xs as :list, root)
|
|
binding `f` in fold
|
|
stack depth: 3; match depth: 2
|
|
at stack index: 0
|
|
new locals: f@0//0
|
|
binding `xs` in fold
|
|
stack depth: 3; match depth: 1
|
|
at stack index: 1
|
|
new locals: f@0//0|xs@1//0
|
|
binding `root` in fold
|
|
stack depth: 3; match depth: 0
|
|
at stack index: 2
|
|
new locals: f@0//0|xs@1//0|root@2//0
|
|
***entering loop stack depth: 3
|
|
resolving binding `root` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0
|
|
at locals position 2
|
|
***calling function first stack depth: 4
|
|
resolving binding `xs` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0
|
|
at locals position 1
|
|
resolving binding `first` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0
|
|
as enclosing upvalue 1
|
|
***after 1 args stack depth: 6
|
|
***calling function rest stack depth: 5
|
|
resolving binding `xs` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0
|
|
at locals position 1
|
|
resolving binding `rest` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0
|
|
as enclosing upvalue 2
|
|
***after 1 args stack depth: 7
|
|
***after loop args stack depth: 6
|
|
***loop: after store stack depth: 3
|
|
***loop: after load stack depth: 6
|
|
***loop clause matching: : (prev, curr, [])
|
|
binding `prev` in fold
|
|
stack depth: 6; match depth: 2
|
|
at stack index: 3
|
|
new locals: f@0//0|xs@1//0|root@2//0|prev@3//1
|
|
binding `curr` in fold
|
|
stack depth: 6; match depth: 1
|
|
at stack index: 4
|
|
new locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1
|
|
***loop: before body stack depth: 6
|
|
***calling function f stack depth: 6
|
|
resolving binding `prev` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1
|
|
at locals position 3
|
|
resolving binding `curr` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1
|
|
at locals position 4
|
|
resolving binding `f` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1
|
|
at locals position 0
|
|
***after 2 args stack depth: 9
|
|
***loop: after body, before store stack depth: 7
|
|
***loop: after body, after store stack depth: 6
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "curr", depth: 1, stack_pos: 4 })
|
|
releasing binding Some(Binding { name: "prev", depth: 1, stack_pos: 3 })
|
|
***resetting the stack after loop from 6 to 3 stack depth: 6
|
|
***loop: after load stack depth: 6
|
|
***loop clause matching: : (prev, curr, remaining)
|
|
binding `prev` in fold
|
|
stack depth: 6; match depth: 2
|
|
at stack index: 3
|
|
new locals: f@0//0|xs@1//0|root@2//0|prev@3//1
|
|
binding `curr` in fold
|
|
stack depth: 6; match depth: 1
|
|
at stack index: 4
|
|
new locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1
|
|
binding `remaining` in fold
|
|
stack depth: 6; match depth: 0
|
|
at stack index: 5
|
|
new locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
***loop: before body stack depth: 6
|
|
***recur: before args stack depth: 6
|
|
recur arg: 0
|
|
***calling function f stack depth: 6
|
|
resolving binding `prev` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
at locals position 3
|
|
resolving binding `curr` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
at locals position 4
|
|
resolving binding `f` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
at locals position 0
|
|
***after 2 args stack depth: 9
|
|
recur arg: 1
|
|
***calling function first stack depth: 7
|
|
resolving binding `remaining` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
at locals position 5
|
|
resolving binding `first` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
as upvalue 1
|
|
***after 1 args stack depth: 9
|
|
recur arg: 2
|
|
***calling function rest stack depth: 8
|
|
resolving binding `remaining` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
at locals position 5
|
|
resolving binding `rest` in fold
|
|
locals: f@0//0|xs@1//0|root@2//0|prev@3//1|curr@4//1|remaining@5//1
|
|
as upvalue 2
|
|
***after 1 args stack depth: 10
|
|
***recur: after args stack depth: 9
|
|
***recur: after store stack depth: 6
|
|
loop root depth: 3
|
|
***recur: after stack reset stack depth: 3
|
|
***recur: after load, end of compilation stack depth: 6
|
|
***loop: after body, before store stack depth: 6
|
|
***loop: after body, after store stack depth: 5
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "remaining", depth: 1, stack_pos: 5 })
|
|
releasing binding Some(Binding { name: "curr", depth: 1, stack_pos: 4 })
|
|
releasing binding Some(Binding { name: "prev", depth: 1, stack_pos: 3 })
|
|
***resetting the stack after loop from 5 to 3 stack depth: 5
|
|
***before loop arity adjustment stack depth: 6
|
|
***at very end of loop after load stack depth: 4
|
|
resolving binding `fold` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0
|
|
at locals position 6
|
|
resolving binding `first` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0
|
|
at locals position 2
|
|
resolving binding `rest` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0
|
|
at locals position 3
|
|
binding `contains?` in prelude
|
|
stack depth: 8; match depth: 0
|
|
at stack index: 7
|
|
new locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0
|
|
***function clause matching: : (value, l as :list)
|
|
binding `value` in contains?
|
|
stack depth: 2; match depth: 1
|
|
at stack index: 0
|
|
new locals: value@0//0
|
|
binding `l` in contains?
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: value@0//0|l@1//0
|
|
***entering loop stack depth: 2
|
|
resolving binding `l` in contains?
|
|
locals: value@0//0|l@1//0
|
|
at locals position 1
|
|
***after loop args stack depth: 3
|
|
***loop: after store stack depth: 2
|
|
***loop: after load stack depth: 3
|
|
***loop clause matching: : ([])
|
|
***loop: before body stack depth: 3
|
|
***loop: after body, before store stack depth: 4
|
|
***loop: after body, after store stack depth: 3
|
|
leaving scope 1
|
|
***resetting the stack after loop from 3 to 2 stack depth: 3
|
|
***loop: after load stack depth: 3
|
|
***loop clause matching: : ([...xs])
|
|
binding `xs` in contains?
|
|
stack depth: 4; match depth: 0
|
|
at stack index: 3
|
|
new locals: value@0//0|l@1//0|xs@3//1
|
|
***loop: before body stack depth: 4
|
|
***calling function eq? stack depth: 4
|
|
***calling function first stack depth: 4
|
|
resolving binding `xs` in contains?
|
|
locals: value@0//0|l@1//0|xs@3//1
|
|
at locals position 3
|
|
resolving binding `first` in contains?
|
|
locals: value@0//0|l@1//0|xs@3//1
|
|
as enclosing upvalue 0
|
|
***after 1 args stack depth: 6
|
|
resolving binding `value` in contains?
|
|
locals: value@0//0|l@1//0|xs@3//1
|
|
at locals position 0
|
|
resolving binding `eq?` in contains?
|
|
locals: value@0//0|l@1//0|xs@3//1
|
|
as enclosing upvalue 1
|
|
***after 2 args stack depth: 7
|
|
***after condition stack depth: 5
|
|
***after consequent stack depth: 5
|
|
***recur: before args stack depth: 4
|
|
recur arg: 0
|
|
***calling function rest stack depth: 4
|
|
resolving binding `xs` in contains?
|
|
locals: value@0//0|l@1//0|xs@3//1
|
|
at locals position 3
|
|
resolving binding `rest` in contains?
|
|
locals: value@0//0|l@1//0|xs@3//1
|
|
as enclosing upvalue 2
|
|
***after 1 args stack depth: 6
|
|
***recur: after args stack depth: 5
|
|
***recur: after store stack depth: 4
|
|
loop root depth: 2
|
|
***recur: after stack reset stack depth: 2
|
|
***recur: after load, end of compilation stack depth: 3
|
|
***after alternative stack depth: 3
|
|
***loop: after body, before store stack depth: 3
|
|
***loop: after body, after store stack depth: 2
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "xs", depth: 1, stack_pos: 3 })
|
|
***resetting the stack after loop from 2 to 2 stack depth: 2
|
|
***before loop arity adjustment stack depth: 3
|
|
***at very end of loop after load stack depth: 3
|
|
resolving binding `first` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0
|
|
at locals position 2
|
|
resolving binding `eq?` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0
|
|
at locals position 1
|
|
resolving binding `rest` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0
|
|
at locals position 3
|
|
binding `add` in prelude
|
|
stack depth: 9; match depth: 0
|
|
at stack index: 8
|
|
new locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0|add@8//0
|
|
***function clause matching: : ()
|
|
***function clause matching: : (x)
|
|
binding `x` in add
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: x@0//0
|
|
resolving binding `x` in add
|
|
locals: x@0//0
|
|
at locals position 0
|
|
***function clause matching: : (x, y)
|
|
binding `x` in add
|
|
stack depth: 2; match depth: 1
|
|
at stack index: 0
|
|
new locals: x@0//0
|
|
binding `y` in add
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: x@0//0|y@1//0
|
|
***accessing keyword: base :add stack depth: 2
|
|
resolving binding `base` in add
|
|
locals: x@0//0|y@1//0
|
|
as enclosing upvalue 0
|
|
***after keyword access stack depth: 3
|
|
resolving binding `x` in add
|
|
locals: x@0//0|y@1//0
|
|
at locals position 0
|
|
resolving binding `y` in add
|
|
locals: x@0//0|y@1//0
|
|
at locals position 1
|
|
resolving binding `base` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0|add@8//0
|
|
at locals position 0
|
|
resolving binding `add` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0|add@8//0
|
|
at locals position 8
|
|
resolving binding `rest` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0|add@8//0
|
|
at locals position 3
|
|
resolving binding `first` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0|add@8//0
|
|
at locals position 2
|
|
resolving binding `eq?` in prelude
|
|
locals: base@0//-1|eq?@1//0|first@2//0|rest@3//0|inc@4//0|append@5//0|fold@6//0|contains?@7//0|add@8//0
|
|
at locals position 1
|
|
leaving scope 0
|
|
releasing binding Some(Binding { name: "add", depth: 0, stack_pos: 8 })
|
|
releasing binding Some(Binding { name: "contains?", depth: 0, stack_pos: 7 })
|
|
releasing binding Some(Binding { name: "fold", depth: 0, stack_pos: 6 })
|
|
releasing binding Some(Binding { name: "append", depth: 0, stack_pos: 5 })
|
|
releasing binding Some(Binding { name: "inc", depth: 0, stack_pos: 4 })
|
|
releasing binding Some(Binding { name: "rest", depth: 0, stack_pos: 3 })
|
|
releasing binding Some(Binding { name: "first", depth: 0, stack_pos: 2 })
|
|
releasing binding Some(Binding { name: "eq?", depth: 0, stack_pos: 1 })
|
|
closing over in eq?: #{:trim fn trim/base...
|
|
closing over in first: #{:trim fn trim/base...
|
|
closing over in rest: #{:trim fn trim/base...
|
|
closing over in inc: #{:trim fn trim/base...
|
|
closing over in append: #{:trim fn trim/base...
|
|
closing over in fold: fn fold
|
|
closing over in fold: fn first
|
|
closing over in fold: fn rest
|
|
closing over in contains?: fn first
|
|
closing over in contains?: fn eq?
|
|
closing over in contains?: fn rest
|
|
closing over in add: #{:trim fn trim/base...
|
|
***before let binding stack depth: 0
|
|
***after let expr stack depth: 1
|
|
***let binding: matching: test
|
|
binding `test` in sandbox
|
|
stack depth: 1; match depth: 0
|
|
at stack index: 0
|
|
new locals: test@0//0
|
|
***after let binding stack depth: 1
|
|
***before let binding stack depth: 1
|
|
***entering loop stack depth: 1
|
|
***after loop args stack depth: 2
|
|
***loop: after store stack depth: 1
|
|
***loop: after load stack depth: 2
|
|
***loop clause matching: : ([])
|
|
***loop: before body stack depth: 2
|
|
***loop: after body, before store stack depth: 3
|
|
***loop: after body, after store stack depth: 2
|
|
leaving scope 1
|
|
***resetting the stack after loop from 2 to 1 stack depth: 2
|
|
***loop: after load stack depth: 2
|
|
***loop clause matching: : ([x])
|
|
binding `x` in sandbox
|
|
stack depth: 3; match depth: 0
|
|
at stack index: 2
|
|
new locals: test@0//0|x@2//1
|
|
***loop: before body stack depth: 3
|
|
***calling function eq? stack depth: 3
|
|
resolving binding `x` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
at locals position 2
|
|
resolving binding `test` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
at locals position 0
|
|
resolving binding `eq?` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
as global
|
|
***after 2 args stack depth: 6
|
|
***loop: after body, before store stack depth: 4
|
|
***loop: after body, after store stack depth: 3
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "x", depth: 1, stack_pos: 2 })
|
|
***resetting the stack after loop from 3 to 1 stack depth: 3
|
|
***loop: after load stack depth: 2
|
|
***loop clause matching: : ([x, ...xs])
|
|
binding `x` in sandbox
|
|
stack depth: 4; match depth: 1
|
|
at stack index: 2
|
|
new locals: test@0//0|x@2//1
|
|
binding `xs` in sandbox
|
|
stack depth: 4; match depth: 0
|
|
at stack index: 3
|
|
new locals: test@0//0|x@2//1|xs@3//1
|
|
***loop: before body stack depth: 4
|
|
***calling function eq? stack depth: 4
|
|
resolving binding `x` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
at locals position 2
|
|
resolving binding `test` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
at locals position 0
|
|
resolving binding `eq?` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
as global
|
|
***after 2 args stack depth: 7
|
|
***after condition stack depth: 5
|
|
***after consequent stack depth: 5
|
|
***recur: before args stack depth: 4
|
|
recur arg: 0
|
|
resolving binding `xs` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
at locals position 3
|
|
***recur: after args stack depth: 5
|
|
***recur: after store stack depth: 4
|
|
loop root depth: 1
|
|
***recur: after stack reset stack depth: 1
|
|
***recur: after load, end of compilation stack depth: 2
|
|
***after alternative stack depth: 2
|
|
***loop: after body, before store stack depth: 2
|
|
***loop: after body, after store stack depth: 1
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "xs", depth: 1, stack_pos: 3 })
|
|
releasing binding Some(Binding { name: "x", depth: 1, stack_pos: 2 })
|
|
***resetting the stack after loop from 1 to 1 stack depth: 1
|
|
***before loop arity adjustment stack depth: 2
|
|
***at very end of loop after load stack depth: 2
|
|
***after let expr stack depth: 2
|
|
***let binding: matching: quux
|
|
binding `quux` in sandbox
|
|
stack depth: 2; match depth: 0
|
|
at stack index: 1
|
|
new locals: test@0//0|quux@1//0
|
|
***after let binding stack depth: 2
|
|
***before let binding stack depth: 2
|
|
***after let expr stack depth: 3
|
|
***let binding: matching: foo
|
|
binding `foo` in sandbox
|
|
stack depth: 3; match depth: 0
|
|
at stack index: 2
|
|
new locals: test@0//0|quux@1//0|foo@2//0
|
|
***after let binding stack depth: 3
|
|
binding `not` in sandbox
|
|
stack depth: 4; match depth: 0
|
|
at stack index: 3
|
|
new locals: test@0//0|quux@1//0|foo@2//0|not@3//0
|
|
***function clause matching: : (false)
|
|
***function clause matching: : (nil)
|
|
***function clause matching: : (_)
|
|
=== function chuncktion: not/1 ===
|
|
IDX | CODE | INFO
|
|
0000: reset_match
|
|
0001: ***function clause matching: : (false)
|
|
0003: match_depth 000
|
|
0005: match_false
|
|
0006: jump_if_no_match 00003
|
|
0009: jump 00000
|
|
0012: jump_if_no_match 00004
|
|
0015: true
|
|
0016: store
|
|
0017: pop
|
|
0018: return
|
|
0019: ***function clause matching: : (nil)
|
|
0021: match_depth 000
|
|
0023: match_nil
|
|
0024: jump_if_no_match 00003
|
|
0027: jump 00000
|
|
0030: jump_if_no_match 00004
|
|
0033: true
|
|
0034: store
|
|
0035: pop
|
|
0036: return
|
|
0037: ***function clause matching: : (_)
|
|
0039: match_depth 000
|
|
0041: match
|
|
0042: jump_if_no_match 00003
|
|
0045: jump 00000
|
|
0048: jump_if_no_match 00004
|
|
0051: false
|
|
0052: store
|
|
0053: pop
|
|
0054: return
|
|
0055: panic_no_match
|
|
***before let binding stack depth: 4
|
|
***entering loop stack depth: 4
|
|
***after loop args stack depth: 5
|
|
***loop: after store stack depth: 4
|
|
***loop: after load stack depth: 5
|
|
***loop clause matching: : ([])
|
|
***loop: before body stack depth: 5
|
|
***loop: after body, before store stack depth: 6
|
|
***loop: after body, after store stack depth: 5
|
|
leaving scope 1
|
|
***resetting the stack after loop from 5 to 4 stack depth: 5
|
|
***loop: after load stack depth: 5
|
|
***loop clause matching: : ([y])
|
|
binding `y` in sandbox
|
|
stack depth: 6; match depth: 0
|
|
at stack index: 5
|
|
new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
***loop: before body stack depth: 6
|
|
***calling function eq? stack depth: 6
|
|
resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
at locals position 5
|
|
resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
at locals position 0
|
|
resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
as global
|
|
***after 2 args stack depth: 9
|
|
***loop: after body, before store stack depth: 7
|
|
***loop: after body, after store stack depth: 6
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "y", depth: 1, stack_pos: 5 })
|
|
***resetting the stack after loop from 6 to 4 stack depth: 6
|
|
***loop: after load stack depth: 5
|
|
***loop clause matching: : ([y, ...ys])
|
|
binding `y` in sandbox
|
|
stack depth: 7; match depth: 1
|
|
at stack index: 5
|
|
new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
binding `ys` in sandbox
|
|
stack depth: 7; match depth: 0
|
|
at stack index: 6
|
|
new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
***loop: before body stack depth: 7
|
|
***calling function not stack depth: 7
|
|
***calling function eq? stack depth: 7
|
|
resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
at locals position 5
|
|
resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
at locals position 0
|
|
resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
as global
|
|
***after 2 args stack depth: 10
|
|
resolving binding `not` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
at locals position 3
|
|
***after 1 args stack depth: 9
|
|
***after condition stack depth: 8
|
|
***recur: before args stack depth: 7
|
|
recur arg: 0
|
|
resolving binding `ys` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
at locals position 6
|
|
***recur: after args stack depth: 8
|
|
***recur: after store stack depth: 7
|
|
loop root depth: 4
|
|
***recur: after stack reset stack depth: 4
|
|
***recur: after load, end of compilation stack depth: 5
|
|
***after consequent stack depth: 5
|
|
***after alternative stack depth: 5
|
|
***loop: after body, before store stack depth: 5
|
|
***loop: after body, after store stack depth: 4
|
|
leaving scope 1
|
|
releasing binding Some(Binding { name: "ys", depth: 1, stack_pos: 6 })
|
|
releasing binding Some(Binding { name: "y", depth: 1, stack_pos: 5 })
|
|
***resetting the stack after loop from 4 to 4 stack depth: 4
|
|
***before loop arity adjustment stack depth: 5
|
|
***at very end of loop after load stack depth: 5
|
|
***after let expr stack depth: 5
|
|
***let binding: matching: frob
|
|
binding `frob` in sandbox
|
|
stack depth: 5; match depth: 0
|
|
at stack index: 4
|
|
new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
***after let binding stack depth: 5
|
|
resolving binding `quux` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
at locals position 1
|
|
resolving binding `frob` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
at locals position 4
|
|
leaving scope 0
|
|
releasing binding Some(Binding { name: "frob", depth: 0, stack_pos: 4 })
|
|
releasing binding Some(Binding { name: "not", depth: 0, stack_pos: 3 })
|
|
releasing binding Some(Binding { name: "foo", depth: 0, stack_pos: 2 })
|
|
releasing binding Some(Binding { name: "quux", depth: 0, stack_pos: 1 })
|
|
releasing binding Some(Binding { name: "test", depth: 0, stack_pos: 0 })
|
|
=== source code ===
|
|
let test = 3
|
|
|
|
let quux = loop ([1, 2]) with {
|
|
([]) -> false
|
|
([x]) -> eq? (x, test)
|
|
([x, ...xs]) -> if eq? (x, test)
|
|
then :yes
|
|
else recur (xs)
|
|
}
|
|
|
|
|
|
let foo = :bar
|
|
|
|
fn not {
|
|
(false) -> true
|
|
(nil) -> true
|
|
(_) -> false
|
|
}
|
|
|
|
let frob = loop ([1, 2, 3]) with {
|
|
([]) -> false
|
|
([y]) -> eq? (y, test)
|
|
([y, ...ys]) -> if not (eq? (y, test))
|
|
then recur (ys)
|
|
else true
|
|
}
|
|
|
|
[quux, frob]
|
|
|
|
|
|
|
|
|
|
=== chunk: sandbox ===
|
|
IDX | CODE | INFO
|
|
0000: ***before let binding stack depth: 0
|
|
0002: constant 00000: 3
|
|
0005: ***after let expr stack depth: 1
|
|
0007: ***let binding: matching: test
|
|
0009: reset_match
|
|
0010: match
|
|
0011: binding `test` in sandbox
|
|
0013: stack depth: 1; match depth: 0
|
|
0015: at stack index: 0
|
|
0017: new locals: test@0//0
|
|
0019: panic_if_no_match
|
|
0020: ***after let binding stack depth: 1
|
|
0022: ***before let binding stack depth: 1
|
|
0024: ***entering loop stack depth: 1
|
|
0026: push_list
|
|
0027: constant 00001: 1
|
|
0030: append_list
|
|
0031: constant 00002: 2
|
|
0034: append_list
|
|
0035: ***after loop args stack depth: 2
|
|
0037: store_n 001
|
|
0039: ***loop: after store stack depth: 1
|
|
0041: load_n 001
|
|
0043: ***loop: after load stack depth: 2
|
|
0045: reset_match
|
|
0046: ***loop clause matching: : ([])
|
|
0048: match_depth 000
|
|
0050: match_list 000
|
|
0052: jump_if_no_match 00006
|
|
0055: load_list
|
|
0056: jump 00002
|
|
0059: pop_n 000
|
|
0061: jump_if_no_match 00016
|
|
0064: ***loop: before body stack depth: 2
|
|
0066: false
|
|
0067: ***loop: after body, before store stack depth: 3
|
|
0069: store
|
|
0070: ***loop: after body, after store stack depth: 2
|
|
0072: leaving scope 1
|
|
0074: ***resetting the stack after loop from 2 to 1 stack depth: 2
|
|
0076: pop
|
|
0077: jump 00218
|
|
0080: ***loop: after load stack depth: 2
|
|
0082: reset_match
|
|
0083: ***loop clause matching: : ([x])
|
|
0085: match_depth 000
|
|
0087: match_list 001
|
|
0089: jump_if_no_match 00020
|
|
0092: load_list
|
|
0093: match_depth 000
|
|
0095: match
|
|
0096: binding `x` in sandbox
|
|
0098: stack depth: 3; match depth: 0
|
|
0100: at stack index: 2
|
|
0102: new locals: test@0//0|x@2//1
|
|
0104: jump_if_no_match 00004
|
|
0107: jump 00002
|
|
0110: pop_n 001
|
|
0112: jump_if_no_match 00044
|
|
0115: ***loop: before body stack depth: 3
|
|
0117: ***calling function eq? stack depth: 3
|
|
0119: resolving binding `x` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
0121: at locals position 2
|
|
0123: push_binding 002
|
|
0125: resolving binding `test` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
0127: at locals position 0
|
|
0129: push_binding 000
|
|
0131: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
0133: as global
|
|
0135: constant 00003: :eq?
|
|
0138: push_global
|
|
0139: ***after 2 args stack depth: 6
|
|
0141: call 002
|
|
0143: ***loop: after body, before store stack depth: 4
|
|
0145: store
|
|
0146: ***loop: after body, after store stack depth: 3
|
|
0148: leaving scope 1
|
|
0150: releasing binding Some(Binding { name: "x", depth: 1, stack_pos: 2 })
|
|
0152: ***resetting the stack after loop from 3 to 1 stack depth: 3
|
|
0154: pop_n 002
|
|
0156: jump 00139
|
|
0159: ***loop: after load stack depth: 2
|
|
0161: reset_match
|
|
0162: ***loop clause matching: : ([x, ...xs])
|
|
0164: match_depth 000
|
|
0166: match_splatted_list 002
|
|
0168: jump_if_no_match 00035
|
|
0171: load_splatted_list 002
|
|
0173: match_depth 001
|
|
0175: match
|
|
0176: binding `x` in sandbox
|
|
0178: stack depth: 4; match depth: 1
|
|
0180: at stack index: 2
|
|
0182: new locals: test@0//0|x@2//1
|
|
0184: jump_if_no_match 00018
|
|
0187: match_depth 000
|
|
0189: match
|
|
0190: binding `xs` in sandbox
|
|
0192: stack depth: 4; match depth: 0
|
|
0194: at stack index: 3
|
|
0196: new locals: test@0//0|x@2//1|xs@3//1
|
|
0198: jump_if_no_match 00004
|
|
0201: jump 00002
|
|
0204: pop_n 002
|
|
0206: jump_if_no_match 00088
|
|
0209: ***loop: before body stack depth: 4
|
|
0211: ***calling function eq? stack depth: 4
|
|
0213: resolving binding `x` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0215: at locals position 2
|
|
0217: push_binding 002
|
|
0219: resolving binding `test` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0221: at locals position 0
|
|
0223: push_binding 000
|
|
0225: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0227: as global
|
|
0229: constant 00003: :eq?
|
|
0232: push_global
|
|
0233: ***after 2 args stack depth: 7
|
|
0235: call 002
|
|
0237: ***after condition stack depth: 5
|
|
0239: jump_if_false 00008
|
|
0242: constant 00004: :yes
|
|
0245: ***after consequent stack depth: 5
|
|
0247: jump 00031
|
|
0250: ***recur: before args stack depth: 4
|
|
0252: recur arg: 0
|
|
0254: resolving binding `xs` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0256: at locals position 3
|
|
0258: push_binding 003
|
|
0260: ***recur: after args stack depth: 5
|
|
0262: store_n 001
|
|
0264: ***recur: after store stack depth: 4
|
|
0266: loop root depth: 1
|
|
0268: pop_n 003
|
|
0270: ***recur: after stack reset stack depth: 1
|
|
0272: load_n 001
|
|
0274: ***recur: after load, end of compilation stack depth: 2
|
|
0276: jump_back 00233
|
|
0279: ***after alternative stack depth: 2
|
|
0281: ***loop: after body, before store stack depth: 2
|
|
0283: store
|
|
0284: ***loop: after body, after store stack depth: 1
|
|
0286: leaving scope 1
|
|
0288: releasing binding Some(Binding { name: "xs", depth: 1, stack_pos: 3 })
|
|
0290: releasing binding Some(Binding { name: "x", depth: 1, stack_pos: 2 })
|
|
0292: ***resetting the stack after loop from 1 to 1 stack depth: 1
|
|
0294: jump 00001
|
|
0297: panic_no_match
|
|
0298: ***before loop arity adjustment stack depth: 2
|
|
0300: load
|
|
0301: ***at very end of loop after load stack depth: 2
|
|
0303: ***after let expr stack depth: 2
|
|
0305: ***let binding: matching: quux
|
|
0307: reset_match
|
|
0308: match
|
|
0309: binding `quux` in sandbox
|
|
0311: stack depth: 2; match depth: 0
|
|
0313: at stack index: 1
|
|
0315: new locals: test@0//0|quux@1//0
|
|
0317: panic_if_no_match
|
|
0318: ***after let binding stack depth: 2
|
|
0320: ***before let binding stack depth: 2
|
|
0322: constant 00005: :bar
|
|
0325: ***after let expr stack depth: 3
|
|
0327: ***let binding: matching: foo
|
|
0329: reset_match
|
|
0330: match
|
|
0331: binding `foo` in sandbox
|
|
0333: stack depth: 3; match depth: 0
|
|
0335: at stack index: 2
|
|
0337: new locals: test@0//0|quux@1//0|foo@2//0
|
|
0339: panic_if_no_match
|
|
0340: ***after let binding stack depth: 3
|
|
0342: constant 00006: fn not
|
|
0345: binding `not` in sandbox
|
|
0347: stack depth: 4; match depth: 0
|
|
0349: at stack index: 3
|
|
0351: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0
|
|
0353: ***before let binding stack depth: 4
|
|
0355: ***entering loop stack depth: 4
|
|
0357: push_list
|
|
0358: constant 00001: 1
|
|
0361: append_list
|
|
0362: constant 00002: 2
|
|
0365: append_list
|
|
0366: constant 00000: 3
|
|
0369: append_list
|
|
0370: ***after loop args stack depth: 5
|
|
0372: store_n 001
|
|
0374: ***loop: after store stack depth: 4
|
|
0376: load_n 001
|
|
0378: ***loop: after load stack depth: 5
|
|
0380: reset_match
|
|
0381: ***loop clause matching: : ([])
|
|
0383: match_depth 000
|
|
0385: match_list 000
|
|
0387: jump_if_no_match 00006
|
|
0390: load_list
|
|
0391: jump 00002
|
|
0394: pop_n 000
|
|
0396: jump_if_no_match 00016
|
|
0399: ***loop: before body stack depth: 5
|
|
0401: false
|
|
0402: ***loop: after body, before store stack depth: 6
|
|
0404: store
|
|
0405: ***loop: after body, after store stack depth: 5
|
|
0407: leaving scope 1
|
|
0409: ***resetting the stack after loop from 5 to 4 stack depth: 5
|
|
0411: pop
|
|
0412: jump 00228
|
|
0415: ***loop: after load stack depth: 5
|
|
0417: reset_match
|
|
0418: ***loop clause matching: : ([y])
|
|
0420: match_depth 000
|
|
0422: match_list 001
|
|
0424: jump_if_no_match 00020
|
|
0427: load_list
|
|
0428: match_depth 000
|
|
0430: match
|
|
0431: binding `y` in sandbox
|
|
0433: stack depth: 6; match depth: 0
|
|
0435: at stack index: 5
|
|
0437: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0439: jump_if_no_match 00004
|
|
0442: jump 00002
|
|
0445: pop_n 001
|
|
0447: jump_if_no_match 00044
|
|
0450: ***loop: before body stack depth: 6
|
|
0452: ***calling function eq? stack depth: 6
|
|
0454: resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0456: at locals position 5
|
|
0458: push_binding 005
|
|
0460: resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0462: at locals position 0
|
|
0464: push_binding 000
|
|
0466: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0468: as global
|
|
0470: constant 00003: :eq?
|
|
0473: push_global
|
|
0474: ***after 2 args stack depth: 9
|
|
0476: call 002
|
|
0478: ***loop: after body, before store stack depth: 7
|
|
0480: store
|
|
0481: ***loop: after body, after store stack depth: 6
|
|
0483: leaving scope 1
|
|
0485: releasing binding Some(Binding { name: "y", depth: 1, stack_pos: 5 })
|
|
0487: ***resetting the stack after loop from 6 to 4 stack depth: 6
|
|
0489: pop_n 002
|
|
0491: jump 00149
|
|
0494: ***loop: after load stack depth: 5
|
|
0496: reset_match
|
|
0497: ***loop clause matching: : ([y, ...ys])
|
|
0499: match_depth 000
|
|
0501: match_splatted_list 002
|
|
0503: jump_if_no_match 00035
|
|
0506: load_splatted_list 002
|
|
0508: match_depth 001
|
|
0510: match
|
|
0511: binding `y` in sandbox
|
|
0513: stack depth: 7; match depth: 1
|
|
0515: at stack index: 5
|
|
0517: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0519: jump_if_no_match 00018
|
|
0522: match_depth 000
|
|
0524: match
|
|
0525: binding `ys` in sandbox
|
|
0527: stack depth: 7; match depth: 0
|
|
0529: at stack index: 6
|
|
0531: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0533: jump_if_no_match 00004
|
|
0536: jump 00002
|
|
0539: pop_n 002
|
|
0541: jump_if_no_match 00098
|
|
0544: ***loop: before body stack depth: 7
|
|
0546: ***calling function not stack depth: 7
|
|
0548: ***calling function eq? stack depth: 7
|
|
0550: resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0552: at locals position 5
|
|
0554: push_binding 005
|
|
0556: resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0558: at locals position 0
|
|
0560: push_binding 000
|
|
0562: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0564: as global
|
|
0566: constant 00003: :eq?
|
|
0569: push_global
|
|
0570: ***after 2 args stack depth: 10
|
|
0572: call 002
|
|
0574: resolving binding `not` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0576: at locals position 3
|
|
0578: push_binding 003
|
|
0580: ***after 1 args stack depth: 9
|
|
0582: call 001
|
|
0584: ***after condition stack depth: 8
|
|
0586: jump_if_false 00034
|
|
0589: ***recur: before args stack depth: 7
|
|
0591: recur arg: 0
|
|
0593: resolving binding `ys` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0595: at locals position 6
|
|
0597: push_binding 006
|
|
0599: ***recur: after args stack depth: 8
|
|
0601: store_n 001
|
|
0603: ***recur: after store stack depth: 7
|
|
0605: loop root depth: 4
|
|
0607: pop_n 003
|
|
0609: ***recur: after stack reset stack depth: 4
|
|
0611: load_n 001
|
|
0613: ***recur: after load, end of compilation stack depth: 5
|
|
0615: jump_back 00237
|
|
0618: ***after consequent stack depth: 5
|
|
0620: jump 00003
|
|
0623: true
|
|
0624: ***after alternative stack depth: 5
|
|
0626: ***loop: after body, before store stack depth: 5
|
|
0628: store
|
|
0629: ***loop: after body, after store stack depth: 4
|
|
0631: leaving scope 1
|
|
0633: releasing binding Some(Binding { name: "ys", depth: 1, stack_pos: 6 })
|
|
0635: releasing binding Some(Binding { name: "y", depth: 1, stack_pos: 5 })
|
|
0637: ***resetting the stack after loop from 4 to 4 stack depth: 4
|
|
0639: jump 00001
|
|
0642: panic_no_match
|
|
0643: ***before loop arity adjustment stack depth: 5
|
|
0645: load
|
|
0646: ***at very end of loop after load stack depth: 5
|
|
0648: ***after let expr stack depth: 5
|
|
0650: ***let binding: matching: frob
|
|
0652: reset_match
|
|
0653: match
|
|
0654: binding `frob` in sandbox
|
|
0656: stack depth: 5; match depth: 0
|
|
0658: at stack index: 4
|
|
0660: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
0662: panic_if_no_match
|
|
0663: ***after let binding stack depth: 5
|
|
0665: push_list
|
|
0666: resolving binding `quux` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
0668: at locals position 1
|
|
0670: push_binding 001
|
|
0672: append_list
|
|
0673: resolving binding `frob` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
0675: at locals position 4
|
|
0677: push_binding 004
|
|
0679: append_list
|
|
0680: store
|
|
0681: leaving scope 0
|
|
0683: releasing binding Some(Binding { name: "frob", depth: 0, stack_pos: 4 })
|
|
0685: releasing binding Some(Binding { name: "not", depth: 0, stack_pos: 3 })
|
|
0687: releasing binding Some(Binding { name: "foo", depth: 0, stack_pos: 2 })
|
|
0689: releasing binding Some(Binding { name: "quux", depth: 0, stack_pos: 1 })
|
|
0691: releasing binding Some(Binding { name: "test", depth: 0, stack_pos: 0 })
|
|
0693: pop_n 005
|
|
0695: load
|
|
|
|
|
|
|
|
=== vm run ===
|
|
0000: [] (_,_,_,_,_,_,_,_)
|
|
0000: ***before let binding stack depth: 0
|
|
0002: [] (_,_,_,_,_,_,_,_)
|
|
0002: constant 00000: 3
|
|
0005: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0005: ***after let expr stack depth: 1
|
|
0007: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0007: ***let binding: matching: test
|
|
0009: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0009: reset_match
|
|
0010: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0010: match
|
|
0011: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0011: binding `test` in sandbox
|
|
0013: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0013: stack depth: 1; match depth: 0
|
|
0015: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0015: at stack index: 0
|
|
0017: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0017: new locals: test@0//0
|
|
0019: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0019: panic_if_no_match
|
|
0020: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0020: ***after let binding stack depth: 1
|
|
0022: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0022: ***before let binding stack depth: 1
|
|
0024: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0024: ***entering loop stack depth: 1
|
|
0026: [->3<-] (_,_,_,_,_,_,_,_)
|
|
0026: push_list
|
|
0027: [->3<-|[]] (_,_,_,_,_,_,_,_)
|
|
0027: constant 00001: 1
|
|
0030: [->3<-|[]|1] (_,_,_,_,_,_,_,_)
|
|
0030: append_list
|
|
0031: [->3<-|[1]] (_,_,_,_,_,_,_,_)
|
|
0031: constant 00002: 2
|
|
0034: [->3<-|[1]|2] (_,_,_,_,_,_,_,_)
|
|
0034: append_list
|
|
0035: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0035: ***after loop args stack depth: 2
|
|
0037: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0037: store_n 001
|
|
0039: [->3<-] ([1, 2],_,_,_,_,_,_,_)
|
|
0039: ***loop: after store stack depth: 1
|
|
0041: [->3<-] ([1, 2],_,_,_,_,_,_,_)
|
|
0041: load_n 001
|
|
0043: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0043: ***loop: after load stack depth: 2
|
|
0045: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0045: reset_match
|
|
0046: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0046: ***loop clause matching: : ([])
|
|
0048: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0048: match_depth 000
|
|
0050: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0050: match_list 000
|
|
0052: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0052: jump_if_no_match 00006
|
|
0061: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0061: jump_if_no_match 00016
|
|
0080: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0080: ***loop: after load stack depth: 2
|
|
0082: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0082: reset_match
|
|
0083: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0083: ***loop clause matching: : ([x])
|
|
0085: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0085: match_depth 000
|
|
0087: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0087: match_list 001
|
|
0089: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0089: jump_if_no_match 00020
|
|
0112: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0112: jump_if_no_match 00044
|
|
0159: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0159: ***loop: after load stack depth: 2
|
|
0161: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0161: reset_match
|
|
0162: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0162: ***loop clause matching: : ([x, ...xs])
|
|
0164: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0164: match_depth 000
|
|
0166: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0166: match_splatted_list 002
|
|
0168: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0168: jump_if_no_match 00035
|
|
0171: [->3<-|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0171: load_splatted_list 002
|
|
0173: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0173: match_depth 001
|
|
0175: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0175: match
|
|
0176: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0176: binding `x` in sandbox
|
|
0178: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0178: stack depth: 4; match depth: 1
|
|
0180: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0180: at stack index: 2
|
|
0182: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0182: new locals: test@0//0|x@2//1
|
|
0184: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0184: jump_if_no_match 00018
|
|
0187: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0187: match_depth 000
|
|
0189: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0189: match
|
|
0190: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0190: binding `xs` in sandbox
|
|
0192: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0192: stack depth: 4; match depth: 0
|
|
0194: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0194: at stack index: 3
|
|
0196: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0196: new locals: test@0//0|x@2//1|xs@3//1
|
|
0198: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0198: jump_if_no_match 00004
|
|
0201: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0201: jump 00002
|
|
0206: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0206: jump_if_no_match 00088
|
|
0209: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0209: ***loop: before body stack depth: 4
|
|
0211: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0211: ***calling function eq? stack depth: 4
|
|
0213: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0213: resolving binding `x` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0215: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0215: at locals position 2
|
|
0217: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0217: push_binding 002
|
|
0219: [->3<-|[1, 2]|1|[2]|1] (_,_,_,_,_,_,_,_)
|
|
0219: resolving binding `test` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0221: [->3<-|[1, 2]|1|[2]|1] (_,_,_,_,_,_,_,_)
|
|
0221: at locals position 0
|
|
0223: [->3<-|[1, 2]|1|[2]|1] (_,_,_,_,_,_,_,_)
|
|
0223: push_binding 000
|
|
0225: [->3<-|[1, 2]|1|[2]|1|3] (_,_,_,_,_,_,_,_)
|
|
0225: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0227: [->3<-|[1, 2]|1|[2]|1|3] (_,_,_,_,_,_,_,_)
|
|
0227: as global
|
|
0229: [->3<-|[1, 2]|1|[2]|1|3] (_,_,_,_,_,_,_,_)
|
|
0229: constant 00003: :eq?
|
|
0232: [->3<-|[1, 2]|1|[2]|1|3|:eq?] (_,_,_,_,_,_,_,_)
|
|
0232: push_global
|
|
0233: [->3<-|[1, 2]|1|[2]|1|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0233: ***after 2 args stack depth: 7
|
|
0235: [->3<-|[1, 2]|1|[2]|1|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0235: call 002
|
|
=== calling into fn eq?/2 ===
|
|
0000: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (x, y)
|
|
0003: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 001
|
|
0005: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0005: match
|
|
0006: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0006: binding `x` in eq?
|
|
0008: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0008: stack depth: 2; match depth: 1
|
|
0010: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0010: at stack index: 0
|
|
0012: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0012: new locals: x@0//0
|
|
0014: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0014: jump_if_no_match 00017
|
|
0017: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0017: match_depth 000
|
|
0019: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0019: match
|
|
0020: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0020: binding `y` in eq?
|
|
0022: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0022: stack depth: 2; match depth: 0
|
|
0024: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0024: at stack index: 1
|
|
0026: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0026: new locals: x@0//0|y@1//0
|
|
0028: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0028: jump_if_no_match 00003
|
|
0031: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0031: jump 00000
|
|
0034: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0034: jump_if_no_match 00034
|
|
0037: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0037: ***accessing keyword: base :eq? stack depth: 2
|
|
0039: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0039: resolving binding `base` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0041: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0041: as enclosing upvalue 0
|
|
0043: [3|[1, 2]|1|[2]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0043: get_upvalue 000
|
|
0045: [3|[1, 2]|1|[2]|->1<-|3|#{:trim fn trim/base...] (_,_,_,_,_,_,_,_)
|
|
0045: constant 00000: :eq?
|
|
0048: [3|[1, 2]|1|[2]|->1<-|3|#{:trim fn trim/base...|:eq?] (_,_,_,_,_,_,_,_)
|
|
0048: get_key
|
|
0049: [3|[1, 2]|1|[2]|->1<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0049: ***after keyword access stack depth: 3
|
|
0051: [3|[1, 2]|1|[2]|->1<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0051: stash
|
|
0052: [3|[1, 2]|1|[2]|->1<-|3|fn eq?/base] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0052: pop
|
|
0053: [3|[1, 2]|1|[2]|->1<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0053: resolving binding `x` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0055: [3|[1, 2]|1|[2]|->1<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0055: at locals position 0
|
|
0057: [3|[1, 2]|1|[2]|->1<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0057: push_binding 000
|
|
0059: [3|[1, 2]|1|[2]|->1<-|3|1] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0059: resolving binding `y` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0061: [3|[1, 2]|1|[2]|->1<-|3|1] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0061: at locals position 1
|
|
0063: [3|[1, 2]|1|[2]|->1<-|3|1] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0063: push_binding 001
|
|
0065: [3|[1, 2]|1|[2]|->1<-|3|1|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0065: load
|
|
0066: [3|[1, 2]|1|[2]|->1<-|3|1|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0066: tail_call 002
|
|
=== tail call into fn eq?/base/2 from eq? ===
|
|
0237: [->3<-|[1, 2]|1|[2]|false] (_,_,_,_,_,_,_,_)
|
|
0237: ***after condition stack depth: 5
|
|
0239: [->3<-|[1, 2]|1|[2]|false] (_,_,_,_,_,_,_,_)
|
|
0239: jump_if_false 00008
|
|
0250: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0250: ***recur: before args stack depth: 4
|
|
0252: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0252: recur arg: 0
|
|
0254: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0254: resolving binding `xs` in sandbox
|
|
locals: test@0//0|x@2//1|xs@3//1
|
|
0256: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0256: at locals position 3
|
|
0258: [->3<-|[1, 2]|1|[2]] (_,_,_,_,_,_,_,_)
|
|
0258: push_binding 003
|
|
0260: [->3<-|[1, 2]|1|[2]|[2]] (_,_,_,_,_,_,_,_)
|
|
0260: ***recur: after args stack depth: 5
|
|
0262: [->3<-|[1, 2]|1|[2]|[2]] (_,_,_,_,_,_,_,_)
|
|
0262: store_n 001
|
|
0264: [->3<-|[1, 2]|1|[2]] ([2],_,_,_,_,_,_,_)
|
|
0264: ***recur: after store stack depth: 4
|
|
0266: [->3<-|[1, 2]|1|[2]] ([2],_,_,_,_,_,_,_)
|
|
0266: loop root depth: 1
|
|
0268: [->3<-|[1, 2]|1|[2]] ([2],_,_,_,_,_,_,_)
|
|
0268: pop_n 003
|
|
0270: [->3<-] ([2],_,_,_,_,_,_,_)
|
|
0270: ***recur: after stack reset stack depth: 1
|
|
0272: [->3<-] ([2],_,_,_,_,_,_,_)
|
|
0272: load_n 001
|
|
0274: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0274: ***recur: after load, end of compilation stack depth: 2
|
|
0276: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0276: jump_back 00233
|
|
0043: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0043: ***loop: after load stack depth: 2
|
|
0045: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0045: reset_match
|
|
0046: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0046: ***loop clause matching: : ([])
|
|
0048: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0048: match_depth 000
|
|
0050: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0050: match_list 000
|
|
0052: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0052: jump_if_no_match 00006
|
|
0061: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0061: jump_if_no_match 00016
|
|
0080: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0080: ***loop: after load stack depth: 2
|
|
0082: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0082: reset_match
|
|
0083: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0083: ***loop clause matching: : ([x])
|
|
0085: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0085: match_depth 000
|
|
0087: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0087: match_list 001
|
|
0089: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0089: jump_if_no_match 00020
|
|
0092: [->3<-|[2]] (_,_,_,_,_,_,_,_)
|
|
0092: load_list
|
|
0093: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0093: match_depth 000
|
|
0095: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0095: match
|
|
0096: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0096: binding `x` in sandbox
|
|
0098: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0098: stack depth: 3; match depth: 0
|
|
0100: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0100: at stack index: 2
|
|
0102: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0102: new locals: test@0//0|x@2//1
|
|
0104: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0104: jump_if_no_match 00004
|
|
0107: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0107: jump 00002
|
|
0112: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0112: jump_if_no_match 00044
|
|
0115: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0115: ***loop: before body stack depth: 3
|
|
0117: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0117: ***calling function eq? stack depth: 3
|
|
0119: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0119: resolving binding `x` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
0121: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0121: at locals position 2
|
|
0123: [->3<-|[2]|2] (_,_,_,_,_,_,_,_)
|
|
0123: push_binding 002
|
|
0125: [->3<-|[2]|2|2] (_,_,_,_,_,_,_,_)
|
|
0125: resolving binding `test` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
0127: [->3<-|[2]|2|2] (_,_,_,_,_,_,_,_)
|
|
0127: at locals position 0
|
|
0129: [->3<-|[2]|2|2] (_,_,_,_,_,_,_,_)
|
|
0129: push_binding 000
|
|
0131: [->3<-|[2]|2|2|3] (_,_,_,_,_,_,_,_)
|
|
0131: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|x@2//1
|
|
0133: [->3<-|[2]|2|2|3] (_,_,_,_,_,_,_,_)
|
|
0133: as global
|
|
0135: [->3<-|[2]|2|2|3] (_,_,_,_,_,_,_,_)
|
|
0135: constant 00003: :eq?
|
|
0138: [->3<-|[2]|2|2|3|:eq?] (_,_,_,_,_,_,_,_)
|
|
0138: push_global
|
|
0139: [->3<-|[2]|2|2|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0139: ***after 2 args stack depth: 6
|
|
0141: [->3<-|[2]|2|2|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0141: call 002
|
|
=== calling into fn eq?/2 ===
|
|
0000: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (x, y)
|
|
0003: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 001
|
|
0005: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0005: match
|
|
0006: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0006: binding `x` in eq?
|
|
0008: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0008: stack depth: 2; match depth: 1
|
|
0010: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0010: at stack index: 0
|
|
0012: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0012: new locals: x@0//0
|
|
0014: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0014: jump_if_no_match 00017
|
|
0017: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0017: match_depth 000
|
|
0019: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0019: match
|
|
0020: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0020: binding `y` in eq?
|
|
0022: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0022: stack depth: 2; match depth: 0
|
|
0024: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0024: at stack index: 1
|
|
0026: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0026: new locals: x@0//0|y@1//0
|
|
0028: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0028: jump_if_no_match 00003
|
|
0031: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0031: jump 00000
|
|
0034: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0034: jump_if_no_match 00034
|
|
0037: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0037: ***accessing keyword: base :eq? stack depth: 2
|
|
0039: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0039: resolving binding `base` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0041: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0041: as enclosing upvalue 0
|
|
0043: [3|[2]|2|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0043: get_upvalue 000
|
|
0045: [3|[2]|2|->2<-|3|#{:trim fn trim/base...] (_,_,_,_,_,_,_,_)
|
|
0045: constant 00000: :eq?
|
|
0048: [3|[2]|2|->2<-|3|#{:trim fn trim/base...|:eq?] (_,_,_,_,_,_,_,_)
|
|
0048: get_key
|
|
0049: [3|[2]|2|->2<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0049: ***after keyword access stack depth: 3
|
|
0051: [3|[2]|2|->2<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0051: stash
|
|
0052: [3|[2]|2|->2<-|3|fn eq?/base] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0052: pop
|
|
0053: [3|[2]|2|->2<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0053: resolving binding `x` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0055: [3|[2]|2|->2<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0055: at locals position 0
|
|
0057: [3|[2]|2|->2<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0057: push_binding 000
|
|
0059: [3|[2]|2|->2<-|3|2] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0059: resolving binding `y` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0061: [3|[2]|2|->2<-|3|2] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0061: at locals position 1
|
|
0063: [3|[2]|2|->2<-|3|2] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0063: push_binding 001
|
|
0065: [3|[2]|2|->2<-|3|2|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0065: load
|
|
0066: [3|[2]|2|->2<-|3|2|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0066: tail_call 002
|
|
=== tail call into fn eq?/base/2 from eq? ===
|
|
0143: [->3<-|[2]|2|false] (_,_,_,_,_,_,_,_)
|
|
0143: ***loop: after body, before store stack depth: 4
|
|
0145: [->3<-|[2]|2|false] (_,_,_,_,_,_,_,_)
|
|
0145: store
|
|
0146: [->3<-|[2]|2] (false,_,_,_,_,_,_,_)
|
|
0146: ***loop: after body, after store stack depth: 3
|
|
0148: [->3<-|[2]|2] (false,_,_,_,_,_,_,_)
|
|
0148: leaving scope 1
|
|
0150: [->3<-|[2]|2] (false,_,_,_,_,_,_,_)
|
|
0150: releasing binding Some(Binding { name: "x", depth: 1, stack_pos: 2 })
|
|
0152: [->3<-|[2]|2] (false,_,_,_,_,_,_,_)
|
|
0152: ***resetting the stack after loop from 3 to 1 stack depth: 3
|
|
0154: [->3<-|[2]|2] (false,_,_,_,_,_,_,_)
|
|
0154: pop_n 002
|
|
0156: [->3<-] (false,_,_,_,_,_,_,_)
|
|
0156: jump 00139
|
|
0298: [->3<-] (false,_,_,_,_,_,_,_)
|
|
0298: ***before loop arity adjustment stack depth: 2
|
|
0300: [->3<-] (false,_,_,_,_,_,_,_)
|
|
0300: load
|
|
0301: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0301: ***at very end of loop after load stack depth: 2
|
|
0303: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0303: ***after let expr stack depth: 2
|
|
0305: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0305: ***let binding: matching: quux
|
|
0307: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0307: reset_match
|
|
0308: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0308: match
|
|
0309: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0309: binding `quux` in sandbox
|
|
0311: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0311: stack depth: 2; match depth: 0
|
|
0313: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0313: at stack index: 1
|
|
0315: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0315: new locals: test@0//0|quux@1//0
|
|
0317: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0317: panic_if_no_match
|
|
0318: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0318: ***after let binding stack depth: 2
|
|
0320: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0320: ***before let binding stack depth: 2
|
|
0322: [->3<-|false] (_,_,_,_,_,_,_,_)
|
|
0322: constant 00005: :bar
|
|
0325: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0325: ***after let expr stack depth: 3
|
|
0327: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0327: ***let binding: matching: foo
|
|
0329: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0329: reset_match
|
|
0330: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0330: match
|
|
0331: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0331: binding `foo` in sandbox
|
|
0333: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0333: stack depth: 3; match depth: 0
|
|
0335: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0335: at stack index: 2
|
|
0337: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0337: new locals: test@0//0|quux@1//0|foo@2//0
|
|
0339: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0339: panic_if_no_match
|
|
0340: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0340: ***after let binding stack depth: 3
|
|
0342: [->3<-|false|:bar] (_,_,_,_,_,_,_,_)
|
|
0342: constant 00006: fn not
|
|
0345: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0345: binding `not` in sandbox
|
|
0347: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0347: stack depth: 4; match depth: 0
|
|
0349: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0349: at stack index: 3
|
|
0351: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0351: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0
|
|
0353: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0353: ***before let binding stack depth: 4
|
|
0355: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0355: ***entering loop stack depth: 4
|
|
0357: [->3<-|false|:bar|fn not] (_,_,_,_,_,_,_,_)
|
|
0357: push_list
|
|
0358: [->3<-|false|:bar|fn not|[]] (_,_,_,_,_,_,_,_)
|
|
0358: constant 00001: 1
|
|
0361: [->3<-|false|:bar|fn not|[]|1] (_,_,_,_,_,_,_,_)
|
|
0361: append_list
|
|
0362: [->3<-|false|:bar|fn not|[1]] (_,_,_,_,_,_,_,_)
|
|
0362: constant 00002: 2
|
|
0365: [->3<-|false|:bar|fn not|[1]|2] (_,_,_,_,_,_,_,_)
|
|
0365: append_list
|
|
0366: [->3<-|false|:bar|fn not|[1, 2]] (_,_,_,_,_,_,_,_)
|
|
0366: constant 00000: 3
|
|
0369: [->3<-|false|:bar|fn not|[1, 2]|3] (_,_,_,_,_,_,_,_)
|
|
0369: append_list
|
|
0370: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0370: ***after loop args stack depth: 5
|
|
0372: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0372: store_n 001
|
|
0374: [->3<-|false|:bar|fn not] ([1, 2, 3],_,_,_,_,_,_,_)
|
|
0374: ***loop: after store stack depth: 4
|
|
0376: [->3<-|false|:bar|fn not] ([1, 2, 3],_,_,_,_,_,_,_)
|
|
0376: load_n 001
|
|
0378: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0378: ***loop: after load stack depth: 5
|
|
0380: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0380: reset_match
|
|
0381: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0381: ***loop clause matching: : ([])
|
|
0383: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0383: match_depth 000
|
|
0385: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0385: match_list 000
|
|
0387: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0387: jump_if_no_match 00006
|
|
0396: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0396: jump_if_no_match 00016
|
|
0415: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0415: ***loop: after load stack depth: 5
|
|
0417: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0417: reset_match
|
|
0418: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0418: ***loop clause matching: : ([y])
|
|
0420: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0420: match_depth 000
|
|
0422: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0422: match_list 001
|
|
0424: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0424: jump_if_no_match 00020
|
|
0447: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0447: jump_if_no_match 00044
|
|
0494: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0494: ***loop: after load stack depth: 5
|
|
0496: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0496: reset_match
|
|
0497: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0497: ***loop clause matching: : ([y, ...ys])
|
|
0499: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0499: match_depth 000
|
|
0501: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0501: match_splatted_list 002
|
|
0503: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0503: jump_if_no_match 00035
|
|
0506: [->3<-|false|:bar|fn not|[1, 2, 3]] (_,_,_,_,_,_,_,_)
|
|
0506: load_splatted_list 002
|
|
0508: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0508: match_depth 001
|
|
0510: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0510: match
|
|
0511: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0511: binding `y` in sandbox
|
|
0513: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0513: stack depth: 7; match depth: 1
|
|
0515: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0515: at stack index: 5
|
|
0517: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0517: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0519: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0519: jump_if_no_match 00018
|
|
0522: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0522: match_depth 000
|
|
0524: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0524: match
|
|
0525: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0525: binding `ys` in sandbox
|
|
0527: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0527: stack depth: 7; match depth: 0
|
|
0529: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0529: at stack index: 6
|
|
0531: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0531: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0533: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0533: jump_if_no_match 00004
|
|
0536: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0536: jump 00002
|
|
0541: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0541: jump_if_no_match 00098
|
|
0544: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0544: ***loop: before body stack depth: 7
|
|
0546: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0546: ***calling function not stack depth: 7
|
|
0548: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0548: ***calling function eq? stack depth: 7
|
|
0550: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0550: resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0552: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0552: at locals position 5
|
|
0554: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0554: push_binding 005
|
|
0556: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1] (_,_,_,_,_,_,_,_)
|
|
0556: resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0558: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1] (_,_,_,_,_,_,_,_)
|
|
0558: at locals position 0
|
|
0560: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1] (_,_,_,_,_,_,_,_)
|
|
0560: push_binding 000
|
|
0562: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1|3] (_,_,_,_,_,_,_,_)
|
|
0562: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0564: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1|3] (_,_,_,_,_,_,_,_)
|
|
0564: as global
|
|
0566: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1|3] (_,_,_,_,_,_,_,_)
|
|
0566: constant 00003: :eq?
|
|
0569: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1|3|:eq?] (_,_,_,_,_,_,_,_)
|
|
0569: push_global
|
|
0570: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0570: ***after 2 args stack depth: 10
|
|
0572: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|1|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0572: call 002
|
|
=== calling into fn eq?/2 ===
|
|
0000: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (x, y)
|
|
0003: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 001
|
|
0005: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0005: match
|
|
0006: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0006: binding `x` in eq?
|
|
0008: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0008: stack depth: 2; match depth: 1
|
|
0010: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0010: at stack index: 0
|
|
0012: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0012: new locals: x@0//0
|
|
0014: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0014: jump_if_no_match 00017
|
|
0017: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0017: match_depth 000
|
|
0019: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0019: match
|
|
0020: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0020: binding `y` in eq?
|
|
0022: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0022: stack depth: 2; match depth: 0
|
|
0024: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0024: at stack index: 1
|
|
0026: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0026: new locals: x@0//0|y@1//0
|
|
0028: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0028: jump_if_no_match 00003
|
|
0031: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0031: jump 00000
|
|
0034: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0034: jump_if_no_match 00034
|
|
0037: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0037: ***accessing keyword: base :eq? stack depth: 2
|
|
0039: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0039: resolving binding `base` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0041: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0041: as enclosing upvalue 0
|
|
0043: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (_,_,_,_,_,_,_,_)
|
|
0043: get_upvalue 000
|
|
0045: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|#{:trim fn trim/base...] (_,_,_,_,_,_,_,_)
|
|
0045: constant 00000: :eq?
|
|
0048: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|#{:trim fn trim/base...|:eq?] (_,_,_,_,_,_,_,_)
|
|
0048: get_key
|
|
0049: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0049: ***after keyword access stack depth: 3
|
|
0051: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0051: stash
|
|
0052: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|fn eq?/base] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0052: pop
|
|
0053: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0053: resolving binding `x` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0055: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0055: at locals position 0
|
|
0057: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0057: push_binding 000
|
|
0059: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|1] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0059: resolving binding `y` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0061: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|1] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0061: at locals position 1
|
|
0063: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|1] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0063: push_binding 001
|
|
0065: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|1|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0065: load
|
|
0066: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->1<-|3|1|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0066: tail_call 002
|
|
=== tail call into fn eq?/base/2 from eq? ===
|
|
0574: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|false] (_,_,_,_,_,_,_,_)
|
|
0574: resolving binding `not` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0576: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|false] (_,_,_,_,_,_,_,_)
|
|
0576: at locals position 3
|
|
0578: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|false] (_,_,_,_,_,_,_,_)
|
|
0578: push_binding 003
|
|
0580: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|false|fn not] (_,_,_,_,_,_,_,_)
|
|
0580: ***after 1 args stack depth: 9
|
|
0582: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|false|fn not] (_,_,_,_,_,_,_,_)
|
|
0582: call 001
|
|
=== calling into fn not/1 ===
|
|
0000: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (false)
|
|
0003: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 000
|
|
0005: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0005: match_false
|
|
0006: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0006: jump_if_no_match 00003
|
|
0009: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0009: jump 00000
|
|
0012: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0012: jump_if_no_match 00004
|
|
0015: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0015: true
|
|
0016: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-|true] (_,_,_,_,_,_,_,_)
|
|
0016: store
|
|
0017: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|->false<-] (true,_,_,_,_,_,_,_)
|
|
0017: pop
|
|
0018: [3|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (true,_,_,_,_,_,_,_)
|
|
0018: return
|
|
== returning from fn not ==
|
|
0584: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|true] (_,_,_,_,_,_,_,_)
|
|
0584: ***after condition stack depth: 8
|
|
0586: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|true] (_,_,_,_,_,_,_,_)
|
|
0586: jump_if_false 00034
|
|
0589: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0589: ***recur: before args stack depth: 7
|
|
0591: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0591: recur arg: 0
|
|
0593: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0593: resolving binding `ys` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0595: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0595: at locals position 6
|
|
0597: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0597: push_binding 006
|
|
0599: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0599: ***recur: after args stack depth: 8
|
|
0601: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0601: store_n 001
|
|
0603: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] ([2, 3],_,_,_,_,_,_,_)
|
|
0603: ***recur: after store stack depth: 7
|
|
0605: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] ([2, 3],_,_,_,_,_,_,_)
|
|
0605: loop root depth: 4
|
|
0607: [->3<-|false|:bar|fn not|[1, 2, 3]|1|[2, 3]] ([2, 3],_,_,_,_,_,_,_)
|
|
0607: pop_n 003
|
|
0609: [->3<-|false|:bar|fn not] ([2, 3],_,_,_,_,_,_,_)
|
|
0609: ***recur: after stack reset stack depth: 4
|
|
0611: [->3<-|false|:bar|fn not] ([2, 3],_,_,_,_,_,_,_)
|
|
0611: load_n 001
|
|
0613: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0613: ***recur: after load, end of compilation stack depth: 5
|
|
0615: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0615: jump_back 00237
|
|
0378: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0378: ***loop: after load stack depth: 5
|
|
0380: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0380: reset_match
|
|
0381: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0381: ***loop clause matching: : ([])
|
|
0383: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0383: match_depth 000
|
|
0385: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0385: match_list 000
|
|
0387: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0387: jump_if_no_match 00006
|
|
0396: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0396: jump_if_no_match 00016
|
|
0415: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0415: ***loop: after load stack depth: 5
|
|
0417: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0417: reset_match
|
|
0418: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0418: ***loop clause matching: : ([y])
|
|
0420: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0420: match_depth 000
|
|
0422: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0422: match_list 001
|
|
0424: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0424: jump_if_no_match 00020
|
|
0447: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0447: jump_if_no_match 00044
|
|
0494: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0494: ***loop: after load stack depth: 5
|
|
0496: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0496: reset_match
|
|
0497: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0497: ***loop clause matching: : ([y, ...ys])
|
|
0499: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0499: match_depth 000
|
|
0501: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0501: match_splatted_list 002
|
|
0503: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0503: jump_if_no_match 00035
|
|
0506: [->3<-|false|:bar|fn not|[2, 3]] (_,_,_,_,_,_,_,_)
|
|
0506: load_splatted_list 002
|
|
0508: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0508: match_depth 001
|
|
0510: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0510: match
|
|
0511: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0511: binding `y` in sandbox
|
|
0513: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0513: stack depth: 7; match depth: 1
|
|
0515: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0515: at stack index: 5
|
|
0517: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0517: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0519: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0519: jump_if_no_match 00018
|
|
0522: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0522: match_depth 000
|
|
0524: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0524: match
|
|
0525: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0525: binding `ys` in sandbox
|
|
0527: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0527: stack depth: 7; match depth: 0
|
|
0529: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0529: at stack index: 6
|
|
0531: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0531: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0533: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0533: jump_if_no_match 00004
|
|
0536: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0536: jump 00002
|
|
0541: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0541: jump_if_no_match 00098
|
|
0544: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0544: ***loop: before body stack depth: 7
|
|
0546: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0546: ***calling function not stack depth: 7
|
|
0548: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0548: ***calling function eq? stack depth: 7
|
|
0550: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0550: resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0552: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0552: at locals position 5
|
|
0554: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0554: push_binding 005
|
|
0556: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2] (_,_,_,_,_,_,_,_)
|
|
0556: resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0558: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2] (_,_,_,_,_,_,_,_)
|
|
0558: at locals position 0
|
|
0560: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2] (_,_,_,_,_,_,_,_)
|
|
0560: push_binding 000
|
|
0562: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2|3] (_,_,_,_,_,_,_,_)
|
|
0562: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0564: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2|3] (_,_,_,_,_,_,_,_)
|
|
0564: as global
|
|
0566: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2|3] (_,_,_,_,_,_,_,_)
|
|
0566: constant 00003: :eq?
|
|
0569: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2|3|:eq?] (_,_,_,_,_,_,_,_)
|
|
0569: push_global
|
|
0570: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0570: ***after 2 args stack depth: 10
|
|
0572: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|2|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0572: call 002
|
|
=== calling into fn eq?/2 ===
|
|
0000: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (x, y)
|
|
0003: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 001
|
|
0005: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0005: match
|
|
0006: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0006: binding `x` in eq?
|
|
0008: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0008: stack depth: 2; match depth: 1
|
|
0010: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0010: at stack index: 0
|
|
0012: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0012: new locals: x@0//0
|
|
0014: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0014: jump_if_no_match 00017
|
|
0017: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0017: match_depth 000
|
|
0019: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0019: match
|
|
0020: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0020: binding `y` in eq?
|
|
0022: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0022: stack depth: 2; match depth: 0
|
|
0024: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0024: at stack index: 1
|
|
0026: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0026: new locals: x@0//0|y@1//0
|
|
0028: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0028: jump_if_no_match 00003
|
|
0031: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0031: jump 00000
|
|
0034: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0034: jump_if_no_match 00034
|
|
0037: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0037: ***accessing keyword: base :eq? stack depth: 2
|
|
0039: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0039: resolving binding `base` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0041: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0041: as enclosing upvalue 0
|
|
0043: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (_,_,_,_,_,_,_,_)
|
|
0043: get_upvalue 000
|
|
0045: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|#{:trim fn trim/base...] (_,_,_,_,_,_,_,_)
|
|
0045: constant 00000: :eq?
|
|
0048: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|#{:trim fn trim/base...|:eq?] (_,_,_,_,_,_,_,_)
|
|
0048: get_key
|
|
0049: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0049: ***after keyword access stack depth: 3
|
|
0051: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0051: stash
|
|
0052: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|fn eq?/base] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0052: pop
|
|
0053: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0053: resolving binding `x` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0055: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0055: at locals position 0
|
|
0057: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0057: push_binding 000
|
|
0059: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|2] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0059: resolving binding `y` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0061: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|2] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0061: at locals position 1
|
|
0063: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|2] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0063: push_binding 001
|
|
0065: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|2|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0065: load
|
|
0066: [3|false|:bar|fn not|[2, 3]|2|[3]|->2<-|3|2|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0066: tail_call 002
|
|
=== tail call into fn eq?/base/2 from eq? ===
|
|
0574: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|false] (_,_,_,_,_,_,_,_)
|
|
0574: resolving binding `not` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0576: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|false] (_,_,_,_,_,_,_,_)
|
|
0576: at locals position 3
|
|
0578: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|false] (_,_,_,_,_,_,_,_)
|
|
0578: push_binding 003
|
|
0580: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|false|fn not] (_,_,_,_,_,_,_,_)
|
|
0580: ***after 1 args stack depth: 9
|
|
0582: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|false|fn not] (_,_,_,_,_,_,_,_)
|
|
0582: call 001
|
|
=== calling into fn not/1 ===
|
|
0000: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (false)
|
|
0003: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 000
|
|
0005: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0005: match_false
|
|
0006: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0006: jump_if_no_match 00003
|
|
0009: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0009: jump 00000
|
|
0012: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0012: jump_if_no_match 00004
|
|
0015: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (_,_,_,_,_,_,_,_)
|
|
0015: true
|
|
0016: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-|true] (_,_,_,_,_,_,_,_)
|
|
0016: store
|
|
0017: [3|false|:bar|fn not|[2, 3]|2|[3]|->false<-] (true,_,_,_,_,_,_,_)
|
|
0017: pop
|
|
0018: [3|false|:bar|fn not|[2, 3]|2|[3]] (true,_,_,_,_,_,_,_)
|
|
0018: return
|
|
== returning from fn not ==
|
|
0584: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|true] (_,_,_,_,_,_,_,_)
|
|
0584: ***after condition stack depth: 8
|
|
0586: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|true] (_,_,_,_,_,_,_,_)
|
|
0586: jump_if_false 00034
|
|
0589: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0589: ***recur: before args stack depth: 7
|
|
0591: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0591: recur arg: 0
|
|
0593: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0593: resolving binding `ys` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1|ys@6//1
|
|
0595: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0595: at locals position 6
|
|
0597: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] (_,_,_,_,_,_,_,_)
|
|
0597: push_binding 006
|
|
0599: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|[3]] (_,_,_,_,_,_,_,_)
|
|
0599: ***recur: after args stack depth: 8
|
|
0601: [->3<-|false|:bar|fn not|[2, 3]|2|[3]|[3]] (_,_,_,_,_,_,_,_)
|
|
0601: store_n 001
|
|
0603: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] ([3],_,_,_,_,_,_,_)
|
|
0603: ***recur: after store stack depth: 7
|
|
0605: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] ([3],_,_,_,_,_,_,_)
|
|
0605: loop root depth: 4
|
|
0607: [->3<-|false|:bar|fn not|[2, 3]|2|[3]] ([3],_,_,_,_,_,_,_)
|
|
0607: pop_n 003
|
|
0609: [->3<-|false|:bar|fn not] ([3],_,_,_,_,_,_,_)
|
|
0609: ***recur: after stack reset stack depth: 4
|
|
0611: [->3<-|false|:bar|fn not] ([3],_,_,_,_,_,_,_)
|
|
0611: load_n 001
|
|
0613: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0613: ***recur: after load, end of compilation stack depth: 5
|
|
0615: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0615: jump_back 00237
|
|
0378: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0378: ***loop: after load stack depth: 5
|
|
0380: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0380: reset_match
|
|
0381: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0381: ***loop clause matching: : ([])
|
|
0383: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0383: match_depth 000
|
|
0385: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0385: match_list 000
|
|
0387: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0387: jump_if_no_match 00006
|
|
0396: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0396: jump_if_no_match 00016
|
|
0415: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0415: ***loop: after load stack depth: 5
|
|
0417: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0417: reset_match
|
|
0418: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0418: ***loop clause matching: : ([y])
|
|
0420: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0420: match_depth 000
|
|
0422: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0422: match_list 001
|
|
0424: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0424: jump_if_no_match 00020
|
|
0427: [->3<-|false|:bar|fn not|[3]] (_,_,_,_,_,_,_,_)
|
|
0427: load_list
|
|
0428: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0428: match_depth 000
|
|
0430: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0430: match
|
|
0431: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0431: binding `y` in sandbox
|
|
0433: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0433: stack depth: 6; match depth: 0
|
|
0435: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0435: at stack index: 5
|
|
0437: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0437: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0439: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0439: jump_if_no_match 00004
|
|
0442: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0442: jump 00002
|
|
0447: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0447: jump_if_no_match 00044
|
|
0450: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0450: ***loop: before body stack depth: 6
|
|
0452: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0452: ***calling function eq? stack depth: 6
|
|
0454: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0454: resolving binding `y` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0456: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0456: at locals position 5
|
|
0458: [->3<-|false|:bar|fn not|[3]|3] (_,_,_,_,_,_,_,_)
|
|
0458: push_binding 005
|
|
0460: [->3<-|false|:bar|fn not|[3]|3|3] (_,_,_,_,_,_,_,_)
|
|
0460: resolving binding `test` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0462: [->3<-|false|:bar|fn not|[3]|3|3] (_,_,_,_,_,_,_,_)
|
|
0462: at locals position 0
|
|
0464: [->3<-|false|:bar|fn not|[3]|3|3] (_,_,_,_,_,_,_,_)
|
|
0464: push_binding 000
|
|
0466: [->3<-|false|:bar|fn not|[3]|3|3|3] (_,_,_,_,_,_,_,_)
|
|
0466: resolving binding `eq?` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|y@5//1
|
|
0468: [->3<-|false|:bar|fn not|[3]|3|3|3] (_,_,_,_,_,_,_,_)
|
|
0468: as global
|
|
0470: [->3<-|false|:bar|fn not|[3]|3|3|3] (_,_,_,_,_,_,_,_)
|
|
0470: constant 00003: :eq?
|
|
0473: [->3<-|false|:bar|fn not|[3]|3|3|3|:eq?] (_,_,_,_,_,_,_,_)
|
|
0473: push_global
|
|
0474: [->3<-|false|:bar|fn not|[3]|3|3|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0474: ***after 2 args stack depth: 9
|
|
0476: [->3<-|false|:bar|fn not|[3]|3|3|3|fn eq?] (_,_,_,_,_,_,_,_)
|
|
0476: call 002
|
|
=== calling into fn eq?/2 ===
|
|
0000: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0000: reset_match
|
|
0001: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0001: ***function clause matching: : (x, y)
|
|
0003: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0003: match_depth 001
|
|
0005: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0005: match
|
|
0006: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0006: binding `x` in eq?
|
|
0008: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0008: stack depth: 2; match depth: 1
|
|
0010: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0010: at stack index: 0
|
|
0012: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0012: new locals: x@0//0
|
|
0014: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0014: jump_if_no_match 00017
|
|
0017: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0017: match_depth 000
|
|
0019: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0019: match
|
|
0020: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0020: binding `y` in eq?
|
|
0022: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0022: stack depth: 2; match depth: 0
|
|
0024: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0024: at stack index: 1
|
|
0026: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0026: new locals: x@0//0|y@1//0
|
|
0028: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0028: jump_if_no_match 00003
|
|
0031: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0031: jump 00000
|
|
0034: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0034: jump_if_no_match 00034
|
|
0037: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0037: ***accessing keyword: base :eq? stack depth: 2
|
|
0039: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0039: resolving binding `base` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0041: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0041: as enclosing upvalue 0
|
|
0043: [3|false|:bar|fn not|[3]|3|->3<-|3] (_,_,_,_,_,_,_,_)
|
|
0043: get_upvalue 000
|
|
0045: [3|false|:bar|fn not|[3]|3|->3<-|3|#{:trim fn trim/base...] (_,_,_,_,_,_,_,_)
|
|
0045: constant 00000: :eq?
|
|
0048: [3|false|:bar|fn not|[3]|3|->3<-|3|#{:trim fn trim/base...|:eq?] (_,_,_,_,_,_,_,_)
|
|
0048: get_key
|
|
0049: [3|false|:bar|fn not|[3]|3|->3<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0049: ***after keyword access stack depth: 3
|
|
0051: [3|false|:bar|fn not|[3]|3|->3<-|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0051: stash
|
|
0052: [3|false|:bar|fn not|[3]|3|->3<-|3|fn eq?/base] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0052: pop
|
|
0053: [3|false|:bar|fn not|[3]|3|->3<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0053: resolving binding `x` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0055: [3|false|:bar|fn not|[3]|3|->3<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0055: at locals position 0
|
|
0057: [3|false|:bar|fn not|[3]|3|->3<-|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0057: push_binding 000
|
|
0059: [3|false|:bar|fn not|[3]|3|->3<-|3|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0059: resolving binding `y` in eq?
|
|
locals: x@0//0|y@1//0
|
|
0061: [3|false|:bar|fn not|[3]|3|->3<-|3|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0061: at locals position 1
|
|
0063: [3|false|:bar|fn not|[3]|3|->3<-|3|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0063: push_binding 001
|
|
0065: [3|false|:bar|fn not|[3]|3|->3<-|3|3|3] (fn eq?/base,_,_,_,_,_,_,_)
|
|
0065: load
|
|
0066: [3|false|:bar|fn not|[3]|3|->3<-|3|3|3|fn eq?/base] (_,_,_,_,_,_,_,_)
|
|
0066: tail_call 002
|
|
=== tail call into fn eq?/base/2 from eq? ===
|
|
0478: [->3<-|false|:bar|fn not|[3]|3|true] (_,_,_,_,_,_,_,_)
|
|
0478: ***loop: after body, before store stack depth: 7
|
|
0480: [->3<-|false|:bar|fn not|[3]|3|true] (_,_,_,_,_,_,_,_)
|
|
0480: store
|
|
0481: [->3<-|false|:bar|fn not|[3]|3] (true,_,_,_,_,_,_,_)
|
|
0481: ***loop: after body, after store stack depth: 6
|
|
0483: [->3<-|false|:bar|fn not|[3]|3] (true,_,_,_,_,_,_,_)
|
|
0483: leaving scope 1
|
|
0485: [->3<-|false|:bar|fn not|[3]|3] (true,_,_,_,_,_,_,_)
|
|
0485: releasing binding Some(Binding { name: "y", depth: 1, stack_pos: 5 })
|
|
0487: [->3<-|false|:bar|fn not|[3]|3] (true,_,_,_,_,_,_,_)
|
|
0487: ***resetting the stack after loop from 6 to 4 stack depth: 6
|
|
0489: [->3<-|false|:bar|fn not|[3]|3] (true,_,_,_,_,_,_,_)
|
|
0489: pop_n 002
|
|
0491: [->3<-|false|:bar|fn not] (true,_,_,_,_,_,_,_)
|
|
0491: jump 00149
|
|
0643: [->3<-|false|:bar|fn not] (true,_,_,_,_,_,_,_)
|
|
0643: ***before loop arity adjustment stack depth: 5
|
|
0645: [->3<-|false|:bar|fn not] (true,_,_,_,_,_,_,_)
|
|
0645: load
|
|
0646: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0646: ***at very end of loop after load stack depth: 5
|
|
0648: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0648: ***after let expr stack depth: 5
|
|
0650: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0650: ***let binding: matching: frob
|
|
0652: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0652: reset_match
|
|
0653: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0653: match
|
|
0654: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0654: binding `frob` in sandbox
|
|
0656: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0656: stack depth: 5; match depth: 0
|
|
0658: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0658: at stack index: 4
|
|
0660: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0660: new locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
0662: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0662: panic_if_no_match
|
|
0663: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0663: ***after let binding stack depth: 5
|
|
0665: [->3<-|false|:bar|fn not|true] (_,_,_,_,_,_,_,_)
|
|
0665: push_list
|
|
0666: [->3<-|false|:bar|fn not|true|[]] (_,_,_,_,_,_,_,_)
|
|
0666: resolving binding `quux` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
0668: [->3<-|false|:bar|fn not|true|[]] (_,_,_,_,_,_,_,_)
|
|
0668: at locals position 1
|
|
0670: [->3<-|false|:bar|fn not|true|[]] (_,_,_,_,_,_,_,_)
|
|
0670: push_binding 001
|
|
0672: [->3<-|false|:bar|fn not|true|[]|false] (_,_,_,_,_,_,_,_)
|
|
0672: append_list
|
|
0673: [->3<-|false|:bar|fn not|true|[false]] (_,_,_,_,_,_,_,_)
|
|
0673: resolving binding `frob` in sandbox
|
|
locals: test@0//0|quux@1//0|foo@2//0|not@3//0|frob@4//0
|
|
0675: [->3<-|false|:bar|fn not|true|[false]] (_,_,_,_,_,_,_,_)
|
|
0675: at locals position 4
|
|
0677: [->3<-|false|:bar|fn not|true|[false]] (_,_,_,_,_,_,_,_)
|
|
0677: push_binding 004
|
|
0679: [->3<-|false|:bar|fn not|true|[false]|true] (_,_,_,_,_,_,_,_)
|
|
0679: append_list
|
|
0680: [->3<-|false|:bar|fn not|true|[false, true]] (_,_,_,_,_,_,_,_)
|
|
0680: store
|
|
0681: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0681: leaving scope 0
|
|
0683: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0683: releasing binding Some(Binding { name: "frob", depth: 0, stack_pos: 4 })
|
|
0685: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0685: releasing binding Some(Binding { name: "not", depth: 0, stack_pos: 3 })
|
|
0687: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0687: releasing binding Some(Binding { name: "foo", depth: 0, stack_pos: 2 })
|
|
0689: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0689: releasing binding Some(Binding { name: "quux", depth: 0, stack_pos: 1 })
|
|
0691: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0691: releasing binding Some(Binding { name: "test", depth: 0, stack_pos: 0 })
|
|
0693: [->3<-|false|:bar|fn not|true] ([false, true],_,_,_,_,_,_,_)
|
|
0693: pop_n 005
|
|
0695: [] ([false, true],_,_,_,_,_,_,_)
|
|
0695: load
|
|
0696: [] (_,_,_,_,_,_,_,_)
|
|
[false, true]
|