Slava Pestov
|
81b72cb5c5
|
Add some unit tests
|
2009-08-22 17:15:10 -05:00 |
Slava Pestov
|
1961b4da16
|
next-fastcall-param word was not being called; on x86 its equivalent to inc but on ppc there is more logic, this fixes FFI on PowerPC
|
2009-08-21 20:15:19 -05:00 |
Slava Pestov
|
5197aca215
|
compiler.cfg.dataflow-analysis: when intersecting sets, treat uninitialized sets as universal rather than empty; reduces number of stack instructions generated by 1%
|
2009-08-20 18:15:41 -05:00 |
Slava Pestov
|
49bd2228ec
|
compiler.tree.modular-arithmetic: fix regression; set-alien-*-1 was not always open-coded
|
2009-08-20 17:56:49 -05:00 |
Slava Pestov
|
9ef8f6c81d
|
compiler.tree.modular-arithmetic: eliminate >bignum calls where possible, convert fixnum-shift to fixnum-shift-fast if shift count is positive, don't run if there are no modular values
|
2009-08-20 03:47:45 -05:00 |
Slava Pestov
|
f01f7ad6eb
|
compiler.tree.propagation: bitand custom inlining was wrong if the second input was a bignum
|
2009-08-20 03:47:07 -05:00 |
Slava Pestov
|
fd2f0a602d
|
compiler.cfg.stacks.local: more accurate local replace set computation; optimizes out 'swap swap'
|
2009-08-19 22:00:21 -05:00 |
Slava Pestov
|
a598cc35a5
|
compiler: add unit tests for new bugs
|
2009-08-19 16:56:26 -05:00 |
Slava Pestov
|
2dc99ea05f
|
Fix interval inference of abs, absq when input is a complex number
|
2009-08-19 16:06:37 -05:00 |
Slava Pestov
|
829107902e
|
compiler.tree.propagation: improved interval inference for absq eliminates a conditional from math.vectors:distance. Type inference for rational math also a bit sharper now
|
2009-08-19 02:33:41 -05:00 |
Slava Pestov
|
507e2b7f3a
|
Fix some unit test failures
|
2009-08-18 03:49:05 -05:00 |
Slava Pestov
|
d7594c3381
|
compiler: inline singleton predicates, and optimize predicate engines, reduces terrain demo deployed size by ~20kb
|
2009-08-17 23:59:24 -05:00 |
Slava Pestov
|
3047d4a451
|
compiler.tree.propagation: remove method inlining heuristic
|
2009-08-17 22:29:05 -05:00 |
Slava Pestov
|
bf57d78b09
|
compiler.tree.modular-arithmetic: >fixnum elimination and value info annotations were too aggressive
|
2009-08-17 01:20:25 -05:00 |
Slava Pestov
|
5297be3e19
|
compiler.tree.modular-arithmetic: stronger optimization handles > 1 usages case as well as values defined and used in loops. Eliminates 5 out of 8 >fixnum calls in benchmark.yuv-to-rgb
|
2009-08-15 18:42:41 -05:00 |
Daniel Ehrenberg
|
478b960560
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-14 20:11:54 -05:00 |
Daniel Ehrenberg
|
3cec74867d
|
Improving write barrier elimination; change to compiler.cfg.utilities to support this
|
2009-08-14 19:41:41 -05:00 |
Doug Coleman
|
7c92ab1ea5
|
move if-zero etc to math, remove 1-/1+ from math
|
2009-08-14 14:27:23 -05:00 |
Daniel Ehrenberg
|
8197d9356b
|
Write barriers are hoisted out of loops when their target is slot-available
|
2009-08-13 20:26:44 -05:00 |
Doug Coleman
|
2ed4425b7a
|
Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
basis/calendar/calendar.factor
|
2009-08-13 19:40:02 -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 |
Daniel Ehrenberg
|
5a3e350490
|
Global write barrier elimination tracks newly allocated objects
|
2009-08-13 15:18:47 -05:00 |
Daniel Ehrenberg
|
ad772cd261
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-12 23:56:05 -05:00 |
Daniel Ehrenberg
|
d35e1eb76c
|
Fixing write-barrier elimination; adding bb as a parameter to join-sets in dataflow analysis
|
2009-08-12 23:52:29 -05:00 |
Slava Pestov
|
4ecf5a904a
|
More accurate wrap-interval in compiler.tree.propagation.info fixes test regression; constructing an interval with endpoints at infinity now outputs full-interval
|
2009-08-12 03:25:53 -05:00 |
Daniel Ehrenberg
|
1a7ab59f56
|
Making write barrier elimination global
|
2009-08-11 21:21:21 -05:00 |
Slava Pestov
|
7bfbb0c5ac
|
math.intervals: fix interval-rem
|
2009-08-11 16:49:28 -05:00 |
Slava Pestov
|
422dd24bad
|
alien.complex: fix tests
|
2009-08-11 14:07:33 -05:00 |
Philipp Brüschweiler
|
26859a45eb
|
various doc fixes
|
2009-08-11 16:58:47 +02:00 |
Slava Pestov
|
7e35723db0
|
compiler.tree.propagation: be more careful with intervals, ensuring that the inferred interval of a value is a subset of the value class's interval. This improves accuracy, for example [ >fixnum 1 + >fixnum most-positive-fixnum <= ] constant-folds to true
|
2009-08-10 01:16:49 -05:00 |
Slava Pestov
|
8a9c15ab0b
|
compiler.tree.escape-analysis: if the output of an #introduce node has an immutable tuple class type declaration, and it is not passed to any subroutine calls, or returned from the word, then unbox it. This speeds up vector arithmetic words on specialized arrays, because the specialized array is unboxed up-front, eliminating an indirection on every loop iteration
|
2009-08-09 16:29:21 -05:00 |
Slava Pestov
|
cc5476c823
|
_gc instruction doesn't need slot to hold GC root area size, since that's just tagged-values>> length
|
2009-08-09 03:08:13 -05:00 |
Slava Pestov
|
687454878a
|
compiler.cfg.linearization: change order to fit older unit tests
|
2009-08-08 23:06:57 -05:00 |
Slava Pestov
|
e400d80d8b
|
More accurate interval inference for mod, rem, and propagation can now infer intervals in the case where a value might be f. so, [ [ 127 bitand ] [ drop f ] if dup [ 0 >= ] [ not ] if ] now constant-folds down to 't'!
|
2009-08-08 23:03:45 -05:00 |
Slava Pestov
|
61ea749bb6
|
More accurate interval-mod and interval-rem
|
2009-08-08 22:01:12 -05:00 |
Slava Pestov
|
24a50c8006
|
compiler.cfg.two-operand: sometimes we can eliminate a copy in the x = y <op> y case
|
2009-08-08 20:03:42 -05:00 |
Slava Pestov
|
55acddef3f
|
compiler.cfg.representation: OK to unbox output of ##load-reference globally
|
2009-08-08 20:03:13 -05:00 |
Slava Pestov
|
d0c393aa60
|
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
|
11dc0a23a8
|
compiler.cfg.ssa.liveness: fix tests
|
2009-08-08 16:15:45 -05:00 |
Slava Pestov
|
1bf8a0cac7
|
compiler.cfg.representations: emit-conversion should not be private since CSSA construction uses it
|
2009-08-08 04:13:30 -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
|
e21ca289c3
|
compiler.cfg.representations: new pass to make global unboxing decisions, relies on new compiler.cfg.loop-detection pass for loop nesting information
|
2009-08-08 00:24:46 -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 |
Slava Pestov
|
97ec3ea1b4
|
compiler.graphviz: add high-level IR call graph rendering
|
2009-08-05 03:33:06 -05:00 |
Slava Pestov
|
fb03a93763
|
compiler.tree.recursive: have to check tail call flag of call tree edges too
|
2009-08-05 02:14:49 -05:00 |
Slava Pestov
|
c3d60e5899
|
compiler.tree.recursive: more accurate loop detection
|
2009-08-04 19:18:40 -05:00 |
Slava Pestov
|
eed4f4dcfc
|
compiler.tree.recursive: add some more more loop detection tests
|
2009-08-04 16:23:14 -05:00 |
Slava Pestov
|
b49e4c9c9b
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-03 10:31:27 -05:00 |
Slava Pestov
|
d286a7f426
|
compiler.cfg.critical-edges: no longer neededed
|
2009-08-03 10:31:00 -05:00 |