]> gitweb.factorcode.org Git - factor.git/commitdiff
destructors: change check-disposed not to drop the disposable.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 21 Nov 2014 16:19:05 +0000 (08:19 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 21 Nov 2014 16:19:05 +0000 (08:19 -0800)
basis/cache/cache.factor
basis/io/backend/unix/unix.factor
basis/io/files/windows/windows.factor
basis/io/monitors/linux/linux.factor
basis/io/monitors/monitors.factor
basis/io/monitors/windows/windows.factor
basis/io/pools/pools.factor
basis/io/ports/ports.factor
basis/io/sockets/sockets.factor
core/destructors/destructors.factor
core/io/streams/c/c.factor

index f623b878a2f442512624a7babbeae90a6e55c523..4caa5b40acbd7f47570b753dd2a7314b99ce7094 100755 (executable)
@@ -22,7 +22,7 @@ M: cache-assoc assoc-size assoc>> assoc-size ;
 M: cache-assoc at* assoc>> at* [ dup [ 0 >>age value>> ] when ] dip ;
 
 M: cache-assoc set-at
-    [ check-disposed ] keep
+    check-disposed
     [ <cache-entry> ] 2dip
     assoc>> set-at ;
 
index 0c39b2406431379acc43120006580890adc6ff75..c0dac8f7171135038eeaee725c770b583662c3e6 100755 (executable)
@@ -35,7 +35,7 @@ M: fd dispose
         } cleave
     ] unless-disposed ;
 
-M: fd handle-fd dup check-disposed fd>> ;
+M: fd handle-fd check-disposed fd>> ;
 
 M: fd cancel-operation ( fd -- )
     [
@@ -103,7 +103,7 @@ M: fd refill
 
 M: unix (wait-to-read) ( port -- )
     dup
-    dup handle>> dup check-disposed refill dup
+    dup handle>> check-disposed refill dup
     [ dupd wait-for-port (wait-to-read) ] [ 2drop ] if ;
 
 ! Writers
@@ -123,7 +123,7 @@ M: fd drain
 
 M: unix (wait-to-write) ( port -- )
     dup
-    dup handle>> dup check-disposed drain
+    dup handle>> check-disposed drain
     dup [ wait-for-port ] [ 2drop ] if ;
 
 M: unix io-multiplex ( nanos -- )
index fa6c9801b42b068f1968072fe24ca538bd92e5bc..24c953645c70a3724db859057f4d0940716053c9 100755 (executable)
@@ -165,7 +165,7 @@ M: windows handle-length ( handle -- n/f )
     ptr>> [ [ 32 bits >>offset ] [ -32 shift >>offset-high ] bi ] when* ;
 
 : make-FileArgs ( port handle -- <FileArgs> )
-    [ nip dup check-disposed handle>> ]
+    [ nip check-disposed handle>> ]
     [
         [ buffer>> dup buffer-length 0 DWORD <ref> ] dip make-overlapped
     ] 2bi <FileArgs> ;
index d1047e7fbeb61e0047f682b8ab19b2237cd30c92..ee2f21cd752fd2a296cf9cee6c9f395a133e73fb 100755 (executable)
@@ -114,7 +114,7 @@ M: linux-monitor dispose* ( monitor -- )
     ] if ;
 
 : inotify-read-loop ( port -- )
-    dup check-disposed
+    check-disposed
     dup wait-to-read drop
     0 over buffer>> parse-file-notifications
     0 over buffer>> buffer-reset
index 21fd11df4a2f9e7cd0d16bae4d7bd6dc89f91487..c0286f594d1797fcd5720ad28c49e2a0589e4fa5 100644 (file)
@@ -43,7 +43,7 @@ TUPLE: file-change path changed monitor ;
 
 : queue-change ( path changes monitor -- )
     3dup and and [
-        [ check-disposed ] keep
+        check-disposed
         [ file-change boa ] keep
         queue>> mailbox-put
     ] [ 3drop ] if ;
@@ -54,11 +54,9 @@ HOOK: (monitor) io-backend ( path recursive? mailbox -- monitor )
     <mailbox> (monitor) ;
 
 : next-change ( monitor -- change )
-    [ check-disposed ]
-    [
-        [ ] [ queue>> ] [ timeout ] tri mailbox-get-timeout
-        dup monitor-disposed eq? [ drop already-disposed ] [ nip ] if
-    ] bi ;
+    check-disposed
+    [ ] [ queue>> ] [ timeout ] tri mailbox-get-timeout
+    dup monitor-disposed eq? [ drop already-disposed ] [ nip ] if ;
 
 SYMBOL: +add-file+
 SYMBOL: +remove-file+
