File tree Expand file tree Collapse file tree 10 files changed +50
-60
lines changed
Expand file tree Collapse file tree 10 files changed +50
-60
lines changed Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 138138 (begin (vector-set! x 1 4)
139139 x)))
140140 #(5 4 5))
141+ (check-equal? (run '(let ((x (make-vector 3 5)))
142+ (begin (vector-set! x 3 4)
143+ x)))
144+ 'err)
141145 (check-equal? (run '(vector-length (make-vector 3 #f))) 3)
142146 (check-equal? (run '(vector-length (make-vector 0 #f))) 0)
143147 (check-equal? (run '"") "")
Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 138138 (begin (vector-set! x 1 4)
139139 x)))
140140 #(5 4 5))
141+ (check-equal? (run '(let ((x (make-vector 3 5)))
142+ (begin (vector-set! x 3 4)
143+ x)))
144+ 'err)
141145 (check-equal? (run '(vector-length (make-vector 3 #f))) 3)
142146 (check-equal? (run '(vector-length (make-vector 0 #f))) 0)
143147 (check-equal? (run '"") "")
Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 138138 (begin (vector-set! x 1 4)
139139 x)))
140140 #(5 4 5))
141+ (check-equal? (run '(let ((x (make-vector 3 5)))
142+ (begin (vector-set! x 3 4)
143+ x)))
144+ 'err)
141145 (check-equal? (run '(vector-length (make-vector 3 #f))) 3)
142146 (check-equal? (run '(vector-length (make-vector 0 #f))) 0)
143147 (check-equal? (run '"") "")
Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 138138 (begin (vector-set! x 1 4)
139139 x)))
140140 #(5 4 5))
141+ (check-equal? (run '(let ((x (make-vector 3 5)))
142+ (begin (vector-set! x 3 4)
143+ x)))
144+ 'err)
141145 (check-equal? (run '(vector-length (make-vector 3 #f))) 3)
142146 (check-equal? (run '(vector-length (make-vector 0 #f))) 0)
143147 (check-equal? (run '"") "")
Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff line change 138138 (begin (vector-set! x 1 4)
139139 x)))
140140 #(5 4 5))
141+ (check-equal? (run '(let ((x (make-vector 3 5)))
142+ (begin (vector-set! x 3 4)
143+ x)))
144+ 'err)
141145 (check-equal? (run '(vector-length (make-vector 3 #f))) 3)
142146 (check-equal? (run '(vector-length (make-vector 0 #f))) 0)
143147 (check-equal? (run '"") "")
You can’t perform that action at this time.
0 commit comments