diff --git a/src/ikarus.boot b/src/ikarus.boot index e65f2a1..a7d216b 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.compiler.ss b/src/ikarus.compiler.ss index 9d7b59c..81f29ac 100644 --- a/src/ikarus.compiler.ss +++ b/src/ikarus.compiler.ss @@ -1922,6 +1922,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 $make-bytevector $bytevector-ref bytevector? $make-port/input $make-port/output $make-port/both $port-handler @@ -3662,6 +3663,8 @@ [($cdr) (indirect-ref arg* (fx- disp-cdr pair-tag) ac)] [($vector-length) (indirect-ref arg* (fx- disp-vector-length vector-tag) ac)] + [($bytevector-length) + (indirect-ref arg* (fx- disp-bytevector-length bytevector-tag) ac)] [($string-length) (indirect-ref arg* (fx- disp-string-length string-tag) ac)] [($symbol-string) diff --git a/src/makefile.ss b/src/makefile.ss index fe86dea..c40da63 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -272,6 +272,7 @@ [list->vector i r] [vector->list i r] [make-bytevector i] + [bytevector-length i] [for-each i r] [map i r] @@ -479,6 +480,7 @@ [$make-bytevector $bytes] [$bytevector-length $bytes] [$bytevector-ref $bytes] + [$bytevector-s8-ref $bytes] [$bytevector-set! $bytes] diff --git a/src/tests/bytevectors.ss b/src/tests/bytevectors.ss index a6a5528..fe686bc 100644 --- a/src/tests/bytevectors.ss +++ b/src/tests/bytevectors.ss @@ -15,6 +15,9 @@ [not-bytevector? (current-output-port)] [not-bytevector? (current-input-port)] [not-bytevector? '#(2837 2398 239)] + [zero? (bytevector-length (make-bytevector 0))] + [(lambda (x) (= x 100)) (bytevector-length (make-bytevector 100 -30))] + ))