mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-21 18:59:32 -06:00
finally proper stack unwind in the evaluator
This commit is contained in:
@@ -168,9 +168,10 @@ instance Binary Instr where
|
||||
put (EVAL (ARG_VAR n) (UpdateCall b c)) = putWord8 49 >> put n >> put (b,c)
|
||||
put (EVAL (FREE_VAR n) (UpdateCall b c)) = putWord8 50 >> put n >> put (b,c)
|
||||
put (EVAL (GLOBAL id) (UpdateCall b c)) = putWord8 51 >> put id >> put (b,c)
|
||||
put (DROP n l ) = putWord8 52 >> put (n,l)
|
||||
put (FAIL ) = putWord8 56
|
||||
put (ADD ) = putWord8 60
|
||||
put (DROP n ) = putWord8 52 >> put n
|
||||
put (JUMP l ) = putWord8 56 >> put l
|
||||
put (FAIL ) = putWord8 60
|
||||
put (ADD ) = putWord8 64
|
||||
|
||||
instance Binary Type where
|
||||
put (DTyp hypos cat exps) = put (hypos,cat,exps)
|
||||
|
||||
@@ -26,7 +26,8 @@ data Instr
|
||||
| SET_PAD
|
||||
| PUSH IVal
|
||||
| EVAL IVal TailInfo
|
||||
| DROP {-# UNPACK #-} !Int {-# UNPACK #-} !CodeLabel
|
||||
| DROP {-# UNPACK #-} !Int
|
||||
| JUMP {-# UNPACK #-} !CodeLabel
|
||||
| FAIL
|
||||
| ADD
|
||||
|
||||
@@ -60,7 +61,8 @@ ppInstr (SET v) = text "SET " <+> ppIVal v
|
||||
ppInstr (SET_PAD ) = text "SET_PAD"
|
||||
ppInstr (PUSH v) = text "PUSH " <+> ppIVal v
|
||||
ppInstr (EVAL v ti) = text "EVAL " <+> ppIVal v <+> ppTailInfo ti
|
||||
ppInstr (DROP n l ) = text "DROP " <+> int n <+> ppLabel l
|
||||
ppInstr (DROP n ) = text "DROP " <+> int n
|
||||
ppInstr (JUMP l ) = text "JUMP " <+> ppLabel l
|
||||
ppInstr (FAIL ) = text "FAIL"
|
||||
ppInstr (ADD ) = text "ADD"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user