Slava Pestov
20f5541d35
Refactoring FFI for Win64
2008-11-17 13:34:37 -06:00
Slava Pestov
14246fde37
Better FFI unit tests expose a new problem
2008-11-17 12:23:44 -06:00
Slava Pestov
9e82f1f8dd
Better inference error messages
2008-11-16 19:42:53 -06:00
Slava Pestov
7fc13ef03c
dlists no longer have a length slot; tweak dlist code so that types infer better
2008-11-16 05:53:25 -06:00
Slava Pestov
5b4e8e9d09
Rename tests/templates.factor to tests/codegen.factor since that's really what its testing
2008-11-13 04:16:58 -06:00
Slava Pestov
eb05dd3a12
Optimize a ##dispatch that is applied to the result of a ##sub-imm or ##add-imm; this eliminates an instruction from the common 1 fixnum-fast { ... } dispatch and 8 fixnum-fast { ... } dispatch code sequences appearing in generic word expansions
2008-11-13 04:16:08 -06:00
Slava Pestov
6590c894bc
Forgot a constant
2008-11-13 04:10:21 -06:00
Slava Pestov
b1aa3697cb
Emit branches in the same order they're written in code
2008-11-13 03:52:01 -06:00
Slava Pestov
5bae69426d
Stack checker cleanup and optimization
...
- stack-checker.state vocabulary split up into stack-checker.{state,values,recursive-state}
- code that modifies and searches recursive state factored out into stack-checker.recursive-state
- recursive state is now a set of three binary hash trees instead of an alist, and no longer contains unnecessary data
- binary hash trees are in stack-checker.recursive-state.tree: unbalanced, persistent
- ~8 second speedup on bootstrap, ~20 second speedup in "peg.javascript" require
2008-11-13 00:07:45 -06:00
Slava Pestov
4a1bcacfd4
Refactoring recursive-state alist; now its a mapping from words to local state triples, reduces searching by a bit
2008-11-12 19:08:40 -06:00
Slava Pestov
9f52ee50b0
Another speedup to >alist: create vector with right size up-front. 10 second bootstrap time reduction
2008-11-12 00:10:50 -06:00
Slava Pestov
ed3a81a503
Faster M: hashtable >alist performs less dispatch and allocates less junk
2008-11-11 23:03:50 -06:00
Slava Pestov
d970a632bb
Fix nodes>quot
2008-11-11 19:51:12 -06:00
Slava Pestov
26f309d2ae
Trying to make PEGs compile faster by reducing the number of low level IR nodes: merge functionality of #>r and #r> into #shuffle, and generate 1 node instead of 3 for calls to get-local
2008-11-11 18:46:31 -06:00
Slava Pestov
a32acdcff0
Tweak grouping code for better method inlining
2008-11-11 12:11:13 -06:00
Slava Pestov
f04b32ea02
Remove duplicated logic
2008-11-11 09:10:33 -06:00
Slava Pestov
792df37431
Update unit test
2008-11-11 08:50:30 -06:00
Slava Pestov
5f4b247072
Propagation pass now uses a stack of hashtables for predicated constraints instead of cloning a hashtable. New strategy for recursive propagation; now converges with fewer iterations. ~15 sec bootstrap time improvement
2008-11-11 08:49:00 -06:00
Slava Pestov
7f9fbdaa4e
cleanup pass didn't properly handle conditionals where both branches were dead
2008-11-11 08:38:03 -06:00
Slava Pestov
43335d9c36
Intervals now use a special singleton for the full interval to eliminate FP math in the common case; fix a bug in value-info<=
2008-11-11 08:30:14 -06:00
sheeple
067e9934e1
Merge branch 'master' of git://factorcode.org/git/factor
2008-11-10 03:02:17 -06:00
sheeple
5b7d40d9b4
We need to end the basic block after the ##prologue in the dispatch branch so that the GC check can go after the prologue
2008-11-10 02:58:05 -06:00
unknown
f7fe84e563
Working on Win64 FFI
2008-11-08 21:40:47 -06:00
sheeple
d1f248dac6
Fixing PowerPC backend: prolog register clobberage, spilling, and general stack frame usage. Add some lame tests for spilling
2008-11-06 19:00:56 -06:00
Slava Pestov
4e55cd973b
If a #dispatch branch is a call to another word which is not an intrinsic, we avoid generating the dispatch branch and just jump to the word directly
2008-11-06 11:48:55 -06:00
Slava Pestov
64cbf619a9
Add more algebraic simplifications: comparison of a comparison, comparison where first is immediate
2008-11-06 09:27:52 -06:00
Slava Pestov
1c1333fbe9
Compile not and >boolean as branchless intrinsics by having the CFG builder detect certain code patterns
2008-11-06 09:09:21 -06:00
sheeple
d2ec46e38f
PowerPC backend almost functional; some new compiler unit tests added,
...
better compilation of 'f eq?'; f becomes an immediate operand
move aux-offset to compiler.constants
2008-11-06 06:27:27 -06:00
Slava Pestov
53cd75b06c
Add string-nth intrinsic
2008-11-06 01:11:28 -06:00
Slava Pestov
bfd119e3b5
I/O ricing: various hints added so that UTF8 and ASCII fastpaths compile with less dispatch. 25% improvement on reverse-complement
2008-11-06 00:02:44 -06:00
Slava Pestov
cc879fa9b7
Tuple layouts are now arrays, instead of built-in types. The superclass
...
array is now part of the tuple layout object itself, and class hashcodes
are stored alongside class words there. This removes 2 indirections when
reading a superclass, and 3 when reading a superclass hashcode.
2008-11-05 22:20:29 -06:00
Slava Pestov
4fd1767768
Old fix for classes-intersect? no-method bug was incorrect; we were
...
ignoring anonymous classes in compiled-generic-crossref. Also,
forget* now calls reset-word so that references to predicates of
forgotten classes don't break the compiler with a similar error.
2008-11-05 18:32:02 -06:00
Slava Pestov
dae41147fe
%bignum>integer now takes a temporary register since this is useful on both x86 and ppc
2008-11-05 04:16:08 -06:00
Slava Pestov
c8521ad826
Add tool to dump live intervals
2008-11-04 17:23:20 -06:00
Slava Pestov
46830bb38d
Fix another name clash in tests; putting all compiler tests in compiler.tests vocab is probably not good
2008-11-04 00:46:06 -06:00
Slava Pestov
1af3b8ed65
If a register is spilled and the reload location is also a copy, we chicken out and don't coalesce. This is suboptimal but it's not clear to me how to implement it cleanly, and SSA graph coloring will solve this problem eventually anyway
2008-11-04 00:32:56 -06:00
Slava Pestov
efcb916e35
Handle a jump to a jump by cloning the block, in the same way we optimize jumps to returns
2008-11-03 21:02:34 -06:00
Slava Pestov
06b99c31ee
Fix regression. If a parsing word called the compiler, it might compile a caller of a generic before the generic gets built, which would throw an error since the inferred effect of the generic might have less inputs than the combination's dispatch#
2008-11-03 20:59:48 -06:00
Slava Pestov
dc85ed3d56
Fix help lint: links to obsolete article
2008-11-03 08:08:28 -06:00
Slava Pestov
82e9eedd39
Forgot about float= intrinsic
2008-11-03 07:15:09 -06:00
Slava Pestov
b649c01de6
Fix name clash with templates.factor
2008-11-03 06:34:56 -06:00
Slava Pestov
59f4f25b91
Loop alignment: appears to be a small win for reverse-complement
2008-11-03 06:20:51 -06:00
Slava Pestov
0250d7c1d2
Forgot a drop in unit test
2008-11-03 01:53:27 -06:00
Slava Pestov
08b277e892
Fix alias anlaysis bug: result of ##box-alien and ##box-float did not get an AC, so calling hi-tag would not compile
2008-11-03 01:52:55 -06:00
Slava Pestov
3230e0010f
-trace-compilation command line switch
2008-11-03 01:19:20 -06:00
Slava Pestov
f253e74942
Inline subprimitives in optimizing compiler
2008-11-03 01:18:54 -06:00
Slava Pestov
1aefde994f
Cleanup
2008-11-03 00:03:22 -06:00
Slava Pestov
0d83873174
Fix regression
2008-11-03 00:03:15 -06:00
Slava Pestov
449c1191cc
Add another debug var
2008-11-02 23:25:42 -06:00
Slava Pestov
445e353337
Optimize away useless jumps
2008-11-02 23:09:31 -06:00