@@ -39,7 +39,8 @@ import qualified Reporting.Region as R
42− = Chr Text
43+ | Chr Text
43 | Str Text
44 | Str Text
45 | Float Double
46 | Float Double
@@ -186,62 +187,64 @@ instance Binary Global where
186instance Binary Expr where
187instance Binary Expr where
187 put expr =
188 put expr =
188 case expr of
189 case expr of
190+ Bool a -> putWord8 0 >> put a
189− Chr a -> putWord8 0 >> put a
191+ Chr a -> putWord8 1 >> put a
190− Str a -> putWord8 1 >> put a
192+ Str a -> putWord8 2 >> put a
191− Int a -> putWord8 2 >> put a
193+ Int a -> putWord8 3 >> put a
192− Float a -> putWord8 3 >> put a
194+ Float a -> putWord8 4 >> put a
193− VarLocal a -> putWord8 4 >> put a
194− VarGlobal a -> putWord8 5 >> put a
195+ VarLocal a -> putWord8 5 >> put a
195− VarEnum a b -> putWord8 6 >> put a >> put b
196+ VarGlobal a -> putWord8 6 >> put a
197+ VarEnum a b -> putWord8 7 >> put a >> put b
196− VarBox a -> putWord8 7 >> put a
198+ VarBox a -> putWord8 8 >> put a
197− VarCycle a b -> putWord8 8 >> put a >> put b
198− VarDebug a b c d -> putWord8 9 >> put a >> put b >> put c >> put d
199+ VarCycle a b -> putWord8 9 >> put a >> put b
200+ VarDebug a b c d -> putWord8 10 >> put a >> put b >> put c >> put d
199− VarKernel a b -> putWord8 10 >> put a >> put b
201+ VarKernel a b -> putWord8 11 >> put a >> put b
200− List a -> putWord8 11 >> put a
202+ List a -> putWord8 12 >> put a
201− Function a b -> putWord8 12 >> put a >> put b
203+ Function a b -> putWord8 13 >> put a >> put b
202− Call a b -> putWord8 13 >> put a >> put b
204+ Call a b -> putWord8 14 >> put a >> put b
203− TailCall a b -> putWord8 14 >> put a >> put b
204− If a b -> putWord8 15 >> put a >> put b
205+ TailCall a b -> putWord8 15 >> put a >> put b
206+ If a b -> putWord8 16 >> put a >> put b
205− Let a b -> putWord8 16 >> put a >> put b
207+ Let a b -> putWord8 17 >> put a >> put b
206− Destruct a b -> putWord8 17 >> put a >> put b
208+ Destruct a b -> putWord8 18 >> put a >> put b
207− Case a b c d -> putWord8 18 >> put a >> put b >> put c >> put d
208− Accessor a -> putWord8 19 >> put a
209+ Case a b c d -> putWord8 19 >> put a >> put b >> put c >> put d
209− Access a b -> putWord8 20 >> put a >> put b
210+ Accessor a -> putWord8 20 >> put a
210− Update a b -> putWord8 21 >> put a >> put b
211+ Access a b -> putWord8 21 >> put a >> put b
211− Record a -> putWord8 22 >> put a
212+ Update a b -> putWord8 22 >> put a >> put b
213+ Record a -> putWord8 23 >> put a
212− Unit -> putWord8 23
214+ Unit -> putWord8 24
213− Tuple a b c -> putWord8 24 >> put a >> put b >> put c
215+ Tuple a b c -> putWord8 25 >> put a >> put b >> put c
214− Shader a -> putWord8 25 >> put a
216+ Shader a -> putWord8 26 >> put a
217 do word <- getWord8
219 do word <- getWord8
218 case word of
220 case word of
219− 0 -> liftM Chr get
222+ 1 -> liftM Chr get
221− 2 -> liftM Int get
223+ 2 -> liftM Str get
222− 3 -> liftM Float get
224+ 3 -> liftM Int get
225+ 4 -> liftM Float get
223− 4 -> liftM VarLocal get
226+ 5 -> liftM VarLocal get
224− 5 -> liftM VarGlobal get
227+ 6 -> liftM VarGlobal get
225− 6 -> liftM2 VarEnum get get
228+ 7 -> liftM2 VarEnum get get
226− 7 -> liftM VarBox get
229+ 8 -> liftM VarBox get
227− 8 -> liftM2 VarCycle get get
230+ 9 -> liftM2 VarCycle get get
228− 9 -> liftM4 VarDebug get get get get
231+ 10 -> liftM4 VarDebug get get get get
229− 10 -> liftM2 VarKernel get get
232+ 11 -> liftM2 VarKernel get get
230− 11 -> liftM List get
233+ 12 -> liftM List get
231− 12 -> liftM2 Function get get
234+ 13 -> liftM2 Function get get
232− 13 -> liftM2 Call get get
235+ 14 -> liftM2 Call get get
233− 14 -> liftM2 TailCall get get
234− 15 -> liftM2 If get get
236+ 15 -> liftM2 TailCall get get
235− 16 -> liftM2 Let get get
237+ 16 -> liftM2 If get get
238+ 17 -> liftM2 Let get get
236− 17 -> liftM2 Destruct get get
239+ 18 -> liftM2 Destruct get get
237− 18 -> liftM4 Case get get get get
240+ 19 -> liftM4 Case get get get get
238− 19 -> liftM Accessor get
241+ 20 -> liftM Accessor get
239− 20 -> liftM2 Access get get
240− 21 -> liftM2 Update get get
242+ 21 -> liftM2 Access get get
241− 22 -> liftM Record get
243+ 22 -> liftM2 Update get get
244+ 23 -> liftM Record get
242− 23 -> pure Unit
245+ 24 -> pure Unit
243− 24 -> liftM3 Tuple get get get
246+ 25 -> liftM3 Tuple get get get
244− 25 -> liftM Shader get
247+ 26 -> liftM Shader get
245 _ -> error "problem getting Opt.Expr binary"
248 _ -> error "problem getting Opt.Expr binary"