Commit Graph

5720 Commits (397def0edec18e717a3367deb2c6112763ade59c)

Author SHA1 Message Date
Slava Pestov be363d1a5b compiler.cfg: Get inline GC checks working again, using a dataflow analysis to compute uninitialized stack locations in compiler.cfg.stacks.uninitialized. Re-enable intrinsics which use inline allocation 2009-07-30 09:19:44 -05:00
Slava Pestov cd7a1d6c58 Oopsie 2009-07-30 08:27:52 -05:00
Slava Pestov d71e2f9577 cpu.x86: Fix shuffle bug. Shuffling bugs occurring in code that runs before optimizer/stack checker is online are only caught at runtime during bootstrap, what a pain 2009-07-30 05:12:40 -05:00
Slava Pestov d81dec5d45 cpu.x86: fix a bug in small-register logic on 32-bit. Also, on 32-bit, we don't need to do any special register shuffling to work with 16-bit operands since all registers have 16-bit variants. So now only 8-bit operands on x86-32 require special treatment 2009-07-30 05:04:46 -05:00
Slava Pestov e1caaca6df bootstrap.compiler: compile a few more words early, for a big bootstrap speed boost 2009-07-30 02:45:29 -05:00
Slava Pestov a9977d7c79 cpu.x86: update non-optimizing compiler backends for assembler vocab split 2009-07-30 02:22:37 -05:00
Slava Pestov 791fbe4003 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
Slava Pestov 6274c0337a compiler.cfg.ssa.destruction: fix 2009-07-29 23:43:00 -05:00
Slava Pestov b133649edd compiler.cfg.ssa.destruction: tweak in preparation for landing Dan's new SSA liveness analysis 2009-07-29 23:35:51 -05:00
Slava Pestov 1e8d13c1f1 cpu.x86.assembler: fix extended 8-bit registers (DIL, SIL, SPL, BPL) 2009-07-29 22:32:22 -05:00
Slava Pestov 8ca17d053c cpu.x86: use full set of 8-bit, 16-bit and 32-bit registers on x86-64 to avoid clumsy save/restore logic 2009-07-29 21:56:37 -05:00
Slava Pestov 73862a9a03 cpu.x86.assembler: move operands to operands sub-vocabulary, clean up small-reg-* code in compiler backend 2009-07-29 21:44:08 -05:00
Slava Pestov eda66805b2 Merge branch 'xml-fix' of git://tiodante.com/git/factor 2009-07-29 19:27:13 -05:00
Slava Pestov cb36a40dc4 compiler.cfg.linear-scan: more test fixes 2009-07-29 07:04:52 -05:00
Slava Pestov cb7735ddf4 compiler.cfg: remove 'regs' slot from instruction tuples now that register allocation doesn't use it anymore 2009-07-29 06:50:46 -05:00
Slava Pestov 639a1cbb1f compiler.cfg.linear-scan.resolve: fix unit tests to not depend on hashing 2009-07-29 06:48:01 -05:00
Slava Pestov f3fa4debe3 bit-arrays: fix resize method regression after recent equal? method optimization 2009-07-29 06:47:50 -05:00
Slava Pestov 34432c5f18 compiler: fix test 2009-07-29 06:39:54 -05:00
Slava Pestov 74766d1ccd compiler.cfg.linear-scan.assignment: modifies instructions in place instead of storing a registers assoc for further compile-time performance improvement 2009-07-29 06:36:14 -05:00
Slava Pestov 1532a6f2e3 compiler.cfg.linear-scan.assignment: more efficient data structures 2009-07-29 06:12:33 -05:00
Slava Pestov 50bf6f52b4 compiler.cfg.linearization: fix bootstrap 2009-07-28 22:52:07 -05:00
Slava Pestov eabaf9fc40 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-28 21:31:25 -05:00
Slava Pestov 8c6b38533c compiler.cfg.linearization: rotate loops. 2x speedup with empty times loop, 1.5x speedup on benchmark.dawes 2009-07-28 21:31:08 -05:00
Joe Groff f63b322859 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-28 14:38:25 -05:00
Joe Groff 7f1abec19e i just cut and pasted 2009-07-28 14:38:10 -05:00
Slava Pestov 9afa39aa3a compiler.cfg.ssa.destruction: rename coalesce word to destruct-ssa 2009-07-28 12:56:33 -05:00
Slava Pestov 09d89c0d17 Merge branch 'dcn' 2009-07-28 12:37:45 -05:00
Slava Pestov d913d7331f compiler.cfg: Minor optimization. Instructions can now only ever produce a single value; this eliminates 1array constructions and some iterations 2009-07-28 12:29:07 -05:00
Joe Groff 3e8d928d29 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-28 12:20:16 -05:00
Joe Groff 9f3c8a9959 SSE4 opcodes for x86 assembler 2009-07-28 12:19:37 -05:00
Slava Pestov 7d3b6892d5 compiler.cfg.ssa.construction: use the optimization from the pruned-SSA paper to minimize stack pushing and popping 2009-07-28 11:52:42 -05:00
Slava Pestov f1683f9fcf Move set-last from circular.private to sequences 2009-07-28 11:51:47 -05:00
Slava Pestov 4175585fd4 Merge branch 'master' into dcn 2009-07-28 11:20:43 -05:00
Slava Pestov 037fa69a21 Move Joe's HEX{ syntax to byte-arrays.hex in basis 2009-07-28 11:20:28 -05:00
Slava Pestov 7a6bdffaaa IN: fix for compiler test 2009-07-28 11:16:21 -05:00
Slava Pestov 62fe308776 compiler.cfg.ssa.construction: Use TDMSC algorithm to compute Phi placement 2009-07-28 11:16:10 -05:00
Slava Pestov 5fe3bcff4d Faster bit-array equality, add bit-set-subset? word 2009-07-28 11:14:57 -05:00
Slava Pestov d10993b837 compiler.cfg: Rename ssa to ssa.construction, coalescing to ssa.destruction 2009-07-28 09:34:08 -05:00
Slava Pestov 80e10f1bd0 compiler.cfg: Fix some unit tests 2009-07-28 08:56:14 -05:00
Slava Pestov d394dd3c36 compiler.cfg.branch-splitting: re-enable with a better heuristic 2009-07-28 08:48:05 -05:00
Slava Pestov ff81b055a5 compiler.cfg.utilities: add loop-entry? word 2009-07-28 08:47:50 -05:00
Slava Pestov e6f5eab598 compiler.cfg.linear-scan: fix resolve pass 2009-07-28 08:47:35 -05:00
Slava Pestov 3edf4a2b75 compiler.cfg.coalescing: cleanups 2009-07-28 08:47:03 -05:00
Slava Pestov cf26800dbd Revert "compiler.cfg.coalescing: some cleanups"
This reverts commit e5834c4ba7.
2009-07-28 07:51:44 -05:00
Slava Pestov 18717a449f compiler.cfg.linear-scan.resolve: unit tests 2009-07-28 07:41:41 -05:00
Slava Pestov 009cfbfc8d compiler.cfg.utilities: fix stack effect declaration 2009-07-28 07:40:09 -05:00
Slava Pestov 857ef94acc compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass 2009-07-28 07:39:46 -05:00
Slava Pestov f2c8f2824a compiler.cfg.coalescing: some cleanups 2009-07-28 07:37:50 -05:00
Slava Pestov 3e6e5278a4 compiler.cfg.utilities: fix load error 2009-07-28 06:51:03 -05:00
Slava Pestov 7c5e2f2933 tools.annotations: doc addition 2009-07-28 06:49:03 -05:00
Slava Pestov a4cb242396 compiler.cfg.coalescing: Only run if CFG has ##phi nodes, fix interference for case where value is not used in a block and is not live-in, forgot to run liveness analysis first 2009-07-28 06:48:20 -05:00
Slava Pestov cb07256ff5 Add some compiler tests 2009-07-28 06:45:31 -05:00
Slava Pestov 1878b0dc32 compiler.cfg.liveness: fix liveness computation in case where instruction uses a register it defines 2009-07-28 06:45:02 -05:00
Slava Pestov d2b158c8e4 compiler.cfg.critical-edges: reset RPO 2009-07-28 01:04:13 -05:00
Joe Groff 5372113fce SSE1–SSSE3 opcodes + branch hints for x86 assembler 2009-07-28 00:22:27 -05:00
Slava Pestov cf90945b4c Add some tests that directly generate low level IR 2009-07-27 22:29:33 -05:00
Slava Pestov 3cc71a1934 compiler.cfg.coalescing: precompute live intervals, add support for instructions where output cannot equal an input, split critical edges 2009-07-27 22:29:17 -05:00
Slava Pestov e8cf50ac3e compiler.cfg.two-operand: make it work in more cases 2009-07-27 22:28:29 -05:00
Slava Pestov 423d2996fa compiler.cfg.debugger: reset vreg counters 2009-07-27 22:28:13 -05:00
Slava Pestov bfb2a4c1fc cpu.x86: compile a load of zero, and adds, subs where dst = src1 more efficiently 2009-07-27 22:27:54 -05:00
Joe Groff 7493e07c68 disassemble method for byte-arrays. HEX{ abcd } syntax for byte-arrays 2009-07-27 22:14:26 -05:00
Slava Pestov c5d7ed58a5 Debugging compiler.cfg.coalescing 2009-07-27 19:24:13 -05:00
Slava Pestov 1a765c38da compiler.cfg.parallel-copy: fix algorithm 2009-07-27 16:54:47 -05:00
Slava Pestov 31555b05cf compiler.codegen: collect instruction statistics 2009-07-27 03:58:15 -05:00
Slava Pestov 9fa71959b5 compiler.cfg.coalescing: fix shuffling bug 2009-07-27 03:58:01 -05:00
Slava Pestov e112b0d70e compiler.cfg.phi-elimination: no longer needed 2009-07-27 02:20:53 -05:00
Slava Pestov ba696b68b8 compiler.cfg.coalescing: more or less complete, now needs debugging 2009-07-27 02:20:45 -05:00
Slava Pestov a32cbdd231 compiler.cfg.coalescing: more work done 2009-07-27 00:31:21 -05:00
Slava Pestov 501629cf75 compiler.tree.propagation.info: fix load error 2009-07-27 00:30:24 -05:00
Slava Pestov a5e5510615 compiler.cfg.coalescing: work in progress 2009-07-26 21:11:26 -05:00
Slava Pestov e9935b6aad compiler.cfg.copy-prop: remove ##phi nodes where all inputs are copy-equivalent 2009-07-26 21:11:02 -05:00
Slava Pestov fc41140720 compiler.cfg.utilities: move value-info utilities to compiler.tree.propagation.info 2009-07-26 21:10:33 -05:00
Slava Pestov 1319d8e549 compiler.cfg.def-use: build def-use chains 2009-07-26 21:10:14 -05:00
Slava Pestov 2137c9cc79 compiler.cfg.dominance: add pre order and max pre order numbers; use them to implement dominates? check 2009-07-26 21:10:05 -05:00
Joe Groff eeb02815bc set transform feedback format at program link 2009-07-25 21:19:56 -05:00
Slava Pestov 5bbd89f170 Merge branch 'dcn' of git://factorcode.org/git/factor into dcn 2009-07-24 20:30:11 -05:00
Slava Pestov 93764faad3 Merge branch 'master' of git://factorcode.org/git/factor into dcn 2009-07-24 20:29:09 -05:00
Slava Pestov 053de0af40 compiler.cfg.copy-prop: work in progress 2009-07-24 19:56:21 -05:00
Slava Pestov 2fb0198d48 compiler.cfg.parallel-copy: forgot to add this 2009-07-24 19:46:33 -05:00
Doug Coleman c762d2b422 scaffold tools now uses the boolean type instead of "a boolean" 2009-07-24 18:09:14 -05:00
Slava Pestov 4624af75f4 compiler.cfg.phi-elimination: move some utilities from compiler.cfg.utilities here since that's the only place they get used 2009-07-24 16:45:31 -05:00
Slava Pestov 13c3fdcb5c compiler.cfg: Fixing test failures 2009-07-24 06:08:07 -05:00
Slava Pestov 7068de6cd3 compiler.cfg.copy-prop: Global copy propagation 2009-07-24 05:30:46 -05:00
Slava Pestov e0f6d89ff1 compiler.cfg.value-numbering: insert ##copy instructions for instructions whose expressions simplify. While subsequent usages are replaced with the instruction computing the simplified vreg locally, global usages may exist of the original instruction. In this case, the ##copy is not dead 2009-07-24 05:30:30 -05:00
Slava Pestov de73534424 compiler.cfg.write-barrier: simplify a little bit. It doesn't need to do copy propagation, since its a separate pass now 2009-07-24 05:29:28 -05:00
Slava Pestov 7590ad3574 compiler.cfg: introduce less temporaries when building CFG 2009-07-24 03:37:18 -05:00
Slava Pestov 548e575ad9 Merge branch 'master' into dcn 2009-07-23 21:25:52 -05:00
Slava Pestov 2bea107202 compiler.cfg.builder: fix stack effect declaration 2009-07-23 21:24:15 -05:00
Slava Pestov d947c61bd7 compiler.cfg.stacks: now performs online local DCN 2009-07-23 20:54:38 -05:00
Doug Coleman f7b2e4a155 remove call to check-c-name 2009-07-23 18:14:07 -05:00
Doug Coleman 9bb38b870c allow FUNCTION: to parse pointers in the name field 2009-07-23 18:05:09 -05:00
Slava Pestov ff7f0e2f3b Add testcase for recent bug 2009-07-23 18:03:14 -05:00
Slava Pestov b1afd4c491 compiler.cfg.linear-scan.mapping: simplify 2009-07-23 18:03:04 -05:00
Slava Pestov 747a2d72c8 compiler.cfg.empty-blocks: new pass to delete empty blocks, runs after phi elimination 2009-07-23 18:02:46 -05:00
Slava Pestov 93c58a8bb5 compiler.cfg.branch-splitting: now that we do SSA construction we can split branches with fixnum overflow ops (which have a live-out) 2009-07-23 18:02:29 -05:00
Doug Coleman 555309ba86 fix another typo in ffi 2009-07-23 17:49:04 -05:00
Doug Coleman 37a9f01adc fix typo in x11 binding 2009-07-23 17:39:12 -05:00
Doug Coleman 78bbf96a6d move signed-le> to io.binary, clean up using list for math.bitwise 2009-07-23 15:54:57 -05:00
Doug Coleman bad8e05937 Disallow C functions and parameter names that contain an asterisk 2009-07-23 15:48:10 -05:00
Joe Groff 739d99d4e8 Merge branch 'master' of git://factorcode.org/git/factor 2009-07-23 13:39:52 -05:00