starting point - Fix bootstrap; I broke it in merging. Disable environment variables because the compiler isn't loaded yet and can't call C ffi functions, and tools.test loads this vocab.
Disable intrinsics in cpu.x86.64 for now, since they invoke the compiler Fix ##branch renaming to ##branch, To work on this branch: ./factor -include=math -i=boot.image ./factor -run=listener USE: compiler USE: tools.test save enable-optimizer Error message is now: T{ vregs-shouldn't-interfere f 409 424 }db4
parent
07227f22f9
commit
a0dd953e33
|
@ -76,12 +76,6 @@ SYMBOL: temp-locations
|
||||||
: register->memory ( from to -- )
|
: register->memory ( from to -- )
|
||||||
[ [ reg>> ] [ rep>> ] bi ] [ reg>> ] bi* ##spill, ;
|
[ [ reg>> ] [ rep>> ] bi ] [ reg>> ] bi* ##spill, ;
|
||||||
|
|
||||||
: temp->register ( from to -- )
|
|
||||||
nip [ reg>> ] [ rep>> ] [ rep>> spill-temp ] tri ##reload, ;
|
|
||||||
|
|
||||||
: register->temp ( from to -- )
|
|
||||||
drop [ [ reg>> ] [ rep>> ] bi ] [ rep>> spill-temp ] bi ##spill, ;
|
|
||||||
|
|
||||||
: register->register ( from to -- )
|
: register->register ( from to -- )
|
||||||
swap [ reg>> ] [ [ reg>> ] [ rep>> ] bi ] bi* ##copy, ;
|
swap [ reg>> ] [ [ reg>> ] [ rep>> ] bi ] bi* ##copy, ;
|
||||||
|
|
||||||
|
@ -95,7 +89,7 @@ SYMBOL: temp-locations
|
||||||
: mapping-instructions ( alist -- insns )
|
: mapping-instructions ( alist -- insns )
|
||||||
[ swap ] H{ } assoc-map-as [
|
[ swap ] H{ } assoc-map-as [
|
||||||
[ temp-location ] [ swap >insn ] parallel-mapping
|
[ temp-location ] [ swap >insn ] parallel-mapping
|
||||||
##branch
|
##branch,
|
||||||
] { } make ;
|
] { } make ;
|
||||||
|
|
||||||
: perform-mappings ( bb to mappings -- )
|
: perform-mappings ( bb to mappings -- )
|
||||||
|
|
|
@ -60,7 +60,7 @@ PRIVATE>
|
||||||
|
|
||||||
: parallel-copy ( mapping -- )
|
: parallel-copy ( mapping -- )
|
||||||
! mapping is a list of { dst src } pairs
|
! mapping is a list of { dst src } pairs
|
||||||
next-vreg '[ drop _ ] [ any-rep ##copy ] parallel-mapping ;
|
next-vreg '[ drop _ ] [ any-rep ##copy, ] parallel-mapping ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
|
@ -74,4 +74,4 @@ PRIVATE>
|
||||||
: parallel-copy-rep ( mapping -- )
|
: parallel-copy-rep ( mapping -- )
|
||||||
! mapping is a list of { dst src } pairs
|
! mapping is a list of { dst src } pairs
|
||||||
H{ } clone temp-vregs set
|
H{ } clone temp-vregs set
|
||||||
[ rep-of temp-vreg ] [ dup rep-of ##copy ] parallel-mapping ;
|
[ rep-of temp-vreg ] [ dup rep-of ##copy, ] parallel-mapping ;
|
||||||
|
|
|
@ -33,7 +33,7 @@ SYMBOL: copies
|
||||||
] each ;
|
] each ;
|
||||||
|
|
||||||
: insert-edge-copies ( from to copies -- )
|
: insert-edge-copies ( from to copies -- )
|
||||||
[ ##parallel-copy ##branch ] { } make insert-basic-block ;
|
[ ##parallel-copy, ##branch, ] { } make insert-basic-block ;
|
||||||
|
|
||||||
: insert-copies ( bb -- )
|
: insert-copies ( bb -- )
|
||||||
[ copies get ] dip '[
|
[ copies get ] dip '[
|
||||||
|
|
|
@ -145,11 +145,11 @@ M: x86.64 (cpuid) ( rax rcx regs -- )
|
||||||
|
|
||||||
! The result of reading 4 bytes from memory is a fixnum on
|
! The result of reading 4 bytes from memory is a fixnum on
|
||||||
! x86-64.
|
! x86-64.
|
||||||
enable-alien-4-intrinsics
|
! enable-alien-4-intrinsics
|
||||||
|
|
||||||
{
|
{
|
||||||
{ [ os unix? ] [ "cpu.x86.64.unix" require ] }
|
{ [ os unix? ] [ "cpu.x86.64.unix" require ] }
|
||||||
{ [ os windows? ] [ "cpu.x86.64.windows" require ] }
|
{ [ os windows? ] [ "cpu.x86.64.windows" require ] }
|
||||||
} cond
|
} cond
|
||||||
|
|
||||||
check-cpu-features
|
! check-cpu-features
|
||||||
|
|
|
@ -31,9 +31,9 @@ HOOK: set-os-envs-pointer os ( malloc -- )
|
||||||
} cond
|
} cond
|
||||||
|
|
||||||
[
|
[
|
||||||
"FACTOR_ROOTS" os-env
|
! "FACTOR_ROOTS" os-env
|
||||||
[
|
! [
|
||||||
os windows? ";" ":" ? split
|
! os windows? ";" ":" ? split
|
||||||
[ add-vocab-root ] each
|
! [ add-vocab-root ] each
|
||||||
] when*
|
! ] when*
|
||||||
] "environment" add-startup-hook
|
] "environment" add-startup-hook
|
||||||
|
|
Loading…
Reference in New Issue