Slava Pestov
1f8af8d794
compiler.cfg.linear-scan: fix typo
2010-05-17 05:50:13 -04:00
Slava Pestov
0f5d9d368a
compiler.cfg: refactor stack frame code and fix frame pointer usage in callbacks
2010-05-16 21:04:40 -04:00
Slava Pestov
35bd2bca06
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
5ac0252f04
compiler.cfg.linear-scan: pointless optimizations
2010-05-14 18:37:08 -04:00
Slava Pestov
9bb3c0d71b
compiler.cfg.alias-analysis: simplify and speed up
2010-05-14 18:37:07 -04:00
Slava Pestov
5054bb4b25
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00
Slava Pestov
7977448310
compiler.cfg.linear-scan: clean up clobber-insn handling
2010-05-07 18:22:35 -04:00
Slava Pestov
d2d466de29
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
73c83333f2
compiler: remove flat machine representation and generate code directly from the CFG
2010-05-03 17:34:32 -04:00
Slava Pestov
bb0579ecf9
Updating tests for recent compiler changes
2010-05-03 17:34:30 -04:00
Slava Pestov
e70c09c690
compiler.cfg.linear-scan.assignment: spill slot representation logic was backwards, just like Factor
2010-05-03 17:34:29 -04:00
Slava Pestov
460f163014
compiler.cfg.linear-scan: clean up spill slot assignment
2010-05-03 17:34:24 -04:00
Slava Pestov
8849e370ca
Register allocation now uses SSA properties to coalesce values with different representations
2010-05-03 17:34:20 -04:00
Slava Pestov
16566506f1
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
d38dbdabce
compiler.cfg.linear-scan: cleanups
2010-05-03 17:34:18 -04:00
Slava Pestov
fc7a1ad8b3
New GC checks work in progress
2010-05-03 17:34:16 -04:00
Slava Pestov
e4ce0d92f2
compiler.cfg.linear-scan.resolve: fix incorrect behavior when one physical register is used with several representations in the same register class
2010-05-03 17:34:14 -04:00
Slava Pestov
6b3aeeb414
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
6fdcd9fb02
Untagged fixnums work in progress
2010-05-03 17:34:02 -04:00
Slava Pestov
19412e4ad1
compiler: Start using tagged-rep for stuff, and split up compiler.cfg.representations into several sub-vocabularies
2010-05-03 17:34:01 -04:00
Daniel Ehrenberg
2b5af07494
Fixing ambiguity between sets and namespaces in many unit tests and furnace.auth
2010-02-26 17:17:40 -05:00
Daniel Ehrenberg
142f530f1b
Making all of basis and extra unambiguous for sets/namespaces
2010-02-26 16:28:38 -05:00
Daniel Ehrenberg
0f0571e48a
Moving new-sets to sets
2010-02-26 16:01:01 -05:00
Doug Coleman
82992f6dd4
reverse-here -> reverse!
2009-10-28 14:40:15 -05:00
Slava Pestov
ba37429563
filter-here -> filter!
2009-10-28 00:44:05 -05:00
Slava Pestov
03e70d1aa9
remq -> remove-eq, delq -> remove-eq!
2009-10-28 00:23:08 -05:00
Slava Pestov
b8a51c7eb0
delete-nth -> remove-nth!
2009-10-27 23:41:57 -05:00
Slava Pestov
ee8a112c44
compiler.cfg: fix unit tests
2009-10-15 06:01:46 -05:00
Slava Pestov
ee7cfeba7b
compiler.cfg.linear-scan: fix unit test
2009-10-05 18:21:58 -05:00
Slava Pestov
931107397c
compiler.cfg: remove _gc instruction, it doesn't need to exist, and change GC checks to ensure that the right amount of space is available instead of blindly checking for 1Kb
2009-10-05 05:27:49 -05:00
Slava Pestov
f213a67295
compiler.cfg.linear-scan: fix tests for hash order
2009-09-27 23:35:56 -05:00
Slava Pestov
8c9ccdd906
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
6f2a4eba51
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
0778c20722
compiler.cfg.linearization.order: basic blocks were being inserted twice if some blocks had repeated successors, causing problems for register allocation
2009-09-22 03:19:23 -05:00
Slava Pestov
20dfbf7ac8
More SIMD work
...
- Rename SIMD types and register representations: <type>-<count> rather than <count><type>-array
- Make a functor to define 256-bit vector types, use it to define float-8 type
- Make SIMD instructions pure-insns so that they participate in value numbering
2009-09-03 20:58:56 -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
43af9b06a4
compiler.cfg.linear-scan.live-intervals: dead-value-error is never thrown anymore
2009-08-30 05:15:18 -05:00
Slava Pestov
f6a836d1e9
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
40b522c9d0
compiler.cfg.linear-scan: fix unit tests for new fake-representations
2009-08-26 08:58:00 -05:00
Daniel Ehrenberg
d93f6ed1f3
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-14 20:11:54 -05:00
Daniel Ehrenberg
595e3b96cd
Improving write barrier elimination; change to compiler.cfg.utilities to support this
2009-08-14 19:41:41 -05:00
Doug Coleman
d1ce837569
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
ca2d989547
compiler.cfg.linearization: change order to fit older unit tests
2009-08-08 23:06:57 -05:00
Slava Pestov
88d15dfbea
compiler.cfg: new system to track when results of analyses need to be recomputed (reverse post order, linear order, predecessors, dominance, loops). Passes can now call needs-predecessors, needs-dominance, needs-loops at the beginning, and cfg-changed, predecessors-changd at the end. Linearization order now takes loop nesting into account, and linear scan now uses linearization order instead of RPO.
2009-08-08 20:02:56 -05:00
Slava Pestov
2d575d7ec9
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
4d2160799f
Split off the notion of a register representation from a register class
2009-08-07 17:44:50 -05:00
Slava Pestov
8b887630a0
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
Slava Pestov
7665784911
Compiler speedups
2009-08-02 09:16:21 -05:00
Slava Pestov
8028eb5776
compiler.cfg: clean up unit tests using some new utilities
2009-08-02 03:49:25 -05:00
Slava Pestov
8677d56466
compiler.cfg.linear-scan: fix case where a register can be made available for only a part of a live interval's lifetime, but there are no more usages after the split location. This case never came up until global stack analysis, at which point it started to be exercised on x86-32
2009-07-30 02:13:30 -05:00