ref: 4a408b2e2c76e424afc0527fbc4ba75b957be533
parent: 76aec5fa7a058f6a9f69570efe13dff3cb957e76
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Wed Dec 11 21:36:41 EST 2024
remove OP_BOOL_CONST_{F,T} and OP_NIL - instead reuse already existing OP_LOAD* ops
--- a/flisp.boot
+++ b/flisp.boot
@@ -14,8 +14,7 @@
#fn("8000z0700}2:" #(div0))
#fn("6000n201l:" #()) #fn("6000n201m:" #()) 0 #fn("8000z0700}2:" #(vector))
#fn("8000z0700}2:" #(aset!)) 0 0 0 0 0 0 0 0 0 0 0 #fn("9000n3012082>1|:" #(#fn("6000n1A061:" #())))
- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #fn("8000z0700}2:" #(aref)) 0 0 0
- 0)
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #fn("8000z0700}2:" #(aref)) 0)
*empty-string* "" *runestring-type* (array rune) *string-type* (array
byte)
*syntax-environment* #table(when #fn(";000z1200211POe4:" #(if begin)) with-output-to #fn("<000z12021e1220e2e1e12315163:" #(#fn(nconc)
@@ -49,7 +48,7 @@
length=) 1arg-lambda?)
<= #fn("6000n210L;IB0470051;380470151S:" #(nan?) <=) >
#fn("6000n210L:" #() >) >= #fn("6000n201L;IB0470051;380470151S:" #(nan?) >=)
- Instructions #table(call.l 81 trycatch 75 largc 79 loadg.l 68 aref2 23 box 90 cadr 36 argc 62 setg 71 load0 21 vector? 45 fixnum? 41 loadc0 17 loada0 0 div0 59 keyargs 89 call 5 loada.l 69 brt.l 50 pair? 18 sub2 78 add2 29 loadc.l 70 loadc 9 builtin? 43 set-car! 47 brt 25 ret 10 loadi8 66 tapply 77 loada1 1 shift 46 boolean? 39 atom? 24 cdr 13 brne.l 83 / 58 loadf 31 equal? 52 apply 54 dup 11 loadt 20 jmp.l 48 null? 38 not 35 = 60 set-cdr! 30 eq? 33 * 57 load1 27 dummy_t 94 bound? 42 brf 3 function? 44 box.l 91 < 28 brnn.l 84 jmp 16 loadv 2 for 76 lvargc 80 dummy_eof 96 + 55 dummy_f 93 brne 19 compare 61 neg 37 loadv.l 67 number? 40 vargc 74 brn 85 brbound 88 vector 63 loadc1 22 setg.l 72 brf.l 49 aref 92 symbol? 34 aset! 64 car 12 cons 32 tcall.l 82 - 56 brn.l 86 optargs 87 closure 14 pop 4 eqv? 51 list 53 seta 15 seta.l 73 brnn 26 loadnil 65 loadg 7 loada 8 dummy_nil 95 tcall 6)
+ Instructions #table(call.l 81 trycatch 75 largc 79 loadg.l 68 aref2 23 box 90 cadr 36 argc 62 setg 71 load0 21 vector? 45 fixnum? 41 loadc0 17 loada0 0 div0 59 keyargs 89 call 5 loada.l 69 brt.l 50 pair? 18 sub2 78 add2 29 loadc.l 70 loadc 9 builtin? 43 set-car! 47 brt 25 ret 10 loadi8 66 tapply 77 loada1 1 shift 46 boolean? 39 atom? 24 cdr 13 brne.l 83 / 58 loadf 31 equal? 52 apply 54 dup 11 loadt 20 jmp.l 48 null? 38 not 35 = 60 set-cdr! 30 eq? 33 * 57 load1 27 bound? 42 brf 3 function? 44 box.l 91 < 28 brnn.l 84 jmp 16 loadv 2 for 76 lvargc 80 dummy_eof 93 + 55 brne 19 compare 61 neg 37 loadv.l 67 number? 40 vargc 74 brn 85 brbound 88 vector 63 loadc1 22 setg.l 72 brf.l 49 aref 92 symbol? 34 aset! 64 car 12 cons 32 tcall.l 82 - 56 brn.l 86 optargs 87 closure 14 pop 4 eqv? 51 list 53 seta 15 seta.l 73 brnn 26 loadnil 65 loadg 7 loada 8 tcall 6)
__init_globals #fn("5000n020w1422w3474w5476w7478w9:" #("/"
*directory-separator*
"\n"
--- a/flisp.h
+++ b/flisp.h
@@ -328,9 +328,9 @@
#include "opcodes.h"
enum {
- FL_nil = builtin(OP_NIL),
- FL_t = builtin(OP_BOOL_CONST_T),
- FL_f = builtin(OP_BOOL_CONST_F),
+ FL_nil = builtin(OP_LOADNIL),
+ FL_t = builtin(OP_LOADT),
+ FL_f = builtin(OP_LOADF),
FL_eof = builtin(OP_EOF_OBJECT),
FL_unspecified = FL_t,
};
--- a/gen.lsp
+++ b/gen.lsp
@@ -93,9 +93,6 @@
OP_BOX box #f 0
OP_BOXL box.l #f 0
OP_AREF aref -2 (λ rest (apply aref rest))
- OP_BOOL_CONST_F dummy_f #f 0
- OP_BOOL_CONST_T dummy_t #f 0
- OP_NIL dummy_nil #f 0
OP_EOF_OBJECT dummy_eof #f 0
))
--- a/opcodes.h
+++ b/opcodes.h
@@ -92,9 +92,6 @@
OP_BOX,
OP_BOXL,
OP_AREF,
- OP_BOOL_CONST_F,
- OP_BOOL_CONST_T,
- OP_NIL,
OP_EOF_OBJECT,
N_OPCODES
};