bootstrap fix

cvs
Slava Pestov 2005-12-15 01:29:32 +00:00
parent fe7f175c7b
commit 587de89e22
9 changed files with 59 additions and 57 deletions

View File

@ -1,5 +1,6 @@
+ 0.80:
- make-image leaks memory
- does parsing cons excessive amounts of bignums with c-streams
- -with combinators are awkward
- cleanups:

View File

@ -201,13 +201,12 @@ vectors words ;
[ dup "x86" = ] [
{
"/library/compiler/x86/assembler.factor"
"/library/compiler/amd64/assembler.factor"
"/library/compiler/amd64/architecture.factor"
"/library/compiler/x86/architecture.factor"
"/library/compiler/x86/generator.factor"
"/library/compiler/x86/slots.factor"
"/library/compiler/x86/stack.factor"
"/library/compiler/x86/fixnum.factor"
"/library/compiler/amd64/alien.factor"
"/library/compiler/x86/alien.factor"
}
]
} {
@ -236,7 +235,7 @@ vectors words ;
}
]
}
} cond [ parse-resource % ] each
} cond [ parse-resource % ] each drop
[
"/library/bootstrap/boot-stage2.factor" run-resource

View File

@ -317,13 +317,16 @@ M: hashtable ' ( hashtable -- pointer )
( Image output )
: (write-image) ( image -- )
cell swap big-endian get [
cell get swap big-endian get [
[ swap >be write ] each-with
] [
[ swap >le write ] each-with
] if ;
: write-image ( image file -- )
: image-name
"boot.image." architecture get append ;
: write-image ( image -- )
"Writing image to " write dup write "..." print
<file-writer> [ (write-image) ] with-stream ;
@ -335,19 +338,16 @@ M: hashtable ' ( hashtable -- pointer )
bootstrapping? on dup architecture set prepare-profile
800000 <vector> image set 20000 <hashtable> objects set ;
: <image> ( architecture -- image )
: make-image ( architecture -- )
#! Make a bootstrap image for the given architecture
#! (x86, ppc, or amd64).
[
prepare-image
begin-image
"/library/bootstrap/boot-stage1.factor" run-resource
end-image
image get
image get image-name write-image
] with-scope ;
: make-image ( architecture -- )
#! Make a bootstrap image for the given architecture
#! (x86, ppc, or amd64).
dup <image> "boot.image." rot append write-image ;
: make-images ( -- )
"x86" make-image "ppc" make-image "amd64" make-image ;

View File

@ -3,20 +3,19 @@
IN: assembler
! AMD64 registers
REGISTER: RAX 0 64
REGISTER: RCX 1 64
REGISTER: RDX 2 64
REGISTER: RBX 3 64
REGISTER: RSP 4 64
REGISTER: RBP 5 64
REGISTER: RSI 6 64
REGISTER: RDI 7 64
REGISTER: R8 8 64
REGISTER: R9 9 64
REGISTER: R10 10 64
REGISTER: R11 11 64
REGISTER: R12 12 64
REGISTER: R13 13 64
REGISTER: R14 14 64
REGISTER: R15 15 64
SYMBOL: RAX \ RAX 0 64 define-register
SYMBOL: RCX \ RCX 1 64 define-register
SYMBOL: RDX \ RDX 2 64 define-register
SYMBOL: RBX \ RBX 3 64 define-register
SYMBOL: RSP \ RSP 4 64 define-register
SYMBOL: RBP \ RBP 5 64 define-register
SYMBOL: RSI \ RSI 6 64 define-register
SYMBOL: RDI \ RDI 7 64 define-register
SYMBOL: R8 \ R8 8 64 define-register
SYMBOL: R9 \ R9 9 64 define-register
SYMBOL: R10 \ R10 10 64 define-register
SYMBOL: R11 \ R11 11 64 define-register
SYMBOL: R12 \ R12 12 64 define-register
SYMBOL: R13 \ R13 13 64 define-register
SYMBOL: R14 \ R14 14 64 define-register
SYMBOL: R15 \ R15 15 64 define-register

View File

@ -25,7 +25,7 @@ M: %replace generate-node ( vop -- )
drop 0 input-operand 0 output loc>operand STW ;
M: %inc-d generate-node ( vop -- )
drop 14 14 0 input cell * ADDI ;
drop 14 14 0 input cells ADDI ;
M: %inc-r generate-node ( vop -- )
drop 15 15 0 input cell * ADDI ;
drop 15 15 0 input cells ADDI ;

View File

@ -2,7 +2,7 @@
! See http://factor.sf.net/license.txt for BSD license.
IN: assembler
USING: arrays compiler errors generic kernel kernel-internals
lists math parser sequences words ;
lists math namespaces parser sequences words ;
! A postfix assembler for x86 and AMD64.
@ -23,29 +23,28 @@ M: object extended? drop f ;
M: object operand-64? drop cell get 8 = ;
( Register operands -- eg, ECX )
: REGISTER:
CREATE dup define-symbol
dup scan-word "register" set-word-prop
scan-word "register-size" set-word-prop ; parsing
: define-register ( symbol num size -- )
>r dupd "register" set-word-prop r>
"register-size" set-word-prop ;
! x86 registers
REGISTER: AX 0 16
REGISTER: CX 1 16
REGISTER: DX 2 16
REGISTER: BX 3 16
REGISTER: SP 4 16
REGISTER: BP 5 16
REGISTER: SI 6 16
REGISTER: DI 7 16
SYMBOL: AX \ AX 0 16 define-register
SYMBOL: CX \ CX 1 16 define-register
SYMBOL: DX \ DX 2 16 define-register
SYMBOL: BX \ BX 3 16 define-register
SYMBOL: SP \ SP 4 16 define-register
SYMBOL: BP \ BP 5 16 define-register
SYMBOL: SI \ SI 6 16 define-register
SYMBOL: DI \ DI 7 16 define-register
REGISTER: EAX 0 32
REGISTER: ECX 1 32
REGISTER: EDX 2 32
REGISTER: EBX 3 32
REGISTER: ESP 4 32
REGISTER: EBP 5 32
REGISTER: ESI 6 32
REGISTER: EDI 7 32
SYMBOL: EAX \ EAX 0 32 define-register
SYMBOL: ECX \ ECX 1 32 define-register
SYMBOL: EDX \ EDX 2 32 define-register
SYMBOL: EBX \ EBX 3 32 define-register
SYMBOL: ESP \ ESP 4 32 define-register
SYMBOL: EBP \ EBP 5 32 define-register
SYMBOL: ESI \ ESI 6 32 define-register
SYMBOL: EDI \ EDI 7 32 define-register
PREDICATE: word register "register" word-prop ;

View File

@ -139,4 +139,4 @@ IN: kernel-internals
: float-tag BIN: 101 ; inline
: complex-tag BIN: 110 ; inline
: cell 17 getenv ; inline
SYMBOL: cell

View File

@ -50,11 +50,11 @@ IN: temporary
[ t ] [ [ [ 1 ] [ 2 ] ] [ [ 1 ] [ 2 ] if ] kill-set= ] unit-test
: literal-kill-test-1 4 compiled-offset cell 2 * - ; compiled
: literal-kill-test-1 4 compiled-offset 2 cells - ; compiled
[ 4 ] [ literal-kill-test-1 drop ] unit-test
: literal-kill-test-2 3 compiled-offset cell 2 * - ; compiled
: literal-kill-test-2 3 compiled-offset 2 cells - ; compiled
[ 3 ] [ literal-kill-test-2 drop ] unit-test

View File

@ -1,8 +1,12 @@
IN: scratchpad
USING: kernel memory namespaces sequences test ;
USING: kernel kernel-internals math memory namespaces sequences
test ;
[ 0 ] [ f size ] unit-test
[ t ] [ [ \ = \ = ] all-equal? ] unit-test
! (clone) primitive was missing GC check
[ ] [ 1000000 [ drop H{ } clone >n n> drop ] each ] unit-test
[ cell ] [ cell ] unit-test
[ t ] [ cell get integer? ] unit-test