Commit Graph

605 Commits (b65ef327ce71e65b8c5985fe49b32e036e4cc6ba)

Author SHA1 Message Date
Doug Coleman c5ffb08f5b fix bug where traversal order was lost 2009-06-30 16:44:14 -05:00
Slava Pestov ecf44c98bc compiler.cfg.linear-scan: compute-free-pos was broken in the case where more than one inactive interval had the same physical register assigned 2009-06-30 16:07:58 -05:00
Doug Coleman d888d13efe spill to spill-temp, not to virtual spill addresses 2009-06-30 15:40:13 -05:00
Doug Coleman 228716a94e Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 15:32:11 -05:00
Doug Coleman 5ae6eb089d add branch splitting pass to compiler.cfg 2009-06-30 15:31:48 -05:00
Slava Pestov 7fc239d638 compiler.cfg.stack-analysis: fix typos in unit tests 2009-06-29 16:37:40 -05:00
Slava Pestov c2d4c42252 Fix conflict 2009-06-29 01:59:53 -05:00
Slava Pestov 5754bf0028 compiler.cfg.linear-scan.resolve: remove redundant vocabs from using list 2009-06-28 22:58:35 -05:00
Slava Pestov b63133f9f6 compiler.cfg.stack-analysis: fix another corner case with ##peek insertion, and fix changed-loc merging 2009-06-28 22:52:28 -05:00
Doug Coleman 2ed3edeb41 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-28 16:43:45 -05:00
Doug Coleman b2d3b588f0 fix bug in linear-scan.resolve by rewriting entire algorithm 2009-06-28 16:43:17 -05:00
Slava Pestov 9ab1bd1edb Merge branch 'master' of git://factorcode.org/git/factor 2009-06-27 17:33:00 -05:00
Slava Pestov 12df05da5d compiler.cfg.stack-analysis: Fix case where both an ##inc-d/r and a ##peek get inserted 2009-06-27 17:32:37 -05:00
Doug Coleman 750d8c0a9a Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	basis/compiler/cfg/linear-scan/resolve/resolve-tests.factor
2009-06-26 21:51:08 -05:00
Doug Coleman c7a04858ee add spill-temp to compiler.cfg.instructions, implement parallel register assignment in linear-scan.resolve 2009-06-26 21:48:21 -05:00
Slava Pestov 6cb4966075 Fix bootstrap and unit test 2009-06-26 17:44:33 -05:00
Slava Pestov 3b8733de01 Redesign compiler.cfg.stack-analysis to make compiler.cfg.height redundant, and to fix some problems 2009-06-26 17:29:55 -05:00
Slava Pestov 80f7594f75 compiler.cfg.stack-analysis: split up into three vocabs 2009-06-24 13:54:43 -05:00
Slava Pestov be1dcc04c2 compiler.cfg.linear-scan: fix unit tests 2009-06-24 13:54:12 -05:00
Slava Pestov fff4a1dbbd compiler.cfg.linear-scan: fix coalescing to take lifetime holes into account 2009-06-23 21:32:51 -05:00
Slava Pestov 478e5cc95f compiler.cfg.linear-scan: Debugging resolve pass 2009-06-22 00:24:51 -05:00
Slava Pestov 02e2c0bcf7 compiler.cfg.linear-scan.resolve: unit tests 2009-06-21 00:23:34 -05:00
Slava Pestov 39dba00279 compiler.cfg.linear-scan: Working on resolve pass 2009-06-21 00:20:01 -05:00
Slava Pestov 886967256e compiler.cfg.linear-scan.assignment: correctly compute live registers at GC check points 2009-06-20 15:33:12 -05:00
Slava Pestov 82730af521 compiler.cfg.linear-scan: untangle add-active/delete-active/add-handled calls in spilling, replace 'sort-values last' with 'alist-max' in compiler.utilities 2009-06-19 18:28:30 -05:00
Slava Pestov 6ff7e2cba7 compiler.cfg.linear-scan: Fix a couple of bugs 2009-06-19 03:42:42 -05:00
Slava Pestov e1e24c4802 compiler.cfg.linear-scan: Further progress on inactive interval handling 2009-06-17 15:27:20 -05:00
Slava Pestov 9eec019e9b Remove initial-quot feature 2009-06-15 13:07:15 -05:00
Slava Pestov 14b4b79a37 compiler.cfg.linear-scan.resolve: fix compile error 2009-06-14 17:00:52 -05:00
Slava Pestov 48c31d441c Add some failing unit tests exposing bugs in initial-quot: implementation 2009-06-13 18:34:27 -05:00
Slava Pestov 941d7a1eeb Various linear scan fixes
insert spill before reload to fix x86-32 regression
inactive splitting: if all inactive intervals' registers are in use, don't fail
fix stack analysis tests
2009-06-13 17:35:40 -05:00
Slava Pestov d09ece8152 Split up compiler.cfg.linear-scan.allocation into a number of sub-vocabularies; start work on compiler.cfg.linear-scan.resolve; start work on inactive interval splitting 2009-06-11 17:55:14 -05:00
Slava Pestov e4bce2615f compiler.cfg: add a declaration to fix tools.deploy.test.11 2009-06-09 03:36:16 -05:00
Slava Pestov a61a992bfd cpu.x86.assembler: IMUL2 instruction was busted for immediate operands
When given a register and an immediate, it would generate imul imm,dst,dst however the 64-bit prefix was generated wrong and if dst was an extended register only the first operand would be an extended register. To fix this, change IMUL2 to not work on immediates anymore, and added a new IMUL3 that takes a destination register, source register, and immediate. Also, change compiler.cfg.two-operand to not two-operandize %mul-imm, since this isn't needed anymore.
This fixes the sporadic benchmark.tuple-arrays crash on 64-bit machines.
2009-06-08 21:15:52 -05:00
Slava Pestov 02fafdbec1 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-07 21:46:41 -05:00
Slava Pestov 0d265fe016 Remove %dispatch-label since its tehe same on all platforms; fix %gc on PowerPC 2009-06-07 21:46:28 -05:00
Slava Pestov e1d13d8ee7 Linear scan: implement live range intersection 2009-06-06 01:04:12 -05:00
Slava Pestov d830838ffa compiler.cfg.optimizer: disable CFG checker by default 2009-06-05 18:07:22 -05:00
Slava Pestov ad5ef2a3cc Linear scan: correctly compute live spill slots 2009-06-05 18:06:47 -05:00
Slava Pestov 26152bd83c compiler: more informative trace-compilation 2009-06-05 17:32:37 -05:00
Slava Pestov 2b49600f42 compiler.cfg.checker: run if a variable is set 2009-06-05 17:32:12 -05:00
Slava Pestov ee67b7c9a8 compiler.cfg.linear-scan: re-do interval splitting to operate on live ranges; add inactive set processing 2009-06-04 18:53:02 -05:00
Slava Pestov fd710385e5 cpu.x86: fix small register intrinsics on x86-64 2009-06-03 03:22:46 -05:00
Slava Pestov 9096acea6f Linear scan: build live ranges 2009-06-03 03:22:27 -05:00
Slava Pestov c6326b0177 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-02 18:30:25 -05:00
Slava Pestov 7aca076408 GC checks now save and restore registers 2009-06-02 18:23:47 -05:00
Doug Coleman 086bf4c003 fix load error 2009-06-01 09:34:28 -05:00
Slava Pestov b52bdf60e4 Fix for recent word renaming 2009-06-01 03:19:35 -05:00
Slava Pestov 3de85158de Merge branch 'master' into global_optimization 2009-06-01 03:12:32 -05:00
Slava Pestov 0654e8fc51 Remove obsolete optimization 2009-06-01 03:05:49 -05:00
Slava Pestov a07279bf6d Fix compiler errors 2009-06-01 03:00:10 -05:00
Slava Pestov fc9e9a0ab1 Code cleanup 2009-06-01 02:32:42 -05:00
Slava Pestov 096803e58f Redo compiler.codegen.fixup and get %dispatch to work 2009-06-01 02:32:36 -05:00
Slava Pestov 64114947d2 Various improvements aimed at getting local optimization regressions fixed:
- Rename _gc to ##gc
- Absolute labels are now supported
- Generate _dispatch-label
2009-05-31 23:28:08 -05:00
Slava Pestov 6ac52761c6 Fix loop handling in stack-analysis 2009-05-31 19:04:26 -05:00
Slava Pestov 0375ce6bb4 Fix scoping issue in compiler.cfg.linear-scan.assignment 2009-05-31 18:21:23 -05:00
Slava Pestov fd70adf39e Rename _gc to ##gc 2009-05-31 18:21:11 -05:00
Slava Pestov 57d9d9f961 Split off local-optimization combinator into compiler.cfg.local, factor out CFG -> MR into compiler.cfg.mr, split off GC check insertion into a new compiler.cfg.gc-checks pass 2009-05-31 12:20:46 -05:00
Slava Pestov 2ea8212968 Start cleaning up stack analysis 2009-05-30 13:22:30 -05:00
Slava Pestov 968a9bb666 Various codegen improvements:
- new-insn word to construct instructions
- cache RPO in the CFG
- re-organize low-level optimizer so that MR is built after register allocation
- register allocation now stores instruction numbers in the instructions themselves
- split defs-vregs into defs-vregs and temp-vregs
2009-05-29 13:11:34 -05:00
Slava Pestov 5a5afcbfaa On second thought, linearization will be done after SSA destruction so live-in is accurate 2009-05-29 05:45:40 -05:00
Slava Pestov fbefd02bfb Put GC checks in the right place when linearizing, and generate _dispatch-labels 2009-05-29 05:36:04 -05:00
Slava Pestov 40949800bf Fixing various bugs; alias analysis wasn't handling ##phi nodes, stack analysis incorrectly handled height-changing back edges and ##fixnum-*, clean up ##dispatch generation 2009-05-29 01:39:14 -05:00
Slava Pestov cef9ac778b compiler.cfg.alias-analysis: ##peek needs to set alias class of output value 2009-05-28 18:19:01 -05:00
Slava Pestov 6b81b3e055 compiler.cfg.liveness: correct handling of phi nodes 2009-05-28 17:54:27 -05:00
Slava Pestov 4c05bc4f10 Test updates 2009-05-28 02:50:07 -05:00
Slava Pestov 9987f272b0 CFG checker now checks consistency of successors and predecessors lists; fix long-standing bug in useless-blocks optimization 2009-05-28 02:49:51 -05:00
Slava Pestov 4292033da6 Fix alias analysis 2009-05-28 02:48:58 -05:00
Slava Pestov 1fc830a99e Add a with-scope so that optimize-tree doesn't pollute namespace 2009-05-27 18:58:54 -05:00
Slava Pestov 64da54234d Fixing local optimizations 2009-05-27 18:58:41 -05:00
Slava Pestov fe44ce2821 Better CFG checker 2009-05-27 18:58:14 -05:00
Slava Pestov dd8152f7bb Add phi elimination pass 2009-05-27 18:58:01 -05:00
Slava Pestov 3954c3fdc3 Add a new ##allocation union to remove some code duplication 2009-05-27 18:55:49 -05:00
Slava Pestov a29317df5f Remove old local DCE pass 2009-05-27 17:55:15 -05:00
Slava Pestov 1242a3a411 New local-optimization combinator removes some boilerplate 2009-05-26 19:56:56 -05:00
Slava Pestov 25805f9bfe Refactoring low-level optimizer to support stack analysis pass 2009-05-26 19:31:19 -05:00
Slava Pestov 957bc53d4b Move maybe-set-at to assocs 2009-05-26 18:45:37 -05:00
Slava Pestov f6fab1b035 Fix another bug in stack-analysis 2009-05-26 03:42:39 -05:00
Slava Pestov 75d1f6dfda compiler.cfg.stack-analysis: make it pass more tests 2009-05-26 02:59:14 -05:00
Slava Pestov 44437cc891 compiler.cfg.dce: new global dead code elimination pass 2009-05-26 02:58:57 -05:00
Slava Pestov 015b7afe93 compiler.cfg.checker: new check-rpo word 2009-05-26 02:58:40 -05:00
Slava Pestov 1c45d0e81b compiler.cfg.stack-analysis: progress 2009-05-25 19:18:13 -05:00
Slava Pestov 5d50f4eb5b compiler.cfg.checker: new vocabulary for checking CFG invariants 2009-05-25 19:16:58 -05:00
Slava Pestov 531580ed30 compiler.cfg.builder: don't make basic blocks after terminating calls 2009-05-25 19:16:36 -05:00
Doug Coleman 8da9d0f203 rename peek -> last and update all usages 2009-05-25 16:38:33 -05:00
Doug Coleman 34e1d60578 add a clamp word to math.order, use clamp word throughout libraries 2009-05-24 21:35:50 -05:00
Slava Pestov ffd0db30bf Merge branch 'master' into global_optimization 2009-05-23 15:55:04 -05:00
Slava Pestov c2499cdd55 stack-checker: fix case where invalid code could infer 2009-05-23 15:50:35 -05:00
Slava Pestov f28439329c compiler.cfg.stack-analysis: change how inc-d/inc-r work 2009-05-23 15:47:08 -05:00
Slava Pestov 8478881522 Merge branch 'master' into global_optimization 2009-05-23 01:03:24 -05:00
Joe Groff 483c936eb3 get rid of useless test 2009-05-21 20:56:57 -05:00
Slava Pestov b42bed7e77 CFG optimizer work in progress - adding phi nodes 2009-05-21 16:49:28 -05:00
Slava Pestov 873bb49849 Working on global optimizations 2009-05-19 17:28:13 -05:00
Slava Pestov ba04d5af1e Update documentation for stricter vocabulary search path semantics 2009-05-16 00:29:21 -05:00
Slava Pestov 344f3668e4 Fix escape analysis bug reported by Doug 2009-05-15 17:18:38 -05:00
Slava Pestov d7db5edadc Cleaning up USING: lists for new strict semantics 2009-05-14 16:54:16 -05:00
Slava Pestov 302d829ea9 Fix compiler breakage if a GENERIC# has an incorrect stack effect declaration 2009-05-12 21:23:52 -05:00
Slava Pestov 05146c6907 Remove compiled slot from quotations since its not needed 2009-05-12 03:09:15 -05:00
Slava Pestov 70deacb900 Fix unit tests and load errors for slip removal 2009-05-10 17:03:41 -05:00
Slava Pestov dfb7514a02 Removing slip usage from basis 2009-05-10 15:28:22 -05:00
Slava Pestov 9b419aa0b1 Count megamorphic cache hits 2009-05-07 14:26:08 -05:00
Slava Pestov e55f0d17e5 compiler.tree.modular-arithmetic: convert >integer >fixnum into >fixnum 2009-05-07 12:54:23 -05:00
Slava Pestov 3c19ec1cbb Fix overly-eager strength reduction for mod, and add a type function for >integer (reported by Joe Groff) 2009-05-07 12:32:06 -05:00
Slava Pestov d3b85c14c9 Working on inline caching for tail call sites 2009-05-06 19:22:22 -05:00
Slava Pestov 478d29a175 Better separation of concerns: cpu.{x86,ppc}.assembler no longer depends on compiler.codegen.fixup and cpu.architecture. Rename rt-xt-direct to rt-xt-pic to better explain its purpose 2009-05-06 16:14:53 -05:00
Slava Pestov 0ca1d013f8 Add new RC_ABSOLUTE_PPC_2 relocation type 2009-05-05 20:56:23 -05:00
Slava Pestov c5d3bbd5b6 Fix bool type; its actually 1 byte not 4 in structs. Bug reported by jedahu 2009-05-05 18:37:40 -05:00
Slava Pestov 259586e89e compiler.constants: update compiled-header-size 2009-05-05 15:06:05 -05:00
Slava Pestov 1e2561f863 Make walker work better with call( and breakpoints which are nested inside combinators 2009-05-05 09:12:32 -05:00
Slava Pestov c68e05d3d8 Fix some test failures 2009-05-04 09:44:26 -05:00
Slava Pestov 4d438a3edd Remove cruddy string encoding/decoding code from VM 2009-05-02 13:45:38 -05:00
Slava Pestov 2c78b77f36 Fix infinite loop when compiling a word containing a tuple literal with circular structure in it. This was triggered by call( inline caching in core-foundation.fsevents on Mac OS X 2009-05-01 09:36:53 -05:00
Slava Pestov 7495ad96cb Fix typo in redefine14 test 2009-05-01 08:29:04 -05:00
Slava Pestov a25577d6df Some new compiler tests 2009-05-01 06:48:33 -05:00
Slava Pestov 6f03366e2b Rename enable/disable-compiler to enable/disable-optimizer, and add with-optimizer and without-optimizer combinators 2009-05-01 05:52:05 -05:00
Slava Pestov 23b5888da6 Fix some test failures and add an unportable tag 2009-04-30 22:56:15 -05:00
Slava Pestov e5cdb7ac2d call( fast-path now supports curry and compose 2009-04-30 21:08:29 -05:00
Slava Pestov a79e3eb687 Passing an invalid parameter to 'declare' doesn't break the compiler anymore 2009-04-30 20:40:47 -05:00
Slava Pestov 5fb5c19d61 Machine code is now stored in a byte array instead of an array for add_code_block() 2009-04-30 04:34:35 -05:00
Slava Pestov 515c619202 Non-optimizing compiler now open-codes megamorphic dispatch fast path 2009-04-30 03:37:07 -05:00
Slava Pestov 964fbd0a24 Fix test failures from ratio/complex built-in removal 2009-04-30 00:38:55 -05:00
Slava Pestov 663db67b23 compiler.tree.debugger: wasn't counting intrinsics properly when computing report 2009-04-30 00:27:51 -05:00
Slava Pestov fc4894fbdf Replace ratio and complex built-in types with tuples defined in the library. This frees up two lo-tags, so move array and quotation over to these tags and update compiler for new tags 2009-04-30 00:27:35 -05:00
Slava Pestov 3bbfc57de3 bootstrap.image: remove some duplication from emit-object callers 2009-04-29 23:35:02 -05:00
Slava Pestov bd186b6320 Eliminate 3 instructions from PIC fast path 2009-04-29 21:32:05 -05:00
Slava Pestov deaea55d85 compiler: don't wrap non-inference errors in compile errors, since they indicate compiler bugs; just rethrow them. Add unit test for a PIC regression 2009-04-29 19:39:04 -05:00
Slava Pestov 7f766ab355 Update compiler tests for tag number changes 2009-04-28 21:43:30 -05:00
Slava Pestov c15a4c1c5a Add new relocation type for call sites which may be replaced by ICs 2009-04-28 17:53:14 -05:00
Slava Pestov 5f6c074edd Split up types.c/h into smaller files, remove optimized slot from F_WORD struct 2009-04-28 17:26:11 -05:00
Slava Pestov 5ff2c2e2bf Don't compile predicate engines since there's no gain 2009-04-27 14:10:12 -05:00
Slava Pestov bf0e8606a8 Merge branch 'master' into inline_caching 2009-04-26 21:26:39 -05:00
Slava Pestov dac5203e81 compiler.tree.builder: Fix scoping of a variable by hints vocab 2009-04-26 16:04:44 -05:00
Slava Pestov f94a44f3fd Merge branch 'master' into inline_caching 2009-04-26 09:22:27 -05:00
Slava Pestov 7e84daf0f1 Move (execute) to kernel.private 2009-04-26 02:42:37 -05:00
Doug Coleman 28cacc8d61 fix some compiler tests 2009-04-26 02:23:33 -05:00
erg acd312ab19 fix IN: for compiler tests 2009-04-26 00:51:47 -05:00
Slava Pestov 8ea3db9eef Get rid of a 'rot' 2009-04-25 22:35:30 -05:00
Slava Pestov 7aa65b5b5f Fixing new method dispatch implementation 2009-04-25 19:41:27 -05:00
Slava Pestov d03b1eef01 Compile methods of generic words since the generic word itself doesn't get compiled 2009-04-24 20:54:30 -05:00
Slava Pestov 3dc9fdf9db Fleshed out new dispatch code 2009-04-24 20:43:01 -05:00
Slava Pestov 5649cc7a0a Compiler warnings are no more 2009-04-23 22:17:25 -05:00
Slava Pestov c2fe2a4fea Improve stack checker documentation 2009-04-23 03:48:32 -05:00
Slava Pestov 1dd3ed519f Revert part of an earlier ccompiler.tree.checker hange to fix smalltalk.eval regression 2009-04-22 21:03:53 -05:00
Doug Coleman 7f983f12d4 fix help lint failures, fix example in words 2009-04-22 12:26:28 -05:00
Slava Pestov dea3987ca5 Silly workaround for performance regression 2009-04-22 00:44:06 -05:00
Slava Pestov 057f75e9a1 Refactor compiler.tree.builder to fix various regressions 2009-04-21 23:02:00 -05:00
Slava Pestov 24a22e233c Clean up compiler vocab 2009-04-21 22:33:04 -05:00
Slava Pestov 469c9ee21d Debugging stack checking 2009-04-21 16:09:53 -05:00
Slava Pestov a9b4a724a4 Remove "compiled-status" word prop and simplify associated machinery 2009-04-21 03:23:11 -05:00
Slava Pestov f38d2f91f6 Words which didn't compile cannot be run at all 2009-04-20 22:05:41 -05:00