\ profiler 10/18/97 gwj require double require time require core-ext require cstrings require list variable time.head 1 cells +constant }tnode.name} 2 cells +constant }tnode.ticks} 4 cells +constant }tnode.cnt} : inside.out 2>r ; : d+! ( d addr -- ) dup >r 2@ d+ r> 2! ; : (time) ( addr -- ) 2r> rot >r @Ticks 2>r inside.out 2r> @Ticks 2swap d- r@ }tnode.ticks} d+! 1 r> }tnode.cnt} +! ; : time: ( ; name -- ) : postpone ahead here swap time.head link, rot dup cell+ , -rot 3 cells 0allot postpone then postpone literal postpone (time) ; : .tnode ( tnode -- ) >r r@ }tnode.name} @ cr count 63 and type r@ }tnode.ticks} 2@ 2 spaces d. r@ }tnode.cnt} @ 2 spaces . r> drop ; : clear.tnode ( tnode -- ) >r 0 0 r@ }tnode.ticks} 2! 0 r> }tnode.cnt} ! ; : display.timing ( -- ) time.head ['] .tnode enum.list ; : clear.timing ( -- ) time.head ['] clear.tnode enum.list ;