Slava Pestov
496d59d86c
compiler.cfg.coalescing: Only run if CFG has ##phi nodes, fix interference for case where value is not used in a block and is not live-in, forgot to run liveness analysis first
2009-07-28 06:48:20 -05:00
Slava Pestov
8ac396d9e0
Add some compiler tests
2009-07-28 06:45:31 -05:00
Slava Pestov
2fe741568c
compiler.cfg.liveness: fix liveness computation in case where instruction uses a register it defines
2009-07-28 06:45:02 -05:00
Slava Pestov
3550880850
compiler.cfg.critical-edges: reset RPO
2009-07-28 01:04:13 -05:00
Slava Pestov
164e5c4eb5
Add some tests that directly generate low level IR
2009-07-27 22:29:33 -05:00
Slava Pestov
536dc1c014
compiler.cfg.coalescing: precompute live intervals, add support for instructions where output cannot equal an input, split critical edges
2009-07-27 22:29:17 -05:00
Slava Pestov
cf23ee7996
compiler.cfg.two-operand: make it work in more cases
2009-07-27 22:28:29 -05:00
Slava Pestov
064248d25b
compiler.cfg.debugger: reset vreg counters
2009-07-27 22:28:13 -05:00
Slava Pestov
85975568d9
Debugging compiler.cfg.coalescing
2009-07-27 19:24:13 -05:00
Slava Pestov
3490456e07
compiler.cfg.parallel-copy: fix algorithm
2009-07-27 16:54:47 -05:00
Slava Pestov
cef47c452a
compiler.codegen: collect instruction statistics
2009-07-27 03:58:15 -05:00
Slava Pestov
7dec8d289e
compiler.cfg.coalescing: fix shuffling bug
2009-07-27 03:58:01 -05:00
Slava Pestov
e6d05dc722
compiler.cfg.phi-elimination: no longer needed
2009-07-27 02:20:53 -05:00
Slava Pestov
83d40198a4
compiler.cfg.coalescing: more or less complete, now needs debugging
2009-07-27 02:20:45 -05:00
Slava Pestov
d7f12feb64
compiler.cfg.coalescing: more work done
2009-07-27 00:31:21 -05:00
Slava Pestov
420e28b8bd
compiler.tree.propagation.info: fix load error
2009-07-27 00:30:24 -05:00
Slava Pestov
76de5a9376
compiler.cfg.coalescing: work in progress
2009-07-26 21:11:26 -05:00
Slava Pestov
0a3a08e506
compiler.cfg.copy-prop: remove ##phi nodes where all inputs are copy-equivalent
2009-07-26 21:11:02 -05:00
Slava Pestov
99601d34fa
compiler.cfg.utilities: move value-info utilities to compiler.tree.propagation.info
2009-07-26 21:10:33 -05:00
Slava Pestov
5e39e8c11f
compiler.cfg.def-use: build def-use chains
2009-07-26 21:10:14 -05:00
Slava Pestov
6f37596113
compiler.cfg.dominance: add pre order and max pre order numbers; use them to implement dominates? check
2009-07-26 21:10:05 -05:00
Slava Pestov
3293a72580
compiler.cfg.copy-prop: work in progress
2009-07-24 19:56:21 -05:00
Slava Pestov
ce7236437f
compiler.cfg.parallel-copy: forgot to add this
2009-07-24 19:46:33 -05:00
Slava Pestov
228fcea905
compiler.cfg.phi-elimination: move some utilities from compiler.cfg.utilities here since that's the only place they get used
2009-07-24 16:45:31 -05:00
Slava Pestov
d8836f8927
compiler.cfg: Fixing test failures
2009-07-24 06:08:07 -05:00
Slava Pestov
127de28195
compiler.cfg.copy-prop: Global copy propagation
2009-07-24 05:30:46 -05:00
Slava Pestov
c49d2cc7bc
compiler.cfg.value-numbering: insert ##copy instructions for instructions whose expressions simplify. While subsequent usages are replaced with the instruction computing the simplified vreg locally, global usages may exist of the original instruction. In this case, the ##copy is not dead
2009-07-24 05:30:30 -05:00
Slava Pestov
fcd015970e
compiler.cfg.write-barrier: simplify a little bit. It doesn't need to do copy propagation, since its a separate pass now
2009-07-24 05:29:28 -05:00
Slava Pestov
f1eddf34c9
compiler.cfg: introduce less temporaries when building CFG
2009-07-24 03:37:18 -05:00
Slava Pestov
229d1c9f47
compiler.cfg.builder: fix stack effect declaration
2009-07-23 21:24:15 -05:00
Slava Pestov
c2c3d64d6d
compiler.cfg.stacks: now performs online local DCN
2009-07-23 20:54:38 -05:00
Slava Pestov
377233bd90
Add testcase for recent bug
2009-07-23 18:03:14 -05:00
Slava Pestov
2726ebe4a9
compiler.cfg.linear-scan.mapping: simplify
2009-07-23 18:03:04 -05:00
Slava Pestov
2ec433e7c0
compiler.cfg.empty-blocks: new pass to delete empty blocks, runs after phi elimination
2009-07-23 18:02:46 -05:00
Slava Pestov
67c53c85b1
compiler.cfg.branch-splitting: now that we do SSA construction we can split branches with fixnum overflow ops (which have a live-out)
2009-07-23 18:02:29 -05:00
Slava Pestov
9d2a2ecabf
compiler.cfg.intrinsics: Disable inline allocation for now
2009-07-22 21:11:06 -05:00
Slava Pestov
1651deaaa7
Fixing compiler tests
2009-07-22 21:10:50 -05:00
Slava Pestov
0632c9665c
compiler.cfg.dcn.rewrite: remove unused word
2009-07-22 19:18:12 -05:00
Slava Pestov
daf446f842
compiler.cfg.checker: eliminate dead code before checking MR
2009-07-22 19:17:57 -05:00
Slava Pestov
dcf7ce82a9
compiler.cfg.builder: Fix construction of ##return instructions from #return-recursive nodes
2009-07-22 19:17:21 -05:00
Slava Pestov
50b4179647
Merge branch 'master' into dcn
2009-07-22 06:19:44 -05:00
Slava Pestov
093a685d68
compiler.cfg.dominance: fix unit tests
2009-07-22 06:19:31 -05:00
Slava Pestov
79d32afe4b
compiler.cfg.ssa: now builds pruned SSA form
2009-07-22 06:08:04 -05:00
Slava Pestov
898ac710fa
compiler.cfg.dominance: add algorithm for computing iterated dominance frontiers
2009-07-22 06:07:51 -05:00
Slava Pestov
c355c21de6
Move liveness back to compiler.cfg.liveness, fix a corner-case where it didn't work on some forms of non-SSA code
2009-07-22 06:07:28 -05:00
Slava Pestov
a857ff3797
Removed unused code from compiler.cfg.def-use
2009-07-22 06:05:33 -05:00
Slava Pestov
7c488f2b25
Insert _loop-entry in linearization pass instead of in CFG builder, so that optimizations don't have to worry about it
2009-07-22 06:05:17 -05:00
Slava Pestov
0b78d8fd3d
Fix bootstrap
2009-07-22 03:26:27 -05:00
Slava Pestov
b6bb12eea7
compiler.cfg: Fix conflicts after merging local optimization refactoring into DCN branch
2009-07-22 03:17:53 -05:00
Slava Pestov
5d9f7b0ed2
compiler.cfg: Major restructuring -- do not compute liveness before local optimization, and instead change local optimizations to be more permissive of undefined values. Now, liveness is only computed once, after phi elimination and before register allocation. This means liveness analysis does not need to take phi nodes into account and can now use the new compiler.cfg.dataflow-analysis framework
2009-07-22 03:08:28 -05:00
Slava Pestov
670d694ab9
Merge branch 'master' into dcn
2009-07-22 02:07:08 -05:00
Slava Pestov
538a82b3bd
Merge branch 'master' of git://factorcode.org/git/factor
2009-07-22 02:06:47 -05:00
Slava Pestov
89a048c0ac
compiler.cfg.dataflow-analysis: iterative dataflow analysis framework
2009-07-22 02:06:35 -05:00
Slava Pestov
8f1e1dbf6a
compiler.cfg.dcn.global: redo using compiler.cfg.dataflow-analysis
2009-07-22 02:05:40 -05:00
Slava Pestov
1240b630e0
compiler.cfg.stack-analysis: Out with the old, in with the new
2009-07-22 00:52:25 -05:00
Slava Pestov
7198a7dc37
Merge branch 'master' of git://factorcode.org/git/factor into dcn
2009-07-22 00:14:53 -05:00
Slava Pestov
2e07fcdd6d
compiler.cfg: Fix unit tests
2009-07-21 22:25:19 -05:00
Slava Pestov
4b51ef1391
compiler.cfg.dcn: Fixing various bugs, hook up with optimizer
2009-07-21 22:24:50 -05:00
Slava Pestov
b4bd85181f
Merge branch 'master' into dcn
2009-07-21 17:51:22 -05:00
Slava Pestov
f09b2bff39
compiler.cfg.registers: minor optimization
2009-07-21 17:49:44 -05:00
Slava Pestov
9b3c593332
compiler.cfg.ssa: Cytron's SSA construction algorithm
2009-07-21 17:49:30 -05:00
Slava Pestov
6b779b45df
compiler.cfg.dcn: remove stores to stack locations above top of stack (these are never read again)
2009-07-21 17:46:09 -05:00
Slava Pestov
b3a2880f02
Merge branch 'master' into dcn
2009-07-21 03:08:42 -05:00
Slava Pestov
907e752319
compiler.cfg.dominance: fix idom computation, compute dominator tree, compute dominance frontiers, add some tests
2009-07-21 03:02:45 -05:00
Slava Pestov
b801022472
Move conjoin-at from compiler.cfg.liveness to sets
2009-07-21 03:02:06 -05:00
Slava Pestov
a05ff8530a
compiler.cfg.dcn: flesh out rewrite pass
2009-07-21 01:24:19 -05:00
Slava Pestov
7139f55271
compiler.cfg: if a block has an instruction that kills values it must be the only instruction in the block
2009-07-19 20:12:04 -05:00
Slava Pestov
7a570eae0e
compiler.cfg.dcn: Implement height tracking
2009-07-19 19:45:23 -05:00
Slava Pestov
0a4fd0d400
compiler.cfg.builder: annotate calls with height changes, once again
2009-07-18 23:08:53 -05:00
Slava Pestov
a4317c1fd1
compiler.cfg.dcn: starting work on deconcatenatization pass to replace compiler.cfg.stack-analysis
2009-07-18 22:27:42 -05:00
Slava Pestov
64f7a290f5
compiler.cfg.stack-analysis: fix outdated tests
2009-07-18 06:38:42 -05:00
Slava Pestov
749522c29c
compiler.cfg.linear-scan: fix tests
2009-07-18 06:10:01 -05:00
Slava Pestov
df874c3b50
compiler.tree.finalization: undo a change that resulted in a compile time regression
2009-07-18 03:33:24 -05:00
Slava Pestov
dfc0dcfae2
Disable fixnum>bignum and bignum>fixnum intrinsics since they're not very useful and they increase code size significantly
2009-07-18 01:07:43 -05:00
Slava Pestov
9d831baa9c
compiler.cfg.linear-scan: algorithmic optimizations
2009-07-18 00:14:39 -05:00
Slava Pestov
9e6e61edfa
compiler.cfg: Move tail call optimization to the end, compiler.tree: simplify finalization pass because of this
2009-07-17 22:57:28 -05:00
Slava Pestov
f3be295a3c
compiler.cfg.builder: remove some dead code
2009-07-17 21:52:33 -05:00
Slava Pestov
6a21202a24
Remove some unnecessary work from stack-analysis pass
2009-07-17 18:39:41 -05:00
Slava Pestov
704e417087
Merge branch 'master' of git://factorcode.org/git/factor
2009-07-17 00:03:13 -05:00
Slava Pestov
d053f88431
compiler.tree.propagation.transforms: fix shift transform
2009-07-17 00:02:57 -05:00
Slava Pestov
39a70db831
Improve code generation for shift word: add intrinsics for fixnum-shift-fast in the case where the shift count is not constant, transform 1 swap shift into a more overflow check with open-coded fast case, transform bitand into fixnum-bitand in more cases
2009-07-16 23:50:48 -05:00
Daniel Ehrenberg
d63fd6c80e
Removing two unused words in compiler.cfg.two-operand
2009-07-16 22:59:38 -05:00
Daniel Ehrenberg
7884ddb55a
Merge branch 'master' of git://factorcode.org/git/factor
2009-07-16 22:42:39 -05:00
Daniel Ehrenberg
9ae962ded6
Phi elimination doesn't have the swap problem now
2009-07-16 22:42:13 -05:00
Slava Pestov
99faf3c79f
Overflowing fixnum intrinsics now expand into several CFG nodes. This speeds up the common case since only the uncommon case is now a stack syncpoint
2009-07-16 18:29:40 -05:00
Slava Pestov
1d20276250
compiler.cfg.stack-analysis: global optimization work in progress
2009-07-16 16:43:14 -05:00
Slava Pestov
c6b3279018
compiler.cfg.block-joining: relax join heuristic
2009-07-16 05:50:44 -05:00
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
Doug Coleman
34dcd28362
add an iota
2009-06-10 09:45:48 -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
Slava Pestov
dea3987ca5
Silly workaround for performance regression
2009-04-22 00:44:06 -05:00
Slava Pestov
057f75e9a1
Refactor compiler.tree.builder to fix various regressions
2009-04-21 23:02:00 -05:00
Slava Pestov
24a22e233c
Clean up compiler vocab
2009-04-21 22:33:04 -05:00
Slava Pestov
469c9ee21d
Debugging stack checking
2009-04-21 16:09:53 -05:00
Slava Pestov
a9b4a724a4
Remove "compiled-status" word prop and simplify associated machinery
2009-04-21 03:23:11 -05:00
Slava Pestov
f38d2f91f6
Words which didn't compile cannot be run at all
2009-04-20 22:05:41 -05:00
Slava Pestov
05f3f9dcb9
Fixing unit tests for stack effect inference changes
2009-04-20 21:15:19 -05:00
Slava Pestov
8414693142
stack-checker: trust word declarations instead of recursively checking them
2009-04-20 18:44:45 -05:00
Slava Pestov
5165d811d5
Changing the stack effect of a generic word could break the compiler
2009-04-20 04:21:00 -05:00
Slava Pestov
ec49307c88
Never inline default methods, and fix inlining of methods with hints
2009-04-20 03:27:18 -05:00
Slava Pestov
e811dd6192
Reverse compiler.errors => tools.errrs dependency to reduce deploy image size
2009-04-18 03:21:31 -05:00
Slava Pestov
e9e15ffb27
Merge branch 'master' of git://factorcode.org/git/factor
2009-04-17 16:17:36 -05:00
Doug Coleman
332bde4173
use iota in a few places
2009-04-17 16:17:11 -05:00
Slava Pestov
f80c89f128
Add fatal? flag to error types; non-fatal errors are hidden by default in error list, not shown in summary
2009-04-17 16:16:12 -05:00
Slava Pestov
99a120a146
Merge branch 'smarter_error_list'
2009-04-17 15:50:36 -05:00
Slava Pestov
ce76331fd6
Fixing more unit tests
2009-04-17 15:50:03 -05:00
Doug Coleman
7a1841f59b
(( -- )) eval -> eval( -- )
2009-04-17 15:49:21 -05:00
Doug Coleman
dba4c0d589
fixing compiler errors in basis
2009-04-17 12:46:04 -05:00
Slava Pestov
0a5b076c11
Make the walker infer
2009-04-16 23:14:11 -05:00
Slava Pestov
a69d404f74
Start documenting compiler internals
2009-04-16 16:24:14 -05:00
Slava Pestov
c0874e64cc
Documentation updates
2009-04-15 18:19:35 -05:00
Slava Pestov
83b7ac3f3a
Forgetting a definition removes compile error
...
Notify definition observers with nested compilation units
2009-04-15 00:27:02 -05:00
Slava Pestov
65b27354ad
Merge branch 'master' into smarter_error_list
2009-04-14 15:07:22 -05:00
sheeple
a4e62dfdba
Fix for math.parser syntax change
2009-04-13 14:47:39 -05:00
Slava Pestov
a2cff89591
Call notify-error-observers
2009-04-13 14:40:03 -05:00
Slava Pestov
e52be965f0
Finish moving compiler.errors to basis
2009-04-13 02:50:23 -05:00
Slava Pestov
d227fcd33f
Move compiler.errors to basis
2009-04-13 02:18:41 -05:00
Slava Pestov
c4be8bd65a
Refactor error code so that error types are registered; listener prints a summary of errors
2009-04-12 16:08:46 -05:00
Slava Pestov
deae1d7bbb
Fix bootstrap
2009-04-10 04:41:26 -05:00
Slava Pestov
0a7485190b
compile-error-type => source-error-type; make test failures global
2009-04-10 03:52:12 -05:00
Slava Pestov
37e278ed02
Use [ ] [ ] map-reduce instead of unclip [ ] reduce
2009-04-06 17:50:54 -05:00
Slava Pestov
268abfcf2a
Remove method-specs in favor of M\
2009-04-06 02:59:59 -05:00
Slava Pestov
932d44cab8
Small speedup for code using H{ } clone and with-scope
2009-03-31 08:16:04 -05:00
Slava Pestov
39b53817b9
Small size reduction for deployed images
2009-03-31 08:15:27 -05:00
Doug Coleman
5460a5375e
change makefile to use .so instead of .a on unix
2009-03-28 14:41:48 -05:00
U-SLAVA-DFB8FF805\Slava
40631ec2a9
Fix alien tests on Windows; LoadLibraryEx does not like UNC paths
2009-03-28 02:37:07 -05:00
Doug Coleman
6f743b280d
hopefully last fix for alien.factor
2009-03-27 17:58:31 -05:00
sheeple
1cf5c519cc
fix ffi tests on 32bit
2009-03-27 14:39:45 -05:00
sheeple
e04efe5f5a
use .a instead of .so on unix
2009-03-27 10:41:24 -05:00
Doug Coleman
73b8bf1193
fix using list
2009-03-26 19:58:23 -05:00
Doug Coleman
63e06589bd
don't normalize-path in add-library
2009-03-26 18:56:10 -05:00
Doug Coleman
b771758ff7
fix load errors, help lint
2009-03-26 10:45:52 -05:00
Doug Coleman
6ca02e9b37
Merge branch 'master' of http://factorcode.org/git/factor into db
2009-03-25 23:01:05 -05:00
Doug Coleman
8b7fcce399
update code for usages of add-library
2009-03-25 23:00:19 -05:00
Slava Pestov
ff07c8f352
Fix compiler.tree.debugger tests
2009-03-25 22:53:03 -05:00
Doug Coleman
4b275c2861
make add-library normalize-path, use libfactor-ffi-tests for testing ffi
2009-03-25 13:05:34 -05:00
Slava Pestov
9b8dd01c0b
Fix bitrot in compiler.tree.debugger
2009-03-25 10:11:58 -05:00
Slava Pestov
9ebd9c8d01
Add unit test for regression
2009-03-22 21:42:15 -05:00
Slava Pestov
6080c6e734
Fix stack effect redefinition
2009-03-22 20:16:31 -05:00
Slava Pestov
2f4e2735ea
Fix compile errors in compiler tests so that they actually test the compiler instead of being useless
2009-03-22 17:50:53 -05:00
Slava Pestov
ea60f8ae93
Changing : foo ; parsing to SYNTAX: foo ;
2009-03-21 01:27:50 -05:00
Slava Pestov
7f4c967ace
More compact relocation layout
2009-03-19 20:02:43 -05:00
Slava Pestov
9d44b7620f
Fixing the build
2009-03-18 17:01:26 -05:00
Slava Pestov
be4fb1e7d9
Move call( and execute( to core
2009-03-16 20:11:36 -05:00
Slava Pestov
0c77a3b3be
compiler: use call( instead of assert-depth
2009-03-16 06:27:01 -05:00
Slava Pestov
38c6be94d4
Fixing some stack comments
2009-03-16 06:17:18 -05:00
Slava Pestov
bf41b187b0
Re-organize code so that with-compilation-unit can infer
...
Fix with-compilation-unit to work in deployed code
2009-03-13 19:39:32 -05:00
Slava Pestov
2f85a1a9eb
Don't report inference warnings for inline words
2009-03-12 17:30:41 -05:00
Slava Pestov
80e719ba5b
Remove stupid commented out code
2009-03-12 17:30:33 -05:00
Slava Pestov
4fdb5d0557
Fix infinite fixed point iteration bug found by littledan; generalize-counter-interval wasn't called in all the right places
2009-03-12 17:30:24 -05:00
Slava Pestov
b6f6e880bf
Make partially dispatched integer ops foldable
2009-03-11 13:57:13 -05:00
Slava Pestov
42224eb4e7
Propagation pass: add inlined node counts to total node count, so that the more we inline the less we are eager to inline more
2009-03-06 23:34:01 -06:00