Joe Groff
571ef865e6
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
78d529c7c4
compiler.cfg.linear-scan: extend lifetime intervals of base pointers correctly (reported by Anton Gorenko)
2010-09-30 20:49:03 -07:00
Slava Pestov
4877d32cb3
compiler: preliminary implementation of tracking derived pointers in GC maps
2010-09-27 20:12:44 -07:00
Slava Pestov
526dca873d
compiler.cfg.liveness: merge in compiler.cfg.liveness.ssa and simplify the code, since we don't compute live sets before SSA construction anymore
2010-09-25 14:36:58 -07:00
Slava Pestov
179f32cdeb
compiler.cfg.linear-scan: fix bad interaction between inactive intervals and sync points
2010-07-29 21:06:48 -04:00
Slava Pestov
f69411fcfb
compiler.cfg: now that kill-blocks cannot contain instructions that define vregs we can skip them all
2010-07-27 12:40:31 -04:00
Slava Pestov
641c973eb2
compiler.cfg.linear-scan.allocation: fix wrong order
2010-07-19 06:46:50 -04:00
Slava Pestov
b2d2507721
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
333b9a34cc
compiler.cfg: nuke ##allot-byte-array instruction
2010-07-16 19:57:45 -04:00
Slava Pestov
f133a5f2be
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
fb4de47abf
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
2010-06-14 19:39:46 -04:00
Slava Pestov
a08295d9b7
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Slava Pestov
b8ec5c6176
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
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