(loader '((title |timetrace.lo|)))
(if (not (>= (version) 15.2)) (progn (error 'load 'erricf 'timetrace)))
(defvar #:timetrace:timetraced ())
(defvar #:timetrace:runtime -32000)
(defvar #:timetrace:stack ())
(loader'((fentry timetrace fsubr)
(entry timetrace fsubr)
(push (cvalq call))
(mov a1 (cvalq call))
(push '1)
(push '(call))
(push (@ timetrace))
(push llink)
(mov nil llink)
(push dlink)
(push cbindn)
(stack dlink)
(jcall runtime)
(mov a1 (cvalq #:timetrace:runtime))
(mov '(#:timetrace:top-level) (cvalq #:timetrace:stack))
(mov '0. a2)
(mov '0 a1)
(jcall cons)
(mov 'timetrace a3)
(mov a1 a2)
(mov '#:timetrace:top-level a1)
(jcall putprop)
(bfnil (cvalq call) 101)
(mov (cvalq #:timetrace:timetraced) a1)
(bra 102)
101
(mov (cvalq call) a1)
(jcall listp)
(bfnil a1 103)
(mov (cvalq call) a3)
(mov 'errsxt a2)
(mov 'timetrace a1)
(jcall error)
(bra 102)
103
(mov (cvalq call) a1)
(mov nil a2)
(mov (car a1) a1)
(jcall equal)
(bfnil a1 107)
(mov (cvalq call) a1)
(mov 'nil a2)
(mov (car a1) a1)
(jcall equal)
(btnil a1 105)
107
(mov (cvalq call) a4)
(mov (cdr a4) a4)
(bfnil a4 108)
(mov (cvalq #:timetrace:timetraced) a4)
108
(push a4)
109
(bfcons (& 0) 110)
(mov (& 0) a1)
(mov (cdr a1) (& 0))
(mov (car a1) a1)
(call #:timetrace:off)
(bra 109)
110
(mov nil a1)
(adjstk '1)
(bra 102)
105
(mov (cvalq call) a1)
(mov 'file a2)
(mov (car a1) a1)
(jcall equal)
(btnil a1 111)
(bra 113)
(fentry #:timetrace:g104 subr1)
(entry #:timetrace:g104 subr1)
(push a1)
(mov (cvalq call) a1)
(mov (cdr a1) a1)
(push (car a1))
(mov '#:system:loaded-from-file a2)
(mov (& 1) a1)
(jcall get)
(mov a1 a2)
(pop a1)
(jcall equal)
(btnil a1 114)
(mov (& 0) a1)
(jcall getdef)
(btnil a1 114)
(mov (& 0) a1)
(jcall typefn)
(mov a1 a4)
(cabeq a4 'expr 116)
(cabeq a4 'subr0 116)
(cabeq a4 'subr1 116)
(cabeq a4 'subr2 116)
(cabeq a4 'subr3 116)
(cabne a4 'nsubr 114)
116
(push (@ 117))
(push (& 1))
(push '" ")
(mov '2 a4)
(jmp prin)
117
(eval ())
(mov (& 0) a1)
(adjstk '1)
(bra #:timetrace:on)
114
(mov nil a1)
(adjstk '1)
(return)
113
(mov '#:timetrace:g104 a1)
(jcall mapoblist)
(push (@ 118))
(mov '0 a4)
(jmp terpri)
118
(eval ())
(bra 102)
111
(mov (cvalq call) a1)
(mov 't a2)
(mov (car a1) a1)
(jcall equal)
(bfnil a1 121)
(mov (cvalq call) a1)
(mov 't a2)
(mov (car a1) a1)
(jcall equal)
(btnil a1 119)
121
(mov (cvalq call) a4)
(mov (cdr a4) a4)
(bfnil a4 122)
(mov (cvalq #:timetrace:timetraced) a4)
122
(push a4)
(push nil)
123
(bfcons (& 1) 124)
(mov (& 1) a4)
(mov (cdr a4) (& 1))
(push (car a4))
(mov 'timetrace a2)
(mov (& 0) a1)
(jcall getprop)
(mov a1 a2)
(mov (& 0) a1)
(jcall cons)
(push a1)
(mov '0. a2)
(mov '0 a1)
(jcall cons)
(mov 'timetrace a3)
(mov a1 a2)
(mov (& 1) a1)
(jcall putprop)
(pop a1)
(adjstk '1)
(mov (& 0) a2)
(jcall cons)
(mov a1 (& 0))
(bra 123)
124
(mov (& 0) a1)
(jcall nreverse)
(adjstk '2)
(push a1)
125
(btnil (& 0) 126)
(push '-32000)
(push (& 1))
127
(btnil (& 0) 130)
(push (@ 129))
(push (& 2))
(mov (& 2) a4)
(mov (cdr a4) (& 2))
(mov (car a4) a4)
(mov (cdr a4) a4)
(push (cdr a4))
(mov '2 a4)
(jmp max)
129
(eval ())
(mov a1 (& 1))
(bra 127)
130
(btnil (& 2) 131)
(push (@ 134))
(push '0)
(mov (& 4) a4)
(mov (car a4) a4)
(mov (cdr a4) a4)
(push (car a4))
(mov '2 a4)
(jmp =)
134
(eval ())
(btnil a1 132)
(mov (& 2) a4)
(mov (cdr a4) (& 2))
(bra 130)
132
(push (@ 137))
(mov (& 3) a4)
(mov (car a4) a4)
(mov (cdr a4) a4)
(push (cdr a4))
(push (& 3))
(mov '2 a4)
(jmp <)
137
(eval ())
(btnil a1 135)
(mov (& 2) a1)
(mov (cdr a1) (& 2))
(mov (& 0) a2)
(mov (car a1) a1)
(jcall cons)
(mov a1 (& 0))
(bra 130)
135
(push (@ 138))
(push '"Temps=")
(mov (& 4) a4)
(mov (car a4) a4)
(mov (cdr a4) a4)
(push (cdr a4))
(push '"  Nb=")
(mov (& 6) a4)
(mov (car a4) a4)
(mov (cdr a4) a4)
(push (car a4))
(push '"  Fonc: ")
(mov (& 8) a4)
(mov (cdr a4) (& 8))
(mov (car a4) a4)
(push (car a4))
(mov '6 a4)
(jmp print)
138
(eval ())
(bra 130)
131
(mov (& 0) (& 2))
(adjstk '2)
(bra 125)
126
(mov nil a1)
(adjstk '1)
(bra 102)
119
(push (cvalq call))
(push nil)
139
(bfcons (& 1) 140)
(mov (& 1) a1)
(mov (cdr a1) (& 1))
(mov (car a1) a1)
(call #:timetrace:on)
(mov (& 0) a2)
(jcall cons)
(mov a1 (& 0))
(bra 139)
140
(mov (& 0) a1)
(jcall nreverse)
(adjstk '2)
102
(mov (& 1) dlink)
(mov (& 2) llink)
(mov (& 6) (cvalq call))
(adjstk '7)
(return)
))
(synonymq tt timetrace)
(loader'((entry #:timetrace:on subr1)
(push a1)
(call #:timetrace:off)
(mov (& 0) a1)
(jcall typefn)
(mov a1 a4)
(cabeq a4 'expr 104)
(cabeq a4 'subr0 104)
(cabeq a4 'subr1 104)
(cabeq a4 'subr2 104)
(cabeq a4 'subr3 104)
(cabeq a4 'nsubr 104)
(cabeq a4 'fexpr 104)
(cabne a4 'fsubr 103)
104
(mov (& 0) a4)
(cabeq a4 'runtime 103)
(cabeq a4 'call 103)
(cabeq a4 'calln 103)
(cabeq a4 '+ 103)
(cabeq a4 'plus 103)
(cabeq a4 '- 103)
(cabeq a4 'difference 103)
(cabeq a4 'car 103)
(cabeq a4 'cdr 103)
(cabeq a4 'rplaca 103)
(cabeq a4 'rplacd 103)
(cabeq a4 'getprop 103)
(cabeq a4 '1+ 103)
(cabne a4 'setq 101)
103
(mov (& 0) a3)
(mov '"function un-timetraceable" a2)
(mov 'timetrace a1)
(jcall printerror)
(bra 102)
101
(mov (cvalq #:timetrace:timetraced) a2)
(mov (& 0) a1)
(jcall cons)
(mov a1 (cvalq #:timetrace:timetraced))
(mov (& 0) a1)
(jcall typefn)
(push a1)
(mov (& 1) a1)
(jcall valfn)
(mov a1 a2)
(pop a1)
(jcall cons)
(mov 'timetrace-old a3)
(mov a1 a2)
(mov (& 0) a1)
(jcall putprop)
(mov '0. a2)
(mov '0 a1)
(jcall cons)
(mov 'timetrace a3)
(mov a1 a2)
(mov (& 0) a1)
(jcall putprop)
(push nil)
(push nil)
(mov (& 2) a1)
(jcall typefn)
(cabeq a1 'expr 108)
(cabne a1 'fexpr 107)
108
(mov (& 2) a1)
(jcall valfn)
(mov (car a1) a4)
(bra 106)
107
(cabne a1 'subr0 109)
(mov nil a4)
(bra 106)
109
(cabne a1 'subr1 110)
(mov '(arg1) a4)
(bra 106)
110
(cabne a1 'subr2 111)
(mov '(arg1 arg2) a4)
(bra 106)
111
(cabne a1 'subr3 112)
(mov '(arg1 arg2 arg3) a4)
(bra 106)
112
(cabeq a1 'nsubr 114)
(cabne a1 'fsubr 113)
114
(mov 'args a4)
(bra 106)
113
(mov nil a4)
106
(mov a4 (& 1))
(mov (& 2) a1)
(jcall typefn)
(cabeq a1 'expr 117)
(cabne a1 'fexpr 116)
117
(mov (& 2) a1)
(jcall valfn)
(mov (cdr a1) a3)
(bra 115)
116
(cabeq a1 'subr0 119)
(cabeq a1 'subr1 119)
(cabeq a1 'subr2 119)
(cabne a1 'subr3 118)
119
(push (@ 120))
(push (@ 121))
(push 'call)
(push (@ 122))
(push 'quote)
(mov (& 7) a1)
(jcall valfn)
(push a1)
(mov '2 a4)
(jmp list)
122
(eval ())
(push a1)
(mov (& 5) a4)
(push (car a4))
(mov (cdr a4) a4)
(push (car a4))
(mov (& 7) a4)
(mov (cdr a4) a4)
(mov (cdr a4) a4)
(push (car a4))
(mov '5 a4)
(jmp list)
121
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
120
(eval ())
(mov a1 a3)
(bra 115)
118
(cabne a1 'fsubr 123)
(push (@ 124))
(push (@ 125))
(push 'call)
(push (@ 126))
(push 'quote)
(mov (& 7) a1)
(jcall valfn)
(push a1)
(mov '2 a4)
(jmp list)
126
(eval ())
(push a1)
(push (& 5))
(push '(() ()))
(mov '4 a4)
(jmp mcons)
125
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
124
(eval ())
(mov a1 a3)
(bra 115)
123
(cabne a1 'nsubr 127)
(push (@ 128))
(push (@ 129))
(push 'calln)
(push (@ 130))
(push 'quote)
(mov (& 7) a1)
(jcall valfn)
(push a1)
(mov '2 a4)
(jmp list)
130
(eval ())
(push a1)
(push (& 5))
(mov '3 a4)
(jmp list)
129
(eval ())
(push a1)
(mov '1 a4)
(jmp list)
128
(eval ())
(mov a1 a3)
(bra 115)
127
(mov nil a3)
115
(mov a3 (& 0))
(mov (& 2) a1)
(jcall typefn)
(cabeq a1 'fexpr 133)
(cabne a1 'fsubr 132)
133
(mov 'fexpr a2)
(bra 131)
132
(mov 'expr a2)
131
(push a2)
(push (@ 135))
(push (& 3))
(push (@ 136))
(push 'protect)
(push (@ 137))
(push 'progn)
(push '(#:timetrace:propd (car #:timetrace:stack)))
(push (@ 138))
(push '#:timetrace:propa)
(push (@ 139))
(push 'quote)
(push (& 14))
(mov '2 a4)
(jmp list)
139
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
138
(eval ())
(push a1)
(push (@ 140))
(push 'newl)
(push '#:timetrace:stack)
(push (@ 141))
(push 'quote)
(push (& 16))
(mov '2 a4)
(jmp list)
141
(eval ())
(push a1)
(mov '3 a4)
(jmp list)
140
(eval ())
(push a1)
(push (& 10))
(mov '5 a4)
(jmp mcons)
137
(eval ())
(push a1)
(push '((#:timetrace:propd (nextl #:timetrace:stack))))
(mov '3 a4)
(jmp mcons)
136
(eval ())
(push a1)
(mov '2 a4)
(jmp list)
135
(eval ())
(mov a1 a3)
(pop a2)
(mov (& 2) a1)
(jcall setfn)
(adjstk '2)
102
(mov (& 0) a1)
(adjstk '1)
(return)
))
(loader'((entry #:timetrace:off subr1)
(push a1)
(mov 'timetrace a2)
(jcall remprop)
(mov 'timetrace-old a2)
(mov (& 0) a1)
(jcall getprop)
(btnil a1 102)
(mov 'timetrace-old a2)
(mov (& 0) a1)
(jcall getprop)
(push (car a1))
(mov 'timetrace-old a2)
(mov (& 1) a1)
(jcall getprop)
(mov (cdr a1) a3)
(pop a2)
(mov (& 0) a1)
(jcall setfn)
(mov 'timetrace-old a2)
(mov (& 0) a1)
(jcall remprop)
102
(mov (cvalq #:timetrace:timetraced) a2)
(mov (& 0) a1)
(jcall delq)
(mov a1 (cvalq #:timetrace:timetraced))
(adjstk '1)
(return)
))
(loader'((fentry #:timetrace:propa subr1)
(entry #:timetrace:propa subr1)
(push a1)
(mov 'timetrace a2)
(jcall getprop)
(mov a1 (& 0))
(push a1)
(mov (car a1) a1)
(jcall 1+)
(pop a4)
(mov a1 (car a4))
(mov a4 a1)
(adjstk '1)
(return)
))
(loader'((fentry #:timetrace:propd subr1)
(entry #:timetrace:propd subr1)
(push a1)
(mov 'timetrace a2)
(jcall getprop)
(mov a1 (& 0))
(push a1)
(push (@ 101))
(push (@ 102))
(push (cdr a1))
(push (cvalq #:timetrace:runtime))
(mov '2 a4)
(jmp difference)
102
(eval ())
(push a1)
(jcall runtime)
(mov a1 (cvalq #:timetrace:runtime))
(push a1)
(mov '2 a4)
(jmp plus)
101
(eval ())
(pop a4)
(mov a1 (cdr a4))
(mov a4 a1)
(adjstk '1)
(return)
))
(loader '((end)))