compiler.cfg.debugger: clean up and make it more flexible

db4
Slava Pestov 2010-04-30 05:33:17 -04:00
parent 43f269e4eb
commit 33eb15bf44
4 changed files with 58 additions and 29 deletions

View File

@ -10,21 +10,45 @@ compiler.cfg.stack-frame compiler.cfg.linear-scan
compiler.cfg.optimizer compiler.cfg.finalization compiler.cfg.optimizer compiler.cfg.finalization
compiler.cfg.instructions compiler.cfg.utilities compiler.cfg.instructions compiler.cfg.utilities
compiler.cfg.def-use compiler.cfg.rpo compiler.cfg.mr compiler.cfg.def-use compiler.cfg.rpo compiler.cfg.mr
compiler.cfg.representations.preferred compiler.cfg ; compiler.cfg.representations
compiler.cfg.representations.preferred
compiler.cfg.gc-checks compiler.cfg.save-contexts compiler.cfg ;
IN: compiler.cfg.debugger IN: compiler.cfg.debugger
GENERIC: test-cfg ( quot -- cfgs ) GENERIC: test-builder ( quot -- cfgs )
M: callable test-cfg M: callable test-builder
0 vreg-counter set-global 0 vreg-counter set-global
build-tree optimize-tree gensym build-cfg ; build-tree optimize-tree gensym build-cfg ;
M: word test-cfg M: word test-builder
0 vreg-counter set-global 0 vreg-counter set-global
[ build-tree optimize-tree ] keep build-cfg ; [ build-tree optimize-tree ] keep build-cfg ;
: test-mr ( quot -- mrs ) : test-optimizer ( quot -- cfgs )
test-cfg [ test-builder [ [ optimize-cfg ] with-cfg ] map ;
: test-ssa ( quot -- mrs )
test-builder [
[
optimize-cfg
flatten-cfg
] with-cfg
] map ;
: test-flat ( quot -- mrs )
test-builder [
[
optimize-cfg
select-representations
insert-gc-checks
insert-save-contexts
flatten-cfg
] with-cfg
] map ;
: test-regs ( quot -- mrs )
test-builder [
[ [
optimize-cfg optimize-cfg
finalize-cfg finalize-cfg
@ -32,21 +56,26 @@ M: word test-cfg
] with-cfg ] with-cfg
] map ; ] map ;
: insn. ( insn -- ) GENERIC: insn. ( insn -- )
tuple>array but-last [ pprint bl ] each nl ;
: mr. ( mrs -- ) M: ##phi insn.
[ clone [ [ [ number>> ] dip ] assoc-map ] change-inputs
call-next-method ;
M: insn insn. tuple>array but-last [ bl ] [ pprint ] interleave nl ;
: mr. ( mr -- )
"=== word: " write "=== word: " write
dup word>> pprint dup word>> pprint
", label: " write ", label: " write
dup label>> pprint nl nl dup label>> pprint nl nl
instructions>> [ insn. ] each instructions>> [ insn. ] each ;
nl
] each ;
: test-mr. ( quot -- ) : mrs. ( mrs -- )
test-mr mr. ; inline [ nl ] [ mr. ] interleave ;
: flat. ( quot -- ) test-flat mrs. ; inline
: regs. ( quot -- ) test-regs mrs. ; inline
! Prettyprinting ! Prettyprinting
: pprint-loc ( loc word -- ) <block pprint-word n>> pprint* block> ; : pprint-loc ( loc word -- ) <block pprint-word n>> pprint* block> ;

View File

@ -3,12 +3,11 @@ USING: typed compiler.cfg.debugger compiler.tree.debugger
tools.disassembler words ; tools.disassembler words ;
IN: typed.debugger IN: typed.debugger
: typed-test-mr ( word -- mrs ) M: typed-word test-builder
"typed-word" word-prop test-mr ; inline "typed-word" word-prop test-builder ;
: typed-test-mr. ( word -- )
"typed-word" word-prop test-mr mr. ; inline
: typed-optimized. ( word -- )
"typed-word" word-prop optimized. ; inline
: typed-disassemble ( word -- ) : typed-optimized. ( word -- )
"typed-word" word-prop disassemble ; inline "typed-word" word-prop optimized. ;
M: typed-word disassemble ( word -- )
"typed-word" word-prop disassemble ;

View File

@ -167,3 +167,4 @@ SYNTAX: TYPED::
USE: vocabs.loader USE: vocabs.loader
{ "typed" "prettyprint" } "typed.prettyprint" require-when { "typed" "prettyprint" } "typed.prettyprint" require-when
{ "typed" "compiler.cfg.debugger" } "typed.debugger" require-when

View File

@ -78,8 +78,8 @@ IN: compiler.graphviz
: optimized-cfg ( quot -- cfgs ) : optimized-cfg ( quot -- cfgs )
{ {
{ [ dup cfg? ] [ 1array ] } { [ dup cfg? ] [ 1array ] }
{ [ dup quotation? ] [ test-cfg [ dup cfg set optimize-cfg ] map ] } { [ dup quotation? ] [ test-optimizer ] }
{ [ dup word? ] [ test-cfg [ dup cfg set optimize-cfg ] map ] } { [ dup word? ] [ test-optimizer ] }
[ ] [ ]
} cond ; } cond ;