Doug Coleman
b5fd809209
memq? -> member-eq?, sorted-memq? -> sorted-member-eq?
2009-10-28 15:02:00 -05:00
Slava Pestov
66f500bdd7
Fix the build
2009-09-09 13:44:54 -05:00
Joe Groff
025a5b7b15
split unordered and ordered float comparison intrinsics in compiler; generate only unordered comparisons for now
2009-09-08 17:04:26 -05:00
Slava Pestov
775b9af2f7
compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax
2009-09-02 06:22:37 -05:00
Slava Pestov
bbd4e4af3e
compiler.cfg: Minor optimization. Instructions can now only ever produce a single value; this eliminates 1array constructions and some iterations
2009-07-28 12:29:07 -05:00
Slava Pestov
c2c3d64d6d
compiler.cfg.stacks: now performs online local DCN
2009-07-23 20:54:38 -05:00
Slava Pestov
daf446f842
compiler.cfg.checker: eliminate dead code before checking MR
2009-07-22 19:17:57 -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
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
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
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
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
2b49600f42
compiler.cfg.checker: run if a variable is set
2009-06-05 17:32:12 -05:00
Doug Coleman
086bf4c003
fix load error
2009-06-01 09:34:28 -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
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
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
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
fe44ce2821
Better CFG checker
2009-05-27 18:58:14 -05:00
Slava Pestov
25805f9bfe
Refactoring low-level optimizer to support stack analysis pass
2009-05-26 19:31:19 -05:00
Slava Pestov
015b7afe93
compiler.cfg.checker: new check-rpo word
2009-05-26 02:58:40 -05:00
Slava Pestov
5d50f4eb5b
compiler.cfg.checker: new vocabulary for checking CFG invariants
2009-05-25 19:16:58 -05:00