Fix off by one w/ interning (441 bytes)

This commit is contained in:
Justine Tunney 2021-12-08 10:32:29 -08:00
parent d5afd05ef8
commit 040852302c

View file

@ -123,6 +123,7 @@ Intern: push %cx # Intern(cx,di): ax
je 8f
rep cmpsb # memcmp(di,si,cx)
je 9f
dec %di
xor %ax,%ax
2: scasb # memchr(di,al,cx)
jne 2b
@ -175,6 +176,14 @@ Cons: xchg %di,%cx # Cons(m:di,a:ax):ax
1: xchg %di,%ax
ret
GetList:call GetToken
cmp $')',%al
je .retF
call GetObject
push %ax # popped by xCons
call GetList
jmp xCons
Gc: cmp %dx,%di # Gc(x:di,A:dx,B:si):ax
jb 1b # we assume immutable cells
push (%bx,%di) # mark prevents negative gc
@ -189,14 +198,6 @@ Gc: cmp %dx,%di # Gc(x:di,A:dx,B:si):ax
add %dx,%ax
ret
GetList:call GetToken
cmp $')',%al
je .retF
call GetObject
push %ax # popped by xCons
call GetList
jmp xCons
.dflt1: push %si # save x
call Eval
pop %si # restore x