* Added bytevector-u8-ref and bytevector-s8-ref.
This commit is contained in:
parent
db80ba43f6
commit
a11fb060f2
BIN
src/ikarus.boot
BIN
src/ikarus.boot
Binary file not shown.
|
@ -130,7 +130,8 @@
|
|||
[bytevector? 1 pred]
|
||||
[$make-bytevector 1 value]
|
||||
[$bytevector-length 1 value]
|
||||
[$bytevector-ref 2 value]
|
||||
[$bytevector-u8-ref 2 value]
|
||||
[$bytevector-s8-ref 2 value]
|
||||
[$bytevector-set! 3 effect]
|
||||
;;; symbols
|
||||
[$make-symbol 1 value]
|
||||
|
@ -1922,7 +1923,7 @@
|
|||
void base-rtd $unbound-object? code? $forward-ptr? bwp-object?
|
||||
pointer-value top-level-value car cdr list* list $record
|
||||
port? input-port? output-port? $bytevector-set!
|
||||
$bytevector-length
|
||||
$bytevector-length $bytevector-u8-ref $bytevector-s8-ref
|
||||
$make-bytevector $bytevector-ref bytevector?
|
||||
$make-port/input $make-port/output $make-port/both
|
||||
$port-handler
|
||||
|
@ -3785,6 +3786,22 @@
|
|||
(movb (mem (fx- disp-code-data vector-tag) ebx) ah)
|
||||
(sarl (int (fx- 8 fx-shift)) eax)
|
||||
ac)]
|
||||
[($bytevector-s8-ref)
|
||||
(list* (movl (Simple (cadr arg*)) ebx)
|
||||
(sarl (int fx-shift) ebx)
|
||||
(addl (Simple (car arg*)) ebx)
|
||||
(movb (mem (fx- disp-bytevector-data bytevector-tag) ebx) al)
|
||||
(sall (int (* (sub1 wordsize) 8)) eax)
|
||||
(sarl (int (- (* (sub1 wordsize) 8) fx-shift)) eax)
|
||||
ac)]
|
||||
[($bytevector-u8-ref)
|
||||
(list* (movl (Simple (cadr arg*)) ebx)
|
||||
(sarl (int fx-shift) ebx)
|
||||
(addl (Simple (car arg*)) ebx)
|
||||
(movl (int 0) eax)
|
||||
(movb (mem (fx- disp-bytevector-data bytevector-tag) ebx) al)
|
||||
(sall (int fx-shift) eax)
|
||||
ac)]
|
||||
[($string-ref)
|
||||
(list* (movl (Simple (cadr arg*)) ebx)
|
||||
(sarl (int fx-shift) ebx)
|
||||
|
@ -4125,6 +4142,7 @@
|
|||
(sarl (int fx-shift) eax)
|
||||
(addl (Simple (car arg*)) eax)
|
||||
(movl (Simple (caddr arg*)) ebx)
|
||||
(sall (int (- 8 fx-shift)) ebx)
|
||||
(movb bh (mem (fx- disp-bytevector-data bytevector-tag) eax))
|
||||
ac)]
|
||||
[($set-car!)
|
||||
|
|
|
@ -273,6 +273,8 @@
|
|||
[vector->list i r]
|
||||
[make-bytevector i]
|
||||
[bytevector-length i]
|
||||
[bytevector-s8-ref i]
|
||||
[bytevector-u8-ref i]
|
||||
|
||||
[for-each i r]
|
||||
[map i r]
|
||||
|
@ -479,8 +481,8 @@
|
|||
|
||||
[$make-bytevector $bytes]
|
||||
[$bytevector-length $bytes]
|
||||
[$bytevector-ref $bytes]
|
||||
[$bytevector-s8-ref $bytes]
|
||||
[$bytevector-u8-ref $bytes]
|
||||
[$bytevector-set! $bytes]
|
||||
|
||||
|
||||
|
|
|
@ -17,6 +17,14 @@
|
|||
[not-bytevector? '#(2837 2398 239)]
|
||||
[zero? (bytevector-length (make-bytevector 0))]
|
||||
[(lambda (x) (= x 100)) (bytevector-length (make-bytevector 100 -30))]
|
||||
[(lambda (x) (equal? x '(-127 129 -1 255)))
|
||||
(let ([b1 (make-bytevector 16 -127)]
|
||||
[b2 (make-bytevector 16 255)])
|
||||
(list
|
||||
(bytevector-s8-ref b1 0)
|
||||
(bytevector-u8-ref b1 0)
|
||||
(bytevector-s8-ref b2 0)
|
||||
(bytevector-u8-ref b2 0)))]
|
||||
|
||||
))
|
||||
|
||||
|
|
Loading…
Reference in New Issue