index f5d659ef4fcb148a21c88b2929deaee445628e98..2c522f5b09616e161e7c9b23410ada3e497ed36e 100644 (file)
@@ -77,7 +77,7 @@ TUPLE: win32-monitor < monitor port ;
     ] each ;
 
 : fill-queue ( monitor -- )
-    dup port>> dup check-disposed
+    dup port>> check-disposed
     [ buffer>> ptr>> ] [ read-changes zero? ] bi
     [ 2dup parse-notify-records ] unless
     2drop ;
index d1042818f7ca6f78fcd911b708a3f0b807286382..ebab3f92a9edd3a940581fdd0fcfc500e3e17ae6 100644 (file)
@@ -7,7 +7,7 @@ IN: io.pools
 TUPLE: pool connections disposed expired ;
 
 : check-pool ( pool -- )
-    dup check-disposed
+    check-disposed
     dup expired>> expired? [
         31337 <alien> >>expired
         connections>> delete-all
index 8e7a529c5f347b8f6f2b956f1c6df44e8ba79d82..8646d3b609cd629ecdd7a475aae8de1032ab7438 100644 (file)
@@ -39,7 +39,7 @@ HOOK: (wait-to-read) io-backend ( port -- )
     ] [ drop f ] if ; inline
 
 M: input-port stream-read1
-    dup check-disposed
+    check-disposed
     dup wait-to-read [ drop f ] [ buffer>> buffer-pop ] if ; inline
 
 ERROR: not-a-c-ptr object ;
@@ -58,7 +58,7 @@ ERROR: not-a-c-ptr object ;
     { fixnum c-ptr } declare ; inline
 
 : prepare-read ( count port -- count' port )
-    [ integer>fixnum-strict 0 max ] dip dup check-disposed ; inline
+    [ integer>fixnum-strict 0 max ] dip check-disposed ; inline
 
 :: read-loop ( dst n-remaining port n-read -- n-total )
     n-remaining port read-step :> ( n-buffered ptr )
@@ -100,11 +100,15 @@ M: input-port stream-read-unsafe
 PRIVATE>
 
 M: input-port stream-read-until
-    2dup read-until-step dup [ [ 2drop ] 2dip ] [
+    2dup read-until-step dup [
+        [ 2drop ] 2dip
+    ] [
         over [
             drop
             BV{ } like [ read-until-loop ] keep B{ } like swap
-        ] [ [ 2drop ] 2dip ] if
+        ] [
+            [ 2drop ] 2dip
+        ] if
     ] if ;
 
 TUPLE: output-port < buffered-port ;
@@ -125,16 +129,16 @@ HOOK: (wait-to-write) io-backend ( port -- )
 PRIVATE>
 
 M: output-port stream-flush
-    [ check-disposed ] [ port-flush ] bi ;
+    check-disposed port-flush ;
 
 : wait-to-write ( len port -- )
     [ nip ] [ buffer>> buffer-capacity <= ] 2bi
     [ drop ] [ port-flush ] if ; inline
 
 M: output-port stream-write1
-    [ check-disposed ]
-    [ 1 swap wait-to-write ]
-    [ buffer>> buffer-write1 ] tri ; inline
+    check-disposed
+    1 over wait-to-write
+    buffer>> buffer-write1 ; inline
 
 <PRIVATE
 
@@ -152,7 +156,7 @@ M: output-port stream-write1
 PRIVATE>
 
 M: output-port stream-write
-    dup check-disposed [
+    check-disposed [
         binary-object
         [ check-c-ptr ] [ integer>fixnum-strict ] bi*
     ] [ port-write ] bi* ;
@@ -165,13 +169,20 @@ HOOK: can-seek-handle? os ( handle -- ? )
 
 HOOK: handle-length os ( handle -- n/f )
 
+<PRIVATE
+
+: port-tell ( port -- tell-handle buffer-length )
+    [ handle>> tell-handle ] [ buffer>> buffer-length ] bi ; inline
+
+PRIVATE>
+
 M: input-port stream-tell
-    [ check-disposed ]
-    [ [ handle>> tell-handle ] [ buffer>> buffer-length ] bi - ] bi ;
+    check-disposed port-tell - ;
 
 M: output-port stream-tell
-    [ check-disposed ]
-    [ [ handle>> tell-handle ] [ buffer>> buffer-length ] bi + ] bi ;
+    check-disposed port-tell + ;
+
+<PRIVATE
 
 :: do-seek-relative ( n seek-type stream -- n seek-type stream )
     ! seek-relative needs special handling here, because of the
@@ -180,17 +191,19 @@ M: output-port stream-tell
     [ n stream stream-tell + seek-absolute ] [ n seek-type ] if
     stream ; inline
 
+PRIVATE>
+
 M: input-port stream-seek
+    check-disposed
     do-seek-relative
-    [ check-disposed ]
     [ buffer>> 0 swap buffer-reset ]
-    [ handle>> seek-handle ] tri ;
+    [ handle>> seek-handle ] bi ;
 
 M: output-port stream-seek
+    check-disposed
     do-seek-relative
-    [ check-disposed ]
     [ stream-flush ]
-    [ handle>> seek-handle ] tri ;
+    [ handle>> seek-handle ] bi ;
 
 M: buffered-port stream-seekable?
     handle>> can-seek-handle? ;
@@ -221,10 +234,7 @@ M: buffered-port dispose*
 M: port cancel-operation handle>> cancel-operation ;
 
 M: port dispose*
-    [
-        [ handle>> &dispose drop ]
-        [ handle>> shutdown ] bi
-    ] with-destructors ;
+    [ handle>> &dispose shutdown ] with-destructors ;
 
 GENERIC: underlying-port ( stream -- port )
 
index 0a7287fc5319be551618719ba03fe071da9e12fa..db968e1a7ca474080d3cd9da8dd2f20fb9c7f579 100644 (file)
@@ -296,10 +296,10 @@ ERROR: invalid-port object ;
     dup { [ datagram-port? ] [ raw-port? ] } 1|| [ invalid-port ] unless ;
 
 : check-send ( packet addrspec port -- packet addrspec port )
-    check-connectionless-port dup check-disposed check-port ;
+    check-connectionless-port check-disposed check-port ;
 
 : check-receive ( port -- port )
-    check-connectionless-port dup check-disposed ;
+    check-connectionless-port check-disposed ;
 
 HOOK: (send) io-backend ( packet addrspec datagram -- )
 
index e2ea06d7408240b86017765cb6b568047008a789..716f91cfa5f811d7efa7571bb456593f8fdc207f 100755 (executable)
@@ -35,8 +35,8 @@ GENERIC: dispose* ( disposable -- )
 
 ERROR: already-disposed disposable ;
 
-: check-disposed ( disposable -- )
-    dup disposed>> [ already-disposed ] [ drop ] if ; inline
+: check-disposed ( disposable -- disposable )
+    dup disposed>> [ already-disposed ] when ; inline
 
 GENERIC: dispose ( disposable -- )
 
index 7bcc5a68449c0b6b4ba3c507c0b797d7dae7b357..464c9b83e39c6b8fbc8a69361816c74f2d7f0506 100644 (file)
@@ -19,14 +19,14 @@ INSTANCE: c-writer file-writer
 : <c-writer> ( handle -- stream ) c-writer new-c-stream ;
 
 M: c-writer stream-write1
-    dup check-disposed handle>> fputc ;
+    check-disposed handle>> fputc ;
 
 M: c-writer stream-write
-    dup check-disposed
+    check-disposed
     [ binary-object ] [ handle>> ] bi* fwrite ;
 
 M: c-writer stream-flush
-    dup check-disposed handle>> fflush ;
+    check-disposed handle>> fflush ;
 
 TUPLE: c-reader < c-stream ;
 INSTANCE: c-reader input-stream
@@ -35,10 +35,10 @@ INSTANCE: c-reader file-reader
 : <c-reader> ( handle -- stream ) c-reader new-c-stream ;
 
 M: c-reader stream-read-unsafe
-    dup check-disposed handle>> fread-unsafe ;
+    check-disposed handle>> fread-unsafe ;
 
 M: c-reader stream-read1
-    dup check-disposed handle>> fgetc ;
+    check-disposed handle>> fgetc ;
 
 : read-until-loop ( handle seps accum -- accum ch )
     pick fgetc dup [
@@ -49,7 +49,7 @@ M: c-reader stream-read1
     ] if ; inline recursive
 
 M: c-reader stream-read-until
-    dup check-disposed handle>> swap
+    check-disposed handle>> swap
     32 <byte-vector> read-until-loop [ B{ } like ] dip
     over empty? over not and [ 2drop f f ] when ;