adding a debugprint statement in the il to make it easier for me to trace what's happening

This commit is contained in:
Danny Yoo 2011-05-12 17:01:47 -04:00
parent 2c3c6d0e0e
commit 01f2bc7566
5 changed files with 21 additions and 1 deletions

View File

@ -129,6 +129,8 @@ EOF
(assemble-label (make-Label (LinkedLabel-label stmt))) (assemble-label (make-Label (LinkedLabel-label stmt)))
(assemble-label (make-Label (LinkedLabel-linked-to stmt)))) (assemble-label (make-Label (LinkedLabel-linked-to stmt))))
(next)] (next)]
[(DebugPrint? stmt)
(next)]
[(AssignImmediateStatement? stmt) [(AssignImmediateStatement? stmt)
(next)] (next)]
[(AssignPrimOpStatement? stmt) [(AssignPrimOpStatement? stmt)
@ -177,6 +179,8 @@ EOF
(format "~a" stmt)) (format "~a" stmt))
"") "")
(cond (cond
[(DebugPrint? stmt)
(format "MACHINE.params.currentOutputPort.write(~a);" (assemble-oparg (DebugPrint-value stmt)))]
[(AssignImmediateStatement? stmt) [(AssignImmediateStatement? stmt)
(let: ([t : String (assemble-target (AssignImmediateStatement-target stmt))] (let: ([t : String (assemble-target (AssignImmediateStatement-target stmt))]
[v : OpArg (AssignImmediateStatement-value stmt)]) [v : OpArg (AssignImmediateStatement-value stmt)])

View File

@ -34,6 +34,8 @@
[(LinkedLabel? stmt) [(LinkedLabel? stmt)
(list (LinkedLabel-label stmt) (list (LinkedLabel-label stmt)
(LinkedLabel-linked-to stmt))] (LinkedLabel-linked-to stmt))]
[(DebugPrint? stmt)
empty]
[(AssignImmediateStatement? stmt) [(AssignImmediateStatement? stmt)
(let: ([v : OpArg (AssignImmediateStatement-value stmt)]) (let: ([v : OpArg (AssignImmediateStatement-value stmt)])
(collect-input v))] (collect-input v))]

View File

@ -120,7 +120,14 @@
PushControlFrame/Call PushControlFrame/Call
PushControlFrame/Prompt PushControlFrame/Prompt
PopControlFrame)) PopControlFrame
DebugPrint))
;; Debug print statement.
(define-struct: DebugPrint ([value : OpArg])
#:transparent)
(define-type Statement (U UnlabeledStatement (define-type Statement (U UnlabeledStatement

View File

@ -62,6 +62,9 @@
[(LinkedLabel? stmt) [(LinkedLabel? stmt)
#f] #f]
[(DebugPrint? stmt)
#f]
[(AssignImmediateStatement? stmt) [(AssignImmediateStatement? stmt)
(equal? (AssignImmediateStatement-target stmt) (equal? (AssignImmediateStatement-target stmt)
(AssignImmediateStatement-value stmt))] (AssignImmediateStatement-value stmt))]

View File

@ -96,6 +96,10 @@
'ok] 'ok]
[(LinkedLabel? i) [(LinkedLabel? i)
'ok] 'ok]
[(DebugPrint? i)
;; Hack: just to monitor evaluation.
(displayln (evaluate-oparg m (DebugPrint-value i)))
'ok]
[(AssignImmediateStatement? i) [(AssignImmediateStatement? i)
(step-assign-immediate! m i)] (step-assign-immediate! m i)]
[(AssignPrimOpStatement? i) [(AssignPrimOpStatement? i)