Commit Graph

85 Commits (a7cd03b45d264656a426f9ca682b6ab32431ed1e)

Author SHA1 Message Date
Björn Lindqvist 6097e80178 compiler.cfg.*: fixing tests so they work on 32bit archs too 2015-04-30 04:49:48 +02:00
Björn Lindqvist 6215561ad4 compiler.cfg.*: more docs and removing a test that isn't relevant anymore 2015-04-29 09:31:59 -07:00
Björn Lindqvist 135d7f5ff3 compiler.cfg.*: more unit tests 2015-04-29 09:31:59 -07:00
Björn Lindqvist 997f95196c compiler.cfg.*: lots of new unit tests 2015-04-29 09:31:58 -07:00
Björn Lindqvist 167d1598b3 compiler.cfg.linear-scan.allocation.*: lots more docs and some word simplifications 2015-04-29 09:31:58 -07:00
Björn Lindqvist 16f6025979 compiler.cfg.linear-scan.allocation.spilling: docs and tests for this vocab 2015-04-29 09:31:58 -07:00
Björn Lindqvist 5cd44dc07c compiler.cfg.linear-scan.allocation.state: set spill-area-size/align when the cfg tuple is created 2015-04-29 09:31:57 -07:00
Björn Lindqvist 4cda101717 compiler.cfg.linear-scan.allocation.state: more docs and tests for vocab 2015-04-29 09:31:57 -07:00
Doug Coleman ceebc1d6c1 compiler: Fix help-lint for @bjourne's recent awesome docs. 2015-01-17 14:02:59 -08:00
Björn Lindqvist 5782855343 compiler.cfg.*: more docs 2014-12-31 03:37:16 +01:00
John Benediktsson 2a893a110a compiler.cfg.linear-scan.allocation.state: don't use slot.syntax. 2014-12-15 13:10:59 -08:00
Björn Lindqvist d6c1c075ff compiler.cfg.linear-scan.allocation: using slurp-heap 2014-12-15 20:48:34 +01:00
Björn Lindqvist 84f8f26ce8 compiler.cfg.linear-scan.allocation.state: doc fixing 2014-12-15 20:44:53 +01:00
Björn Lindqvist 35d00da765 compiler.cfg.linear-scan.allocation.*: maybe a fix for #1227
The register allocator pops from the unhandled-intervals and
unhandled-sync-points heaps. If two live intervals share the same
start slot, then they can be popped in either order leading to
differently generated code. So instead use one
heap (unhandled-min-heap) and both the start and end slot as the heap
key to resolve tie-breakers
2014-12-15 20:44:53 +01:00
Björn Lindqvist 8a011c8366 compiler.cfg.*: more docs 2014-12-15 20:44:07 +01:00
Björn Lindqvist c810677b47 compiler.cfg.linear-scan.*: refactoring to simplify init-allocator and get rid of init-unhandled 2014-12-15 20:44:06 +01:00
Björn Lindqvist fab478482e compiler.cfg.linear-scan.allocation: refactoring to simplify the (allocate-registers) recursion 2014-12-15 20:44:06 +01:00
John Benediktsson c65877104e compiler: cleanup usings. 2014-12-13 16:10:21 -08:00
John Benediktsson ad9d44aa2b compiler.cfg.linear-scan.allocation.state: simplify init-unhandled. 2014-12-01 22:18:15 -08:00
Björn Lindqvist d3c91bea72 compiler.cfg.linear-scan.*: stub docs and tests 2014-11-16 06:25:54 -08:00
Björn Lindqvist 1eac4afc8b compiler.cfg.linear-scan.allocation.state: sub docs and tests 2014-11-16 06:25:53 -08:00
Doug Coleman 5f377c0849 compiler: Rename value-info, live-interval 2013-03-23 22:56:47 -07:00
Slava Pestov 07227f22f9 WIP 2012-12-31 11:03:33 -08:00
Joe Groff 2bd6de9a02 slots: pre-create the "at", "nth", and "global" slots to make deterministic the currently nondeterministic ambiguity between accessors:change-* and assocs:change-at, sequences:change-nth, and namespaces:change-global 2011-09-19 10:03:43 -07:00
Slava Pestov 94f6ac98de compiler.cfg.linear-scan: fix bad interaction between inactive intervals and sync points 2010-07-29 21:06:48 -04:00
Slava Pestov adc9db3ea8 compiler.cfg.linear-scan.allocation: fix wrong order 2010-07-19 06:46:50 -04:00
Slava Pestov b776a92546 compiler.cfg.linear-scan: fix bad interaction between split position calculation and register-clobbering instructions 2010-07-18 17:38:52 -04:00
Slava Pestov e27adb2830 compiler: re-architect low-level optimizer to allow more than one output value per instruction 2010-07-13 07:40:14 -04:00
Slava Pestov ba7cb61133 Stack allocation improvements
- New with-out-parameters combinator
- Inhibit tail call optimization in frames with local allocation, to ensure that passing a stack allocated value to the last word in the quotation works
- local allocations are now aligned properly
- spill slots are now aligned properly aligned in frames which have parameter and local allocation areas
2010-05-22 02:37:00 -04:00
Slava Pestov 5b48cd2a63 FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing 2010-05-16 03:43:23 -04:00
Slava Pestov 6d30bb8bf4 compiler.cfg.linear-scan: pointless optimizations 2010-05-14 18:37:08 -04:00
Slava Pestov eb802208d1 FFI rewrite part 4: parameter and return value unboxing redesign 2010-05-11 19:11:44 -04:00
Slava Pestov 982e704626 compiler.cfg.linear-scan: clean up clobber-insn handling 2010-05-07 18:22:35 -04:00
Slava Pestov 627295f094 Language change: tuple slot setter words with stack effect ( value object -- ) are now named FOO<< instead of (>>FOO) 2010-05-06 17:21:02 -04:00
Slava Pestov f5c5d8b44c compiler: remove flat machine representation and generate code directly from the CFG 2010-05-03 17:34:32 -04:00
Slava Pestov ffd1844d52 compiler.cfg.linear-scan: clean up spill slot assignment 2010-05-03 17:34:24 -04:00
Slava Pestov 43f269e4eb Register allocation now uses SSA properties to coalesce values with different representations 2010-05-03 17:34:20 -04:00
Slava Pestov 9b34a4a054 compiler.cfg: remove unused 'reps' slot from compiler.cfg, and re-organize things in preparation for SSA register allocation 2010-05-03 17:34:18 -04:00
Slava Pestov 43fc230c69 compiler.cfg.linear-scan: cleanups 2010-05-03 17:34:18 -04:00
Slava Pestov 95ff5ffe51 New GC checks work in progress 2010-05-03 17:34:16 -04:00
Slava Pestov 51b13ce373 compiler.cfg.linear-scan: don't insert a _reload if the register is going to be overwritten anyway 2010-05-03 17:34:14 -04:00
Slava Pestov 299b5b0f6c filter-here -> filter! 2009-10-28 00:44:05 -05:00
Slava Pestov 50f5c3d116 remq -> remove-eq, delq -> remove-eq! 2009-10-28 00:23:08 -05:00
Slava Pestov 951e3e9c83 delete-nth -> remove-nth! 2009-10-27 23:41:57 -05:00
Slava Pestov 1d872db58d compiler.cfg.linear-scan: tweak it so that register allocation does not depend on hashing order 2009-09-27 23:29:48 -05:00
Slava Pestov 705b4ab5c3 compiler.cfg.linear-scan: fix partial sync point logic in case where dst == src, and clean up spilling code 2009-09-27 19:28:20 -05:00
Slava Pestov 0db01f6d5f compiler.cfg.linear-scan now supports partial sync-points where all registers are spilled; taking advantage of this, there are new trigonometric intrinsics which yield a 2x performance boost on benchmark.struct-arrays and a 25% boost on benchmark.partial-sums 2009-08-30 04:52:01 -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 370f4c081d compiler.cfg: convert code into two-operand form before SSA destruction; SSA destruction now operates on a relaxed SSA form where multiple defs of the same vreg are allowed, but only within a single basic block. This makes linear scan's coalescing redundant, allowing it to be removed completely 2009-08-05 18:57:46 -05:00