control stack label lookup

This commit is contained in:
Danny Yoo 2011-03-07 17:54:55 -05:00
parent 4924f92528
commit 414f806580
2 changed files with 9 additions and 8 deletions

View File

@ -235,7 +235,8 @@
(error 'lookup-toplevel "not a toplevel: ~s" a-top)]))]
[(GetControlStackLabel? op)
m])))
(target-updater m (frame-return (first (machine-control m))))])))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -36,6 +36,7 @@
m]))
;; Infinite loop
(let ([m (new-machine `(hello world ,(make-GotoStatement (make-Label 'hello))))])
(test (machine-pc (step-n m 0)) 0)
(test (machine-pc (step-n m 1)) 1)
@ -415,10 +416,9 @@
(list 126389 42 (make-toplevel (list (lookup-primitive '+))))))
#;(let ([m (new-machine `(,(make-AssignPrimOpStatement (make-LookupLexicalAddress))))])
(test ...))
#;(let ([m (new-machine `(,(make-AssignPrimOpStatement (make-LookupToplevelAddress))))])
(test ...))
#;(let ([m (new-machine `(,(make-AssignPrimOpStatement (make-GetControlStackLabel))))])
(test ...))
;; GetControlStackLabel
(let ([m (new-machine `(foo
,(make-PushControlFrame 'foo)
,(make-AssignPrimOpStatement 'proc (make-GetControlStackLabel))))])
(test (machine-proc (run m))
'foo))