io.buffers: unsafe code is more unsafe.

db4
John Benediktsson 2014-11-20 17:46:36 -08:00
parent 25f3032d04
commit c0b4c1adb1
1 changed files with 8 additions and 8 deletions

View File

@ -2,8 +2,8 @@
! Copyright (C) 2006, 2010 Slava Pestov. ! Copyright (C) 2006, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.accessors alien.data byte-arrays USING: accessors alien alien.accessors alien.data byte-arrays
combinators destructors kernel libc math math.order sequences combinators destructors kernel libc math math.order math.private
sequences.private typed ; sequences sequences.private typed ;
IN: io.buffers IN: io.buffers
TUPLE: buffer TUPLE: buffer
@ -18,17 +18,17 @@ disposed ;
M: buffer dispose* ptr>> free ; inline M: buffer dispose* ptr>> free ; inline
TYPED: buffer-reset ( n buffer: buffer -- ) TYPED: buffer-reset ( n: fixnum buffer: buffer -- )
swap >>fill 0 >>pos drop ; inline swap >>fill 0 >>pos drop ; inline
TYPED: buffer-capacity ( buffer: buffer -- n ) TYPED: buffer-capacity ( buffer: buffer -- n )
[ size>> ] [ fill>> ] bi - >fixnum ; inline [ size>> ] [ fill>> ] bi fixnum-fast ; inline
TYPED: buffer-empty? ( buffer: buffer -- ? ) TYPED: buffer-empty? ( buffer: buffer -- ? )
fill>> zero? ; inline fill>> zero? ; inline
TYPED: buffer-consume ( n: fixnum buffer: buffer -- ) TYPED: buffer-consume ( n: fixnum buffer: buffer -- )
[ + ] change-pos [ fixnum+fast ] change-pos
dup [ pos>> ] [ fill>> ] bi < dup [ pos>> ] [ fill>> ] bi <
[ 0 >>pos 0 >>fill ] unless drop ; inline [ 0 >>pos 0 >>fill ] unless drop ; inline
@ -39,7 +39,7 @@ TYPED: buffer-pop ( buffer: buffer -- byte )
[ buffer-peek ] [ 1 swap buffer-consume ] bi ; inline [ buffer-peek ] [ 1 swap buffer-consume ] bi ; inline
TYPED: buffer-length ( buffer: buffer -- n ) TYPED: buffer-length ( buffer: buffer -- n )
[ fill>> ] [ pos>> ] bi - >fixnum ; inline [ fill>> ] [ pos>> ] bi fixnum-fast ; inline
TYPED: buffer@ ( buffer: buffer -- alien ) TYPED: buffer@ ( buffer: buffer -- alien )
[ pos>> ] [ ptr>> ] bi <displaced-alien> ; inline [ pos>> ] [ ptr>> ] bi <displaced-alien> ; inline
@ -66,8 +66,8 @@ TYPED: buffer-read-into ( dst n: fixnum buffer: buffer -- count )
TYPED: buffer-end ( buffer: buffer -- alien ) TYPED: buffer-end ( buffer: buffer -- alien )
[ fill>> ] [ ptr>> ] bi <displaced-alien> ; inline [ fill>> ] [ ptr>> ] bi <displaced-alien> ; inline
TYPED: buffer+ ( n buffer: buffer -- ) TYPED: buffer+ ( n: fixnum buffer: buffer -- )
[ + ] change-fill drop ; inline [ fixnum+fast ] change-fill drop ; inline
TYPED: buffer-write ( c-ptr n buffer: buffer -- ) TYPED: buffer-write ( c-ptr n buffer: buffer -- )
[ buffer-end -rot memcpy ] [ buffer+ ] 2bi ; inline [ buffer-end -rot memcpy ] [ buffer+ ] 2bi ; inline