Commit Graph

811 Commits (75137bafb143d33366a225589b52c3a45b8aba30)

Author SHA1 Message Date
Slava Pestov c5e00da9f8 compiler.cfg.linear-scan.live-intervals: remove bogus assertion 2009-07-16 02:42:01 -05:00
Slava Pestov 82e77d891a compiler.cfg.block-joining: join basic blocks connected by a single edge to improve effectiveness of local optimizations 2009-07-16 02:17:58 -05:00
Daniel Ehrenberg 5a5a6a34b9 fixing stupid bug in propagation 2009-07-16 00:43:54 -05:00
Daniel Ehrenberg a295b28652 define-partial-eval framework in propagation pass makes it easy to add transforms; moving some transforms from stack checker to propagation, making them stronger 2009-07-16 00:34:50 -05:00
Slava Pestov bff5a44c70 compiler.cfg: Fix regressions from recent changes 2009-07-14 20:43:06 -05:00
Slava Pestov 1d29dfa2d6 compiler.cfg.branch-splitting: don't split if there's one predecessor 2009-07-14 20:42:50 -05:00
Slava Pestov b65ef327ce compiler.cfg.value-numbering: merge in compiler.cfg.branch-folding 2009-07-14 20:05:01 -05:00
Slava Pestov a8d3bd1d24 compiler.cfg.intrinsics.fixnum: don't generate -imm forms anymore since value numbering does it 2009-07-14 19:18:57 -05:00
Slava Pestov bea69ea325 compiler.cfg.value-numbering: branch folding 2009-07-14 19:17:12 -05:00
Slava Pestov a41f452f68 Fix codegen test 2009-07-14 16:11:14 -05:00
Slava Pestov 1cf5eadf5c Merge branch 'master' of git://factorcode.org/git/factor 2009-07-14 16:05:35 -05:00
Slava Pestov 2e6ae2153c compiler.cfg.value-numbering: more optimizations 2009-07-14 16:05:25 -05:00
Daniel Ehrenberg 324aeb0672 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-14 14:25:42 -05:00
Daniel Ehrenberg ad301b07ae new is inlined in the propagation pass when the class is known 2009-07-14 14:16:39 -05:00
Slava Pestov 1e8e24946c compiler.cfg.value-numbering: add some unit tests 2009-07-14 13:25:07 -05:00
Slava Pestov a17293a828 compiler.cfg: update unit tests for compiler.cfg.comparisons 2009-07-14 12:06:55 -05:00
Daniel Ehrenberg 581fbb5af2 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-14 01:24:08 -05:00
Daniel Ehrenberg c6c5be4eb0 call( and execute( inline known quotations/words in the propagation pass 2009-07-14 01:12:45 -05:00
Slava Pestov dff25199cb Merge branch 'master' of git://factorcode.org/git/factor 2009-07-13 22:59:19 -05:00
Doug Coleman 83d8c8606d clean up value numbering conversion of ##add/sub to ##add/sub-imm 2009-07-13 19:02:05 -05:00
Slava Pestov 1eae4286cd compiler.cfg: split off condition codes into a comparisons sub-vocabulary 2009-07-13 14:42:52 -05:00
Slava Pestov eda950a3bf compiler.cfg.value-numbering: fix ##compare and ##compare-branch rewrites 2009-07-13 12:33:58 -05:00
Slava Pestov 01f9addc3a compiler.cfg.branch-splitting: split blocks with successors 2009-07-13 10:44:08 -05:00
Slava Pestov 31ae0845f3 compiler.cfg.linear-scan.resolve: get it to work on CFGs with critical edges 2009-07-12 23:00:33 -05:00
Slava Pestov 07d8bed106 compiler.cfg: Some code cleanups, update stack-analysis and phi-insertion to work on CFGs with critical edges 2009-07-12 22:22:46 -05:00
Slava Pestov 75b2e114f3 compiler.cfg.linear-scan: disable unit test for unimplemented feature 2009-07-10 07:48:49 -05:00
Slava Pestov 2c3fb59f4f compiler.cfg.linear-scan: fix fencepost error in spill insertion 2009-07-10 03:58:51 -05:00
Slava Pestov 0be3f33296 insn. doesn't print numbers 2009-07-10 03:05:45 -05:00
Slava Pestov e48b805bde compiler.cfg.linear-scan.allocation: fix broken spill slot reuse logic 2009-07-10 00:25:46 -05:00
Slava Pestov 713c2411f7 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-09 23:14:45 -05:00
Slava Pestov fe32e13fb0 compiler.cfg.value-numbering: factor out value renaming into a separate compiler.cfg.renaming vocabulary 2009-07-09 23:14:26 -05:00
Slava Pestov 71f1986ace compiler.cfg: move back-edge? word from stack-analysis to top-level vocab 2009-07-09 23:13:30 -05:00
Slava Pestov f93a71e978 compiler.cfg.linear-scan: two live intervals which are coalesced will use the same spill slot 2009-07-09 23:12:49 -05:00
Daniel Ehrenberg 55e5d60b23 Adding authors to compiler.tree.modular-arithmetic 2009-07-09 23:09:49 -05:00
Daniel Ehrenberg bf706063e2 Improving modular arithmetic optimization to be aware of words like set-alien-unsigned-2 2009-07-09 23:07:38 -05:00
Slava Pestov 387c48fcc5 Revert "Remove unused vocabulary" -- committed patch from the wrong machine
This reverts commit 04c3c15411.
2009-07-09 19:50:15 -05:00
Slava Pestov 04c3c15411 Remove unused vocabulary 2009-07-09 19:10:36 -05:00
U-SLAVA-DFB8FF805\Slava 7f8c0d1e25 compiler.cfg.optimizer: fix irrelevant test 2009-07-09 06:17:10 -05:00
Slava Pestov 511ca9dea0 compiler.tree.propagation: better length propagation 2009-07-09 02:28:30 -05:00
Slava Pestov 4d3382431f compiler.cfg.linear-scan: fixing unit tests 2009-07-09 00:48:00 -05:00
Slava Pestov 279733adfb compiler.cfg.linear-scan: more code cleanups, and working on split-to-fit algorithm 2009-07-09 00:20:03 -05:00
Slava Pestov b02590cd58 compiler.cfg.linear-scan: code cleanups 2009-07-08 23:28:28 -05:00
Slava Pestov 65cb2d84a7 compiler.cfg.linear-scan: split off parallel mapping code from resolve pass, use it in assignment pass to resolve parallel copies 2009-07-08 23:07:06 -05:00
Slava Pestov 4ef76762e3 compiler.cfg.linear-scan: debugging spilling, add more assertions 2009-07-07 13:01:27 -05:00
Slava Pestov 39e660d8f6 compiler.cfg.linear-scan: code cleanup 2009-07-07 03:45:27 -05:00
Slava Pestov 15134e61e0 compiler.cfg.linear-scan: Re-implement spilling, add some additional runtime assertions, simplify assignment pass since it doesn't have to track spill slots anymore; just assume a live value that's not in active or inactive is spilled 2009-07-07 03:28:55 -05:00
Slava Pestov d6f45a5216 compiler.cfg.linear-scan: minor fixes 2009-07-05 22:51:53 -05:00
Slava Pestov dd56f4158a compiler.cfg.linear-scan: Get cycle breaking in resolve pass to work by allocating a spare spill slot for this purpose 2009-07-05 21:32:23 -05:00
Slava Pestov 0a634ec4ec Fix compiler.cfg.linear-scan.resolve test failure 2009-07-04 16:30:16 -05:00
Slava Pestov 3d7addbbf5 compiler.cfg.value-numbering.rewrite: disable ##compare optimizations for now 2009-07-04 03:26:37 -05:00
Slava Pestov 577a3cb968 compiler.cfg.value-numbering.rewrite: fix ##compare-imm rewrite rule 2009-07-04 02:50:50 -05:00
Slava Pestov c431e0db99 compiler.cfg.linear-scan.resolve: More fixes 2009-07-04 00:45:06 -05:00
Slava Pestov ab5fdc70ac compiler.cfg.linear-scan: redo resolve pass to fix a correctness issue 2009-07-03 23:38:52 -05:00
Slava Pestov 12cbbbd6ad compiler.cfg: clean up GC check generation to use spill-slot data type 2009-07-03 23:11:23 -05:00
Slava Pestov 3d92117ef1 compiler.cfg.linear-scan: assign spill slots to vregs globally, so that resolve pass never has to perform a memory->memory transfer 2009-07-03 22:51:40 -05:00
Slava Pestov e21cf72927 compiler.tree.dead-code: methods on flushable generics should be flushable 2009-07-03 21:31:26 -05:00
Doug Coleman 2ef03895ee convert ##compare with immediates to ##compare-imm 2009-07-03 19:19:33 -05:00
Slava Pestov a406a5aa23 compiler.cfg.predecessors: delete dead predecessors from phi nodes 2009-07-03 18:45:03 -05:00
Doug Coleman 779401d938 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-02 19:04:50 -05:00
Doug Coleman 9ce34bf972 add constant folding for integer ops, refactor some rewrites 2009-07-02 19:03:21 -05:00
Slava Pestov 1da42c2111 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-02 18:36:49 -05:00
Doug Coleman d69c5ae260 Revert "fix a unit test so it's sure to overflow 64bit machines"
This reverts commit 88a545a215.
2009-07-02 18:18:50 -05:00
Doug Coleman 88a545a215 fix a unit test so it's sure to overflow 64bit machines 2009-07-02 18:05:55 -05:00
Doug Coleman 29dc6fc837 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-02 18:01:58 -05:00
Doug Coleman da9883b762 unit test to make sure adds are not optimized incorrectly 2009-07-02 18:01:00 -05:00
Doug Coleman f4d3daea7d fix bug in rewriting #add -- wasn't checking small-enough?, and change negative adds to subtractions/negative subtractions to adds 2009-07-02 17:55:35 -05:00
Slava Pestov 086ebcdda4 half-floats: Add some more unit tests 2009-07-02 17:52:53 -05:00
Slava Pestov fc029299d8 compiler.cfg.liveness: update for new ##phi node representation 2009-07-02 17:28:02 -05:00
Slava Pestov 2a63722c91 compiler.cfg: change representation of ##phi nodes. The input slot of ##phi nodes is now an assoc mapping predecessors to values, rather than a sequence of values. This ensures that optimization which delete predecessors can be implemented 2009-07-02 17:10:50 -05:00
Doug Coleman 89f33a1e45 rewrite rules for add/sub/mul/and/or/xor-imm, rewrite load-immediate/add to be add-imm 2009-07-02 11:35:31 -05:00
Doug Coleman fe3ab1a0ac simplify sub and sub-imm 2009-07-02 11:33:15 -05:00
Doug Coleman c3f190daff add a utility word vreg>constant 2009-07-02 11:32:23 -05:00
Slava Pestov 9605ffc0dc compiler.cfg.dce: now performs three passes over the CFG to fix a phase ordering issue 2009-07-02 03:17:19 -05:00
Slava Pestov 49250ea56b compiler.cfg.dce: minor renamings 2009-07-02 02:41:10 -05:00
Daniel Ehrenberg d9d665480f Merge branch 'master' of git://factorcode.org/git/factor 2009-07-02 02:31:06 -05:00
Daniel Ehrenberg f07100739b Dead code elimination eliminates some dead allocations 2009-07-02 02:30:46 -05:00
Slava Pestov 8364f1146c compiler.cfg.optimizer: enable branch folding 2009-07-02 01:05:59 -05:00
Slava Pestov 04508f2ece compiler.cfg: bug fixes in GC check insertion and fixnum intrinsics 2009-07-02 00:51:06 -05:00
Slava Pestov ca0b05cd1d compiler.cfg.linear-scan: fix spilling 2009-07-01 22:37:27 -05:00
Slava Pestov 2b5df8c298 compiler.tree.optimizer: Remove redundant call to compute-def-use 2009-07-01 17:41:20 -05:00
Slava Pestov 14bce3b400 compiler.cfg.linear-scan: debugging spilling and resolve pass 2009-07-01 17:41:07 -05:00
Slava Pestov 720ad7cfa7 compiler.cfg.stack-analysis: fix unit tests for useless-blocks renaming and ##no-tco instruction 2009-06-30 23:17:33 -05:00
Slava Pestov 0963e6b73a Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 23:07:36 -05:00
Slava Pestov 4983091344 compiler.cfg.optimizer: disable branch folding for now 2009-06-30 23:07:27 -05:00
Slava Pestov 0837732c10 compiler.cfg.builder: emit less crap after a #terminate node 2009-06-30 23:03:25 -05:00
Doug Coleman b82bea4004 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 23:02:04 -05:00
Doug Coleman ccd847083e optimize fixnum*fast and fixnum-shift-fast 2009-06-30 23:01:44 -05:00
Doug Coleman 0ad81de3b6 combine add-imm instructions into a single add 2009-06-30 22:59:53 -05:00
Slava Pestov cdd95472c7 compiler.cfg.branch-folding: fold away branches where both inputs are the same register. This results in 'push' being compiled slightly better 2009-06-30 22:43:32 -05:00
Slava Pestov 19036c5105 Fix possible infinite loop in skip-empty-blocks and remove redundant test in compiler.cfg.useless-conditionals 2009-06-30 22:43:02 -05:00
Slava Pestov 139bb68f8e Change branch splitting around a bit, rename useless-blocks to useless-conditionals and rewrite it 2009-06-30 22:11:15 -05:00
Slava Pestov 752aebf89a Fix conflict 2009-06-30 21:37:49 -05:00
Slava Pestov fa4f710095 compiler.cfg Remove height tracking for ##call instructions, wire in ##no-tco instruction 2009-06-30 21:21:46 -05:00
Slava Pestov 9bcdf463a1 compiler.cfg.tco: fix tail call optimization for ##fixnum-mul 2009-06-30 21:08:08 -05:00
Slava Pestov 46a3608e3a compiler.cfg.builder: fix stack effect 2009-06-30 21:07:55 -05:00
Slava Pestov 189043eae7 compiler.cfg.linear-scan.assignment: insert-copy did the wrong thing if the second interval had been split. Fixes compilation of 'trilerp' 2009-06-30 21:07:39 -05:00
Slava Pestov f6b537f4c6 Fix conflict 2009-06-30 20:16:09 -05:00
Slava Pestov 89fbc8efb4 compiler.cfg.tco: Tail call optimization moved out of compiler.cfg.builder into its own pass 2009-06-30 20:13:35 -05:00
Doug Coleman f824845433 remove duplicate using 2009-06-30 18:48:52 -05:00
Doug Coleman 116d55feac Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 18:48:10 -05:00
Doug Coleman 97ceba5000 make commutative operations with immediates output the same IR 2009-06-30 18:47:24 -05:00
Slava Pestov 79a60c8bc5 compiler.cfg.stack-analysis: fix tests 2009-06-30 18:22:54 -05:00
Slava Pestov dc96968b99 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 18:12:00 -05:00
Slava Pestov 6efe62a49a compiler.cfg.stack-analysis: enable global optimization 2009-06-30 18:11:45 -05:00
Slava Pestov 87aabfc053 compiler.cfg.linear-scan.assignment: get check-assignment? to work with coalescing 2009-06-30 18:10:53 -05:00
Doug Coleman eb2d574e79 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 16:45:57 -05:00
Doug Coleman c5ffb08f5b fix bug where traversal order was lost 2009-06-30 16:44:14 -05:00
Slava Pestov ecf44c98bc compiler.cfg.linear-scan: compute-free-pos was broken in the case where more than one inactive interval had the same physical register assigned 2009-06-30 16:07:58 -05:00
Doug Coleman d888d13efe spill to spill-temp, not to virtual spill addresses 2009-06-30 15:40:13 -05:00
Doug Coleman 228716a94e Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 15:32:11 -05:00
Doug Coleman 5ae6eb089d add branch splitting pass to compiler.cfg 2009-06-30 15:31:48 -05:00
Slava Pestov 7fc239d638 compiler.cfg.stack-analysis: fix typos in unit tests 2009-06-29 16:37:40 -05:00
Slava Pestov c2d4c42252 Fix conflict 2009-06-29 01:59:53 -05:00
Slava Pestov 5754bf0028 compiler.cfg.linear-scan.resolve: remove redundant vocabs from using list 2009-06-28 22:58:35 -05:00
Slava Pestov b63133f9f6 compiler.cfg.stack-analysis: fix another corner case with ##peek insertion, and fix changed-loc merging 2009-06-28 22:52:28 -05:00
Doug Coleman 2ed3edeb41 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-28 16:43:45 -05:00
Doug Coleman b2d3b588f0 fix bug in linear-scan.resolve by rewriting entire algorithm 2009-06-28 16:43:17 -05:00
Slava Pestov 9ab1bd1edb Merge branch 'master' of git://factorcode.org/git/factor 2009-06-27 17:33:00 -05:00
Slava Pestov 12df05da5d compiler.cfg.stack-analysis: Fix case where both an ##inc-d/r and a ##peek get inserted 2009-06-27 17:32:37 -05:00
Doug Coleman 750d8c0a9a Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	basis/compiler/cfg/linear-scan/resolve/resolve-tests.factor
2009-06-26 21:51:08 -05:00
Doug Coleman c7a04858ee add spill-temp to compiler.cfg.instructions, implement parallel register assignment in linear-scan.resolve 2009-06-26 21:48:21 -05:00
Slava Pestov 6cb4966075 Fix bootstrap and unit test 2009-06-26 17:44:33 -05:00
Slava Pestov 3b8733de01 Redesign compiler.cfg.stack-analysis to make compiler.cfg.height redundant, and to fix some problems 2009-06-26 17:29:55 -05:00
Slava Pestov 80f7594f75 compiler.cfg.stack-analysis: split up into three vocabs 2009-06-24 13:54:43 -05:00
Slava Pestov be1dcc04c2 compiler.cfg.linear-scan: fix unit tests 2009-06-24 13:54:12 -05:00
Slava Pestov fff4a1dbbd compiler.cfg.linear-scan: fix coalescing to take lifetime holes into account 2009-06-23 21:32:51 -05:00
Slava Pestov 478e5cc95f compiler.cfg.linear-scan: Debugging resolve pass 2009-06-22 00:24:51 -05:00
Slava Pestov 02e2c0bcf7 compiler.cfg.linear-scan.resolve: unit tests 2009-06-21 00:23:34 -05:00
Slava Pestov 39dba00279 compiler.cfg.linear-scan: Working on resolve pass 2009-06-21 00:20:01 -05:00
Slava Pestov 886967256e compiler.cfg.linear-scan.assignment: correctly compute live registers at GC check points 2009-06-20 15:33:12 -05:00
Slava Pestov 82730af521 compiler.cfg.linear-scan: untangle add-active/delete-active/add-handled calls in spilling, replace 'sort-values last' with 'alist-max' in compiler.utilities 2009-06-19 18:28:30 -05:00
Slava Pestov 6ff7e2cba7 compiler.cfg.linear-scan: Fix a couple of bugs 2009-06-19 03:42:42 -05:00
Slava Pestov e1e24c4802 compiler.cfg.linear-scan: Further progress on inactive interval handling 2009-06-17 15:27:20 -05:00
Slava Pestov 9eec019e9b Remove initial-quot feature 2009-06-15 13:07:15 -05:00
Slava Pestov 14b4b79a37 compiler.cfg.linear-scan.resolve: fix compile error 2009-06-14 17:00:52 -05:00
Slava Pestov 48c31d441c Add some failing unit tests exposing bugs in initial-quot: implementation 2009-06-13 18:34:27 -05:00
Slava Pestov 941d7a1eeb Various linear scan fixes
insert spill before reload to fix x86-32 regression
inactive splitting: if all inactive intervals' registers are in use, don't fail
fix stack analysis tests
2009-06-13 17:35:40 -05:00
Slava Pestov d09ece8152 Split up compiler.cfg.linear-scan.allocation into a number of sub-vocabularies; start work on compiler.cfg.linear-scan.resolve; start work on inactive interval splitting 2009-06-11 17:55:14 -05:00
Slava Pestov e4bce2615f compiler.cfg: add a declaration to fix tools.deploy.test.11 2009-06-09 03:36:16 -05:00
Slava Pestov a61a992bfd cpu.x86.assembler: IMUL2 instruction was busted for immediate operands
When given a register and an immediate, it would generate imul imm,dst,dst however the 64-bit prefix was generated wrong and if dst was an extended register only the first operand would be an extended register. To fix this, change IMUL2 to not work on immediates anymore, and added a new IMUL3 that takes a destination register, source register, and immediate. Also, change compiler.cfg.two-operand to not two-operandize %mul-imm, since this isn't needed anymore.
This fixes the sporadic benchmark.tuple-arrays crash on 64-bit machines.
2009-06-08 21:15:52 -05:00
Slava Pestov 02fafdbec1 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-07 21:46:41 -05:00
Slava Pestov 0d265fe016 Remove %dispatch-label since its tehe same on all platforms; fix %gc on PowerPC 2009-06-07 21:46:28 -05:00
Slava Pestov e1d13d8ee7 Linear scan: implement live range intersection 2009-06-06 01:04:12 -05:00
Slava Pestov d830838ffa compiler.cfg.optimizer: disable CFG checker by default 2009-06-05 18:07:22 -05:00
Slava Pestov ad5ef2a3cc Linear scan: correctly compute live spill slots 2009-06-05 18:06:47 -05:00
Slava Pestov 26152bd83c compiler: more informative trace-compilation 2009-06-05 17:32:37 -05:00
Slava Pestov 2b49600f42 compiler.cfg.checker: run if a variable is set 2009-06-05 17:32:12 -05:00
Slava Pestov ee67b7c9a8 compiler.cfg.linear-scan: re-do interval splitting to operate on live ranges; add inactive set processing 2009-06-04 18:53:02 -05:00
Slava Pestov fd710385e5 cpu.x86: fix small register intrinsics on x86-64 2009-06-03 03:22:46 -05:00
Slava Pestov 9096acea6f Linear scan: build live ranges 2009-06-03 03:22:27 -05:00
Slava Pestov c6326b0177 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-02 18:30:25 -05:00
Slava Pestov 7aca076408 GC checks now save and restore registers 2009-06-02 18:23:47 -05:00
Doug Coleman 086bf4c003 fix load error 2009-06-01 09:34:28 -05:00
Slava Pestov b52bdf60e4 Fix for recent word renaming 2009-06-01 03:19:35 -05:00
Slava Pestov 3de85158de Merge branch 'master' into global_optimization 2009-06-01 03:12:32 -05:00
Slava Pestov 0654e8fc51 Remove obsolete optimization 2009-06-01 03:05:49 -05:00
Slava Pestov a07279bf6d Fix compiler errors 2009-06-01 03:00:10 -05:00
Slava Pestov fc9e9a0ab1 Code cleanup 2009-06-01 02:32:42 -05:00
Slava Pestov 096803e58f Redo compiler.codegen.fixup and get %dispatch to work 2009-06-01 02:32:36 -05:00
Slava Pestov 64114947d2 Various improvements aimed at getting local optimization regressions fixed:
- Rename _gc to ##gc
- Absolute labels are now supported
- Generate _dispatch-label
2009-05-31 23:28:08 -05:00
Slava Pestov 6ac52761c6 Fix loop handling in stack-analysis 2009-05-31 19:04:26 -05:00
Slava Pestov 0375ce6bb4 Fix scoping issue in compiler.cfg.linear-scan.assignment 2009-05-31 18:21:23 -05:00
Slava Pestov fd70adf39e Rename _gc to ##gc 2009-05-31 18:21:11 -05:00
Slava Pestov 57d9d9f961 Split off local-optimization combinator into compiler.cfg.local, factor out CFG -> MR into compiler.cfg.mr, split off GC check insertion into a new compiler.cfg.gc-checks pass 2009-05-31 12:20:46 -05:00
Slava Pestov 2ea8212968 Start cleaning up stack analysis 2009-05-30 13:22:30 -05:00
Slava Pestov 968a9bb666 Various codegen improvements:
- new-insn word to construct instructions
- cache RPO in the CFG
- re-organize low-level optimizer so that MR is built after register allocation
- register allocation now stores instruction numbers in the instructions themselves
- split defs-vregs into defs-vregs and temp-vregs
2009-05-29 13:11:34 -05:00
Slava Pestov 5a5afcbfaa On second thought, linearization will be done after SSA destruction so live-in is accurate 2009-05-29 05:45:40 -05:00
Slava Pestov fbefd02bfb Put GC checks in the right place when linearizing, and generate _dispatch-labels 2009-05-29 05:36:04 -05:00
Slava Pestov 40949800bf Fixing various bugs; alias analysis wasn't handling ##phi nodes, stack analysis incorrectly handled height-changing back edges and ##fixnum-*, clean up ##dispatch generation 2009-05-29 01:39:14 -05:00
Slava Pestov cef9ac778b compiler.cfg.alias-analysis: ##peek needs to set alias class of output value 2009-05-28 18:19:01 -05:00
Slava Pestov 6b81b3e055 compiler.cfg.liveness: correct handling of phi nodes 2009-05-28 17:54:27 -05:00
Slava Pestov 4c05bc4f10 Test updates 2009-05-28 02:50:07 -05:00
Slava Pestov 9987f272b0 CFG checker now checks consistency of successors and predecessors lists; fix long-standing bug in useless-blocks optimization 2009-05-28 02:49:51 -05:00
Slava Pestov 4292033da6 Fix alias analysis 2009-05-28 02:48:58 -05:00
Slava Pestov 1fc830a99e Add a with-scope so that optimize-tree doesn't pollute namespace 2009-05-27 18:58:54 -05:00
Slava Pestov 64da54234d Fixing local optimizations 2009-05-27 18:58:41 -05:00
Slava Pestov fe44ce2821 Better CFG checker 2009-05-27 18:58:14 -05:00
Slava Pestov dd8152f7bb Add phi elimination pass 2009-05-27 18:58:01 -05:00
Slava Pestov 3954c3fdc3 Add a new ##allocation union to remove some code duplication 2009-05-27 18:55:49 -05:00
Slava Pestov a29317df5f Remove old local DCE pass 2009-05-27 17:55:15 -05:00
Slava Pestov 1242a3a411 New local-optimization combinator removes some boilerplate 2009-05-26 19:56:56 -05:00
Slava Pestov 25805f9bfe Refactoring low-level optimizer to support stack analysis pass 2009-05-26 19:31:19 -05:00
Slava Pestov 957bc53d4b Move maybe-set-at to assocs 2009-05-26 18:45:37 -05:00
Slava Pestov f6fab1b035 Fix another bug in stack-analysis 2009-05-26 03:42:39 -05:00
Slava Pestov 75d1f6dfda compiler.cfg.stack-analysis: make it pass more tests 2009-05-26 02:59:14 -05:00
Slava Pestov 44437cc891 compiler.cfg.dce: new global dead code elimination pass 2009-05-26 02:58:57 -05:00
Slava Pestov 015b7afe93 compiler.cfg.checker: new check-rpo word 2009-05-26 02:58:40 -05:00
Slava Pestov 1c45d0e81b compiler.cfg.stack-analysis: progress 2009-05-25 19:18:13 -05:00
Slava Pestov 5d50f4eb5b compiler.cfg.checker: new vocabulary for checking CFG invariants 2009-05-25 19:16:58 -05:00
Slava Pestov 531580ed30 compiler.cfg.builder: don't make basic blocks after terminating calls 2009-05-25 19:16:36 -05:00
Doug Coleman 8da9d0f203 rename peek -> last and update all usages 2009-05-25 16:38:33 -05:00
Doug Coleman 34e1d60578 add a clamp word to math.order, use clamp word throughout libraries 2009-05-24 21:35:50 -05:00
Slava Pestov ffd0db30bf Merge branch 'master' into global_optimization 2009-05-23 15:55:04 -05:00
Slava Pestov c2499cdd55 stack-checker: fix case where invalid code could infer 2009-05-23 15:50:35 -05:00
Slava Pestov f28439329c compiler.cfg.stack-analysis: change how inc-d/inc-r work 2009-05-23 15:47:08 -05:00
Slava Pestov 8478881522 Merge branch 'master' into global_optimization 2009-05-23 01:03:24 -05:00
Joe Groff 483c936eb3 get rid of useless test 2009-05-21 20:56:57 -05:00
Slava Pestov b42bed7e77 CFG optimizer work in progress - adding phi nodes 2009-05-21 16:49:28 -05:00
Slava Pestov 873bb49849 Working on global optimizations 2009-05-19 17:28:13 -05:00
Slava Pestov ba04d5af1e Update documentation for stricter vocabulary search path semantics 2009-05-16 00:29:21 -05:00
Slava Pestov 344f3668e4 Fix escape analysis bug reported by Doug 2009-05-15 17:18:38 -05:00
Slava Pestov d7db5edadc Cleaning up USING: lists for new strict semantics 2009-05-14 16:54:16 -05:00
Slava Pestov 302d829ea9 Fix compiler breakage if a GENERIC# has an incorrect stack effect declaration 2009-05-12 21:23:52 -05:00
Slava Pestov 05146c6907 Remove compiled slot from quotations since its not needed 2009-05-12 03:09:15 -05:00
Slava Pestov 70deacb900 Fix unit tests and load errors for slip removal 2009-05-10 17:03:41 -05:00
Slava Pestov dfb7514a02 Removing slip usage from basis 2009-05-10 15:28:22 -05:00
Slava Pestov 9b419aa0b1 Count megamorphic cache hits 2009-05-07 14:26:08 -05:00
Slava Pestov e55f0d17e5 compiler.tree.modular-arithmetic: convert >integer >fixnum into >fixnum 2009-05-07 12:54:23 -05:00
Slava Pestov 3c19ec1cbb Fix overly-eager strength reduction for mod, and add a type function for >integer (reported by Joe Groff) 2009-05-07 12:32:06 -05:00
Slava Pestov d3b85c14c9 Working on inline caching for tail call sites 2009-05-06 19:22:22 -05:00
Slava Pestov 478d29a175 Better separation of concerns: cpu.{x86,ppc}.assembler no longer depends on compiler.codegen.fixup and cpu.architecture. Rename rt-xt-direct to rt-xt-pic to better explain its purpose 2009-05-06 16:14:53 -05:00
Slava Pestov 0ca1d013f8 Add new RC_ABSOLUTE_PPC_2 relocation type 2009-05-05 20:56:23 -05:00
Slava Pestov c5d3bbd5b6 Fix bool type; its actually 1 byte not 4 in structs. Bug reported by jedahu 2009-05-05 18:37:40 -05:00
Slava Pestov 259586e89e compiler.constants: update compiled-header-size 2009-05-05 15:06:05 -05:00
Slava Pestov 1e2561f863 Make walker work better with call( and breakpoints which are nested inside combinators 2009-05-05 09:12:32 -05:00
Slava Pestov c68e05d3d8 Fix some test failures 2009-05-04 09:44:26 -05:00
Slava Pestov 4d438a3edd Remove cruddy string encoding/decoding code from VM 2009-05-02 13:45:38 -05:00
Slava Pestov 2c78b77f36 Fix infinite loop when compiling a word containing a tuple literal with circular structure in it. This was triggered by call( inline caching in core-foundation.fsevents on Mac OS X 2009-05-01 09:36:53 -05:00
Slava Pestov 7495ad96cb Fix typo in redefine14 test 2009-05-01 08:29:04 -05:00
Slava Pestov a25577d6df Some new compiler tests 2009-05-01 06:48:33 -05:00
Slava Pestov 6f03366e2b Rename enable/disable-compiler to enable/disable-optimizer, and add with-optimizer and without-optimizer combinators 2009-05-01 05:52:05 -05:00
Slava Pestov 23b5888da6 Fix some test failures and add an unportable tag 2009-04-30 22:56:15 -05:00
Slava Pestov e5cdb7ac2d call( fast-path now supports curry and compose 2009-04-30 21:08:29 -05:00
Slava Pestov a79e3eb687 Passing an invalid parameter to 'declare' doesn't break the compiler anymore 2009-04-30 20:40:47 -05:00
Slava Pestov 5fb5c19d61 Machine code is now stored in a byte array instead of an array for add_code_block() 2009-04-30 04:34:35 -05:00
Slava Pestov 515c619202 Non-optimizing compiler now open-codes megamorphic dispatch fast path 2009-04-30 03:37:07 -05:00
Slava Pestov 964fbd0a24 Fix test failures from ratio/complex built-in removal 2009-04-30 00:38:55 -05:00
Slava Pestov 663db67b23 compiler.tree.debugger: wasn't counting intrinsics properly when computing report 2009-04-30 00:27:51 -05:00
Slava Pestov fc4894fbdf Replace ratio and complex built-in types with tuples defined in the library. This frees up two lo-tags, so move array and quotation over to these tags and update compiler for new tags 2009-04-30 00:27:35 -05:00
Slava Pestov 3bbfc57de3 bootstrap.image: remove some duplication from emit-object callers 2009-04-29 23:35:02 -05:00
Slava Pestov bd186b6320 Eliminate 3 instructions from PIC fast path 2009-04-29 21:32:05 -05:00
Slava Pestov deaea55d85 compiler: don't wrap non-inference errors in compile errors, since they indicate compiler bugs; just rethrow them. Add unit test for a PIC regression 2009-04-29 19:39:04 -05:00
Slava Pestov 7f766ab355 Update compiler tests for tag number changes 2009-04-28 21:43:30 -05:00
Slava Pestov c15a4c1c5a Add new relocation type for call sites which may be replaced by ICs 2009-04-28 17:53:14 -05:00
Slava Pestov 5f6c074edd Split up types.c/h into smaller files, remove optimized slot from F_WORD struct 2009-04-28 17:26:11 -05:00
Slava Pestov 5ff2c2e2bf Don't compile predicate engines since there's no gain 2009-04-27 14:10:12 -05:00
Slava Pestov bf0e8606a8 Merge branch 'master' into inline_caching 2009-04-26 21:26:39 -05:00
Slava Pestov dac5203e81 compiler.tree.builder: Fix scoping of a variable by hints vocab 2009-04-26 16:04:44 -05:00
Slava Pestov f94a44f3fd Merge branch 'master' into inline_caching 2009-04-26 09:22:27 -05:00
Slava Pestov 7e84daf0f1 Move (execute) to kernel.private 2009-04-26 02:42:37 -05:00
Doug Coleman 28cacc8d61 fix some compiler tests 2009-04-26 02:23:33 -05:00
erg acd312ab19 fix IN: for compiler tests 2009-04-26 00:51:47 -05:00
Slava Pestov 8ea3db9eef Get rid of a 'rot' 2009-04-25 22:35:30 -05:00
Slava Pestov 7aa65b5b5f Fixing new method dispatch implementation 2009-04-25 19:41:27 -05:00
Slava Pestov d03b1eef01 Compile methods of generic words since the generic word itself doesn't get compiled 2009-04-24 20:54:30 -05:00
Slava Pestov 3dc9fdf9db Fleshed out new dispatch code 2009-04-24 20:43:01 -05:00
Slava Pestov 5649cc7a0a Compiler warnings are no more 2009-04-23 22:17:25 -05:00
Slava Pestov c2fe2a4fea Improve stack checker documentation 2009-04-23 03:48:32 -05:00
Slava Pestov 1dd3ed519f Revert part of an earlier ccompiler.tree.checker hange to fix smalltalk.eval regression 2009-04-22 21:03:53 -05:00
Doug Coleman 7f983f12d4 fix help lint failures, fix example in words 2009-04-22 12:26:28 -05:00