831 - wire up trace browser to interactive repl
This commit is contained in:
parent
6333b7614e
commit
dc38033200
39
mu.arc
39
mu.arc
|
@ -867,6 +867,18 @@
|
|||
;? (prn x) ;? 1
|
||||
;? (new-string:repr:eval x)) ;? 1
|
||||
|
||||
$clear-trace
|
||||
(do1 nil (wipe interactive-traces*))
|
||||
$save-trace
|
||||
;? (let x (string:map [string:intersperse ": " _]
|
||||
;? (as cons (interactive-traces* (m arg.0))))
|
||||
(let x (string:map [string:intersperse ": " _]
|
||||
(apply join
|
||||
(map [as cons _] rev.interactive-traces*)))
|
||||
;? (write x)(write #\newline) ;? 1
|
||||
;? (prn x) ;? 1
|
||||
(new-string x))
|
||||
|
||||
; first-class continuations
|
||||
current-continuation
|
||||
(w/uniq continuation-name
|
||||
|
@ -3067,11 +3079,30 @@
|
|||
(add-next-space-generator function*!interactive 'interactive)
|
||||
(= location*!interactive (assign-names-to-location function*!interactive 'interactive location*!interactive))
|
||||
(replace-names-with-location function*!interactive 'interactive)
|
||||
(= traces* (queue)) ; skip preprocessing
|
||||
(run-more 'interactive))
|
||||
(when (no cdr.argv)
|
||||
; interactive mode
|
||||
(whilet expr (do (pr "mu> ") (read))
|
||||
(run-interactive expr)))
|
||||
|
||||
(when (no cdr.argv)
|
||||
(add-code:readfile "trace.mu")
|
||||
(freeze function*)
|
||||
(load-system-functions)
|
||||
(wipe interactive-commands*)
|
||||
(wipe interactive-traces*)
|
||||
(= interactive-cmdidx* 0)
|
||||
(= traces* (queue))
|
||||
;? (set dump-trace*) ;? 2
|
||||
; interactive mode
|
||||
(point break
|
||||
(while t
|
||||
(pr interactive-cmdidx*)(pr "> ")
|
||||
(let expr (read)
|
||||
(unless expr (break))
|
||||
(push expr interactive-commands*)
|
||||
(run-interactive expr))
|
||||
(push traces* interactive-traces*)
|
||||
(++ interactive-cmdidx*)
|
||||
)))
|
||||
|
||||
(if ($.current-charterm) ($.close-charterm))
|
||||
(reset)
|
||||
;? (print-times)
|
||||
|
|
49
trace.mu
49
trace.mu
|
@ -504,6 +504,39 @@
|
|||
(reply nil:literal)
|
||||
])
|
||||
|
||||
(function browse-trace [
|
||||
(default-space:space-address <- new space:literal 30:literal/capacity)
|
||||
(x:string-address <- next-input)
|
||||
;? ($start-tracing) ;? 1
|
||||
;? (x:string-address <- new
|
||||
;? "schedule: main
|
||||
;? run: main 0: (((1 integer)) <- ((copy)) ((1 literal)))
|
||||
;? run: main 0: 1 => ((1 integer))
|
||||
;? mem: ((1 integer)): 1 <= 1
|
||||
;? run: main 1: (((2 integer)) <- ((copy)) ((3 literal)))
|
||||
;? run: main 1: 3 => ((2 integer))
|
||||
;? mem: ((2 integer)): 2 <= 3
|
||||
;? run: main 2: (((3 integer)) <- ((add)) ((1 integer)) ((2 integer)))
|
||||
;? mem: ((1 integer)) => 1
|
||||
;? mem: ((2 integer)) => 3
|
||||
;? run: main 2: 4 => ((3 integer))
|
||||
;? mem: ((3 integer)): 3 <= 4
|
||||
;? schedule: done with routine")
|
||||
(s:stream-address <- init-stream x:string-address)
|
||||
(traces:instruction-trace-address-array-address <- parse-traces s:stream-address)
|
||||
(0:space-address/names:screen-state <- screen-state traces:instruction-trace-address-array-address)
|
||||
(cursor-mode)
|
||||
(print-traces-collapsed 0:space-address/screen-state nil:literal/terminal)
|
||||
{ begin
|
||||
(quit?:boolean <- process-key 0:space-address/screen-state nil:literal/keyboard nil:literal/terminal)
|
||||
(break-if quit?:boolean)
|
||||
(loop)
|
||||
}
|
||||
; move cursor to bottom before exiting
|
||||
(to-bottom 0:space-address/screen-state nil:literal/terminal)
|
||||
(retro-mode)
|
||||
])
|
||||
|
||||
(function main [
|
||||
(default-space:space-address <- new space:literal 30:literal/capacity)
|
||||
(x:string-address <- new
|
||||
|
@ -520,19 +553,5 @@ mem: ((2 integer)) => 3
|
|||
run: main 2: 4 => ((3 integer))
|
||||
mem: ((3 integer)): 3 <= 4
|
||||
schedule: done with routine")
|
||||
(s:stream-address <- init-stream x:string-address)
|
||||
(traces:instruction-trace-address-array-address <- parse-traces s:stream-address)
|
||||
(0:space-address/names:screen-state <- screen-state traces:instruction-trace-address-array-address)
|
||||
;? ($print (("#traces: " literal))) ;? 1
|
||||
;? ($print len:integer) ;? 1
|
||||
;? ($print (("\n" literal))) ;? 1
|
||||
(cursor-mode)
|
||||
(print-traces-collapsed 0:space-address/screen-state nil:literal/terminal)
|
||||
{ begin
|
||||
(quit?:boolean <- process-key 0:space-address/screen-state nil:literal/keyboard nil:literal/terminal)
|
||||
(break-if quit?:boolean)
|
||||
(loop)
|
||||
}
|
||||
; move cursor to bottom before exiting
|
||||
(to-bottom 0:space-address/screen-state nil:literal/terminal)
|
||||
(browse-trace x:string-address)
|
||||
])
|
||||
|
|
Loading…
Reference in New Issue