From 01f2bc756629fddcbefa0c33e05044b87197862b Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Thu, 12 May 2011 17:01:47 -0400 Subject: [PATCH] adding a debugprint statement in the il to make it easier for me to trace what's happening --- assemble.rkt | 4 ++++ collect-jump-targets.rkt | 2 ++ il-structs.rkt | 9 ++++++++- optimize-il.rkt | 3 +++ simulator.rkt | 4 ++++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/assemble.rkt b/assemble.rkt index dbc9497..ed441a7 100644 --- a/assemble.rkt +++ b/assemble.rkt @@ -129,6 +129,8 @@ EOF (assemble-label (make-Label (LinkedLabel-label stmt))) (assemble-label (make-Label (LinkedLabel-linked-to stmt)))) (next)] + [(DebugPrint? stmt) + (next)] [(AssignImmediateStatement? stmt) (next)] [(AssignPrimOpStatement? stmt) @@ -177,6 +179,8 @@ EOF (format "~a" stmt)) "") (cond + [(DebugPrint? stmt) + (format "MACHINE.params.currentOutputPort.write(~a);" (assemble-oparg (DebugPrint-value stmt)))] [(AssignImmediateStatement? stmt) (let: ([t : String (assemble-target (AssignImmediateStatement-target stmt))] [v : OpArg (AssignImmediateStatement-value stmt)]) diff --git a/collect-jump-targets.rkt b/collect-jump-targets.rkt index 07a1b14..3f17917 100644 --- a/collect-jump-targets.rkt +++ b/collect-jump-targets.rkt @@ -34,6 +34,8 @@ [(LinkedLabel? stmt) (list (LinkedLabel-label stmt) (LinkedLabel-linked-to stmt))] + [(DebugPrint? stmt) + empty] [(AssignImmediateStatement? stmt) (let: ([v : OpArg (AssignImmediateStatement-value stmt)]) (collect-input v))] diff --git a/il-structs.rkt b/il-structs.rkt index 2e0ed67..3680c5d 100644 --- a/il-structs.rkt +++ b/il-structs.rkt @@ -120,7 +120,14 @@ PushControlFrame/Call PushControlFrame/Prompt - PopControlFrame)) + PopControlFrame + + DebugPrint)) + + +;; Debug print statement. +(define-struct: DebugPrint ([value : OpArg]) + #:transparent) (define-type Statement (U UnlabeledStatement diff --git a/optimize-il.rkt b/optimize-il.rkt index d2f2329..3d8381b 100644 --- a/optimize-il.rkt +++ b/optimize-il.rkt @@ -62,6 +62,9 @@ [(LinkedLabel? stmt) #f] + [(DebugPrint? stmt) + #f] + [(AssignImmediateStatement? stmt) (equal? (AssignImmediateStatement-target stmt) (AssignImmediateStatement-value stmt))] diff --git a/simulator.rkt b/simulator.rkt index 09ef0fe..206ba4f 100644 --- a/simulator.rkt +++ b/simulator.rkt @@ -96,6 +96,10 @@ 'ok] [(LinkedLabel? i) 'ok] + [(DebugPrint? i) + ;; Hack: just to monitor evaluation. + (displayln (evaluate-oparg m (DebugPrint-value i))) + 'ok] [(AssignImmediateStatement? i) (step-assign-immediate! m i)] [(AssignPrimOpStatement? i)