Skip to content

Commit 5d4e105

Browse files
committed
crook
1 parent 6f84c91 commit 5d4e105

5 files changed

Lines changed: 30 additions & 60 deletions

File tree

hoax/compile-ops.rkt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,18 +218,12 @@
218218
(seq (Pop r10)
219219
(Pop r8)
220220
(assert-vector r8)
221-
(assert-integer r10)
222-
(Cmp r10 0)
223-
(Jl 'err)
224-
(Xor r8 type-vect) ; r8 = ptr
225-
(Mov r9 (Mem r8)) ; r9 = len
226-
(Sar r10 int-shift) ; r10 = index
227-
(Sub r9 1)
228-
(Cmp r9 r10)
229-
(Jl 'err)
230-
(Sal r10 3)
231-
(Add r8 r10)
232-
(Mov (Mem r8 8) rax)
221+
(assert-natural r10)
222+
(Mov r9 (Mem r8 (- type-vect)))
223+
(Cmp r10 r9)
224+
(Jge 'err)
225+
(Sar r10 1) ; convert to byte offset
226+
(Mov (Mem r8 r10 (- 8 type-vect)) rax)
233227
(Mov rax (value->bits (void))))]))
234228

235229
(define (type-pred mask type)

iniquity/compile-ops.rkt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,18 +218,12 @@
218218
(seq (Pop r10)
219219
(Pop r8)
220220
(assert-vector r8)
221-
(assert-integer r10)
222-
(Cmp r10 0)
223-
(Jl 'err)
224-
(Xor r8 type-vect) ; r8 = ptr
225-
(Mov r9 (Mem r8)) ; r9 = len
226-
(Sar r10 int-shift) ; r10 = index
227-
(Sub r9 1)
228-
(Cmp r9 r10)
229-
(Jl 'err)
230-
(Sal r10 3)
231-
(Add r8 r10)
232-
(Mov (Mem r8 8) rax)
221+
(assert-natural r10)
222+
(Mov r9 (Mem r8 (- type-vect)))
223+
(Cmp r10 r9)
224+
(Jge 'err)
225+
(Sar r10 1) ; convert to byte offset
226+
(Mov (Mem r8 r10 (- 8 type-vect)) rax)
233227
(Mov rax (value->bits (void))))]))
234228

235229
(define (type-pred mask type)

jig/compile-ops.rkt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,18 +218,12 @@
218218
(seq (Pop r10)
219219
(Pop r8)
220220
(assert-vector r8)
221-
(assert-integer r10)
222-
(Cmp r10 0)
223-
(Jl 'err)
224-
(Xor r8 type-vect) ; r8 = ptr
225-
(Mov r9 (Mem r8)) ; r9 = len
226-
(Sar r10 int-shift) ; r10 = index
227-
(Sub r9 1)
228-
(Cmp r9 r10)
229-
(Jl 'err)
230-
(Sal r10 3)
231-
(Add r8 r10)
232-
(Mov (Mem r8 8) rax)
221+
(assert-natural r10)
222+
(Mov r9 (Mem r8 (- type-vect)))
223+
(Cmp r10 r9)
224+
(Jge 'err)
225+
(Sar r10 1) ; convert to byte offset
226+
(Mov (Mem r8 r10 (- 8 type-vect)) rax)
233227
(Mov rax (value->bits (void))))]))
234228

235229
(define (type-pred mask type)

knock/compile-ops.rkt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,18 +218,12 @@
218218
(seq (Pop r10)
219219
(Pop r8)
220220
(assert-vector r8)
221-
(assert-integer r10)
222-
(Cmp r10 0)
223-
(Jl 'err)
224-
(Xor r8 type-vect) ; r8 = ptr
225-
(Mov r9 (Mem r8)) ; r9 = len
226-
(Sar r10 int-shift) ; r10 = index
227-
(Sub r9 1)
228-
(Cmp r9 r10)
229-
(Jl 'err)
230-
(Sal r10 3)
231-
(Add r8 r10)
232-
(Mov (Mem r8 8) rax)
221+
(assert-natural r10)
222+
(Mov r9 (Mem r8 (- type-vect)))
223+
(Cmp r10 r9)
224+
(Jge 'err)
225+
(Sar r10 1) ; convert to byte offset
226+
(Mov (Mem r8 r10 (- 8 type-vect)) rax)
233227
(Mov rax (value->bits (void))))]))
234228

235229
(define (type-pred mask type)

loot/compile-ops.rkt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -218,18 +218,12 @@
218218
(seq (Pop r10)
219219
(Pop r8)
220220
(assert-vector r8)
221-
(assert-integer r10)
222-
(Cmp r10 0)
223-
(Jl 'err)
224-
(Xor r8 type-vect) ; r8 = ptr
225-
(Mov r9 (Mem r8)) ; r9 = len
226-
(Sar r10 int-shift) ; r10 = index
227-
(Sub r9 1)
228-
(Cmp r9 r10)
229-
(Jl 'err)
230-
(Sal r10 3)
231-
(Add r8 r10)
232-
(Mov (Mem r8 8) rax)
221+
(assert-natural r10)
222+
(Mov r9 (Mem r8 (- type-vect)))
223+
(Cmp r10 r9)
224+
(Jge 'err)
225+
(Sar r10 1) ; convert to byte offset
226+
(Mov (Mem r8 r10 (- 8 type-vect)) rax)
233227
(Mov rax (value->bits (void))))]))
234228

235229
(define (type-pred mask type)

0 commit comments

Comments
 (0)