From a800031a322b9650b02ddc935de38764a89e4e1b Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Mon, 15 Oct 2007 16:19:50 -0500 Subject: [PATCH 1/2] Move platform-specific destructor code out of extra/destructors --- extra/destructors/destructors.factor | 4 ---- extra/destructors/unix/unix.factor | 9 --------- extra/destructors/windows/windows.factor | 11 ----------- extra/io/sniffer/bsd/bsd.factor | 3 +++ extra/io/windows/windows.factor | 6 ++++++ 5 files changed, 9 insertions(+), 24 deletions(-) delete mode 100644 extra/destructors/unix/unix.factor delete mode 100644 extra/destructors/windows/windows.factor diff --git a/extra/destructors/destructors.factor b/extra/destructors/destructors.factor index 42a6d4a0c9..4d3a150124 100755 --- a/extra/destructors/destructors.factor +++ b/extra/destructors/destructors.factor @@ -84,10 +84,6 @@ M: socket-destructor (destruct) ( obj -- ) (socket-destructor) ; : close-socket-later ( handle -- ) f push-destructor ; -USE-IF: windows? destructors.windows -USE-IF: unix? destructors.unix - - ! : add-destructor ( word quot -- ) ! >quotation diff --git a/extra/destructors/unix/unix.factor b/extra/destructors/unix/unix.factor deleted file mode 100644 index b971ef669e..0000000000 --- a/extra/destructors/unix/unix.factor +++ /dev/null @@ -1,9 +0,0 @@ -USING: destructors io.windows kernel qualified ; -QUALIFIED: unix -IN: detructors.unix - -M: unix-io (handle-destructor) ( obj -- ) - destructor-obj close drop ; - - - diff --git a/extra/destructors/windows/windows.factor b/extra/destructors/windows/windows.factor deleted file mode 100644 index 1cb937c2eb..0000000000 --- a/extra/destructors/windows/windows.factor +++ /dev/null @@ -1,11 +0,0 @@ -USING: destructors io.windows kernel windows.kernel32 -windows.winsock ; -IN: detructors.windows - -M: windows-io (handle-destructor) ( obj -- ) - destructor-obj CloseHandle drop ; - -M: windows-io (socket-destructor) ( obj -- ) - destructor-obj closesocket drop ; - - diff --git a/extra/io/sniffer/bsd/bsd.factor b/extra/io/sniffer/bsd/bsd.factor index 56b536cc39..4568649d23 100644 --- a/extra/io/sniffer/bsd/bsd.factor +++ b/extra/io/sniffer/bsd/bsd.factor @@ -7,6 +7,9 @@ sequences ; QUALIFIED: unix IN: io.sniffer.bsd +M: unix-io (handle-destructor) ( obj -- ) + destructor-obj close drop ; + C-UNION: ifreq_props "sockaddr-in" "short" "int" "caddr_t" ; C-STRUCT: ifreq { { "char" 16 } "name" } { "ifreq_props" "props" } ; diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index 8e8c14c5c3..423783526e 100644 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -10,6 +10,12 @@ TUPLE: windows-nt-io ; TUPLE: windows-ce-io ; UNION: windows-io windows-nt-io windows-ce-io ; +M: windows-io (handle-destructor) ( obj -- ) + destructor-obj CloseHandle drop ; + +M: windows-io (socket-destructor) ( obj -- ) + destructor-obj closesocket drop ; + M: windows-io root-directory? ( path -- ? ) [ path-separator? ] rtrim dup length 2 = [ From d744630f41b9b8bf06fe25fe8693fc248464dc5d Mon Sep 17 00:00:00 2001 From: Slava Date: Tue, 16 Oct 2007 00:53:13 -0400 Subject: [PATCH 2/2] Fix MOVSX opcode in x86 assembler --- core/cpu/x86/assembler/assembler.factor | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/cpu/x86/assembler/assembler.factor b/core/cpu/x86/assembler/assembler.factor index 5e40fe4f49..bb5e13613c 100644 --- a/core/cpu/x86/assembler/assembler.factor +++ b/core/cpu/x86/assembler/assembler.factor @@ -255,9 +255,8 @@ UNION: operand register indirect ; : extended-opcode, ( opcode -- ) extended-opcode opcode, ; : opcode-or ( opcode mask -- opcode' ) - over array? - [ 1 rot cut* first rot bitor add ] - [ bitor ] if ; + swap dup array? + [ 1 cut* first rot bitor add ] [ bitor ] if ; : 1-operand ( op reg rex.w opcode -- ) #! The 'reg' is not really a register, but a value for the