bootstrap fix
parent
fe7f175c7b
commit
587de89e22
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
||||
|
|
|
@ -139,4 +139,4 @@ IN: kernel-internals
|
|||
: float-tag BIN: 101 ; inline
|
||||
: complex-tag BIN: 110 ; inline
|
||||
|
||||
: cell 17 getenv ; inline
|
||||
SYMBOL: cell
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue