Slava Pestov
|
8f19f14c1f
|
compiler.cfg.instructions: forgot that ##box-displaced-alien needs a GC check; fixes segfault in benchmark.mandel
|
2009-08-27 04:09:35 -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
|
1b77718625
|
use structs
|
2009-08-26 11:01:39 -05:00 |
Doug Coleman
|
bbcf08cdc3
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-26 09:15:33 -05:00 |
Slava Pestov
|
8bf709acd0
|
compiler.cfg.linear-scan: fix unit tests for new fake-representations
|
2009-08-26 08:58:00 -05:00 |
Slava Pestov
|
0ff80a063d
|
compiler: only run float test in low-level-ir if float intrinsics enabled; fixes SIGILL on non-sse2 x86 machines
|
2009-08-26 06:58:47 -05:00 |
Slava Pestov
|
8d55616d34
|
compiler.cfg.debugger: fix fake-representations so that low-level-ir tests can pass on x86
|
2009-08-25 23:44:01 -05:00 |
Slava Pestov
|
0df8aadce2
|
cpu.x86: use SQRTSD instruction for math.libm:fsqrt word
|
2009-08-25 23:22:15 -05:00 |
sheeple
|
61c1ed17d9
|
basis/compiler/tests/low-level-ir: add ##copy double-float-rep test
|
2009-08-25 19:41:17 -05:00 |
Doug Coleman
|
0ce57d0566
|
update new structs again
|
2009-08-25 16:31:58 -05:00 |
Doug Coleman
|
2c6ef83c13
|
update compiler.tests.alien to joe's latest changes
|
2009-08-25 12:00:06 -05:00 |
Doug Coleman
|
b756a37d75
|
use new structs wherever possible in compiler tests
|
2009-08-25 11:59:33 -04:00 |
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 |