Commit Graph

38 Commits (7f3efb3b5d8d6ddc18fb25dcd073072eee55977c)

Author SHA1 Message Date
Slava Pestov 4a2823b2eb compiler: tweak generated code 2009-09-04 03:01:18 -05:00
Slava Pestov 85a2bfab6c compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax 2009-09-02 06:22:37 -05:00
Slava Pestov 9595be4bf9 %box-displaced-alien: fix clobberage found by Doug 2009-08-30 05:11:08 -05:00
Slava Pestov f662e6403a compiler: new inline intrinsic for <displaced-alien> where the inputs have known types; value numbering now eliminates unnecessary allocation of displaced aliens if the result is immediately unboxed again 2009-08-27 00:06:19 -05:00
Doug Coleman 3f3d57032b Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places, minor refactoring 2009-08-13 19:21:44 -05:00
Slava Pestov 4b7ba38aab compiler.cfg: virtual registers are integers now, and representations are stored off to the side. Fix bug in representation selection that would manifest if a value was used as a float and a fixnum in different branches; cannot globally unbox float in this case 2009-08-08 04:02:18 -05:00
Slava Pestov 725280d424 Split off the notion of a register representation from a register class 2009-08-07 17:44:50 -05:00
Slava Pestov dac7edd2ab compiler.cfg.def-use: remove compute-def-use word, passes have to call compute-defs or compute-uses now; compiler.cfg.ssa.liveness: don't compute dominance and def-use first since destruction does already 2009-08-02 19:12:32 -05:00
Daniel Ehrenberg d349cc565a def-use puts phi uses in respective predecessors 2009-08-02 18:04:07 -04:00
Slava Pestov d913d7331f 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 1319d8e549 compiler.cfg.def-use: build def-use chains 2009-07-26 21:10:14 -05:00
Slava Pestov 31491df5f1 Removed unused code from compiler.cfg.def-use 2009-07-22 06:05:33 -05:00
Slava Pestov 25c42d04fd compiler.cfg: Fix conflicts after merging local optimization refactoring into DCN branch 2009-07-22 03:17:53 -05:00
Slava Pestov 21a012e3d7 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 fdef772d67 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 e76dce8aff 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 90daf6d03d 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
Slava Pestov 6d04bf9c4a Linear scan: build live ranges 2009-06-03 03:22:27 -05:00
Slava Pestov 2d231f066a GC checks now save and restore registers 2009-06-02 18:23:47 -05:00
Slava Pestov 1a52414bb1 Rename _gc to ##gc 2009-05-31 18:21:11 -05:00
Slava Pestov 692b479302 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 e04df76f60 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 743550f19c Put GC checks in the right place when linearizing, and generate _dispatch-labels 2009-05-29 05:36:04 -05:00
Slava Pestov 6af61656f3 CFG optimizer work in progress - adding phi nodes 2009-05-21 16:49:28 -05:00
Slava Pestov e58fcd485c Working on global optimizations 2009-05-19 17:28:13 -05:00
Slava Pestov 6b25e99470 Add summary for heaps more vocabs 2009-02-16 21:05:13 -06:00
Slava Pestov e256846acd Tweak string representation; high bit indicates if character has high bits in aux vector. Avoids memory access in common case. Split set-string-nth into two primitives; set-string-nth-fast is open-coded by optimizing compiler. 13% improvement on reverse-complement 2008-12-05 06:38:51 -06:00
Slava Pestov e7f4563374 fixnum* intrinsic for x86 2008-11-30 07:26:49 -06:00
Slava Pestov f44506089d More work on overflow instructions: don't need temp register anymore, add -tail variants which don't need stack frame 2008-11-28 06:36:30 -06:00
Slava Pestov 5634becda1 ##fixnum-add, ##fixnum-sub instructions open-code overflow check 2008-11-28 05:33:58 -06:00
Slava Pestov ab689c098b Clean up direct literal code and make a first attempt at PowerPC support 2008-11-24 08:16:14 -06:00
Slava Pestov 53cd75b06c Add string-nth intrinsic 2008-11-06 01:11:28 -06:00
Slava Pestov d11a779fdd RicE 2008-11-02 03:58:32 -06:00
Slava Pestov 492a15e345 Move insn class to compiler.cfg.instructions 2008-10-24 09:17:06 -05:00
Slava Pestov 1b06ab1b39 Fixing various bugs 2008-10-21 23:17:32 -05:00
Slava Pestov 94a2bfa2ea Working on comparison operations, clearing out remaining dead wood 2008-10-21 03:20:48 -05:00
Slava Pestov 37cf7d9a9c Add SSA comparison instructions, fix various problems 2008-10-20 05:55:20 -05:00
Slava Pestov f092622fac CFG IR is now pure SSA 2008-10-20 01:56:28 -05:00