Commit Graph

542 Commits (c286074fe56c53a19f16c20bc5778bdc7e5a739d)

Author SHA1 Message Date
Doug Coleman 1cb6bc99da 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 90017eb248 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 ef32eb2e72 Fix bootstrap and unit test 2009-06-26 17:44:33 -05:00
Slava Pestov 96baede36a 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 22fa524db1 compiler.cfg.stack-analysis: split up into three vocabs 2009-06-24 13:54:43 -05:00
Slava Pestov f3cf8fad2b compiler.cfg.linear-scan: fix unit tests 2009-06-24 13:54:12 -05:00
Slava Pestov c53aca6016 compiler.cfg.linear-scan: fix coalescing to take lifetime holes into account 2009-06-23 21:32:51 -05:00
Slava Pestov 387f6df9e5 compiler.cfg.linear-scan: Debugging resolve pass 2009-06-22 00:24:51 -05:00
Slava Pestov 330bea3cc2 compiler.cfg.linear-scan.resolve: unit tests 2009-06-21 00:23:34 -05:00
Slava Pestov 5a78956956 compiler.cfg.linear-scan: Working on resolve pass 2009-06-21 00:20:01 -05:00
Slava Pestov c1839200dd compiler.cfg.linear-scan.assignment: correctly compute live registers at GC check points 2009-06-20 15:33:12 -05:00
Slava Pestov 5c912504d7 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 2f15ac3c8f compiler.cfg.linear-scan: Fix a couple of bugs 2009-06-19 03:42:42 -05:00
Slava Pestov 1f5f8393c3 compiler.cfg.linear-scan: Further progress on inactive interval handling 2009-06-17 15:27:20 -05:00
Slava Pestov 29327a787c Remove initial-quot feature 2009-06-15 13:07:15 -05:00
Slava Pestov 6fb7dca404 compiler.cfg.linear-scan.resolve: fix compile error 2009-06-14 17:00:52 -05:00
Slava Pestov 285c8cecc6 Add some failing unit tests exposing bugs in initial-quot: implementation 2009-06-13 18:34:27 -05:00
Slava Pestov 64f93e41a9 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 d0f6a7d048 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 2dcdfa2d8e compiler.cfg: add a declaration to fix tools.deploy.test.11 2009-06-09 03:36:16 -05:00
Slava Pestov 45a2105449 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 4fbe99400f Merge branch 'master' of git://factorcode.org/git/factor 2009-06-07 21:46:41 -05:00
Slava Pestov 9ad9600764 Remove %dispatch-label since its tehe same on all platforms; fix %gc on PowerPC 2009-06-07 21:46:28 -05:00
Slava Pestov 70b75b8dea Linear scan: implement live range intersection 2009-06-06 01:04:12 -05:00
Slava Pestov 7c207ffa12 compiler.cfg.optimizer: disable CFG checker by default 2009-06-05 18:07:22 -05:00
Slava Pestov 04c72d0a72 Linear scan: correctly compute live spill slots 2009-06-05 18:06:47 -05:00
Slava Pestov 440b464ec1 compiler: more informative trace-compilation 2009-06-05 17:32:37 -05:00
Slava Pestov 5bb235d38f compiler.cfg.checker: run if a variable is set 2009-06-05 17:32:12 -05:00
Slava Pestov 81b2a39070 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 ade5db2405 cpu.x86: fix small register intrinsics on x86-64 2009-06-03 03:22:46 -05:00
Slava Pestov 6d04bf9c4a Linear scan: build live ranges 2009-06-03 03:22:27 -05:00
Slava Pestov 9da8cfe942 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-02 18:30:25 -05:00
Slava Pestov 2d231f066a GC checks now save and restore registers 2009-06-02 18:23:47 -05:00
Doug Coleman 19d6285035 fix load error 2009-06-01 09:34:28 -05:00
Slava Pestov 7dd08892b2 Fix for recent word renaming 2009-06-01 03:19:35 -05:00
Slava Pestov 9e987e8642 Merge branch 'master' into global_optimization 2009-06-01 03:12:32 -05:00
Slava Pestov d558545b65 Remove obsolete optimization 2009-06-01 03:05:49 -05:00
Slava Pestov 3a9922d161 Fix compiler errors 2009-06-01 03:00:10 -05:00
Slava Pestov f09b36424c Code cleanup 2009-06-01 02:32:42 -05:00
Slava Pestov b389dcf441 Redo compiler.codegen.fixup and get %dispatch to work 2009-06-01 02:32:36 -05:00
Slava Pestov fc152ef210 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 2c8223fdaf Fix loop handling in stack-analysis 2009-05-31 19:04:26 -05:00
Slava Pestov 32f17f3e14 Fix scoping issue in compiler.cfg.linear-scan.assignment 2009-05-31 18:21:23 -05:00
Slava Pestov 1a52414bb1 Rename _gc to ##gc 2009-05-31 18:21:11 -05:00
Slava Pestov 692b479302 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 3e00dc8c8d Start cleaning up stack analysis 2009-05-30 13:22:30 -05:00
Slava Pestov e04df76f60 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 280736ab00 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 743550f19c Put GC checks in the right place when linearizing, and generate _dispatch-labels 2009-05-29 05:36:04 -05:00
Slava Pestov 76d74c16af 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 ceb332f596 compiler.cfg.alias-analysis: ##peek needs to set alias class of output value 2009-05-28 18:19:01 -05:00
Slava Pestov dbf18927b9 compiler.cfg.liveness: correct handling of phi nodes 2009-05-28 17:54:27 -05:00
Slava Pestov fc5587bda3 Test updates 2009-05-28 02:50:07 -05:00
Slava Pestov ecece1d08b 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 1fa465d77f Fix alias analysis 2009-05-28 02:48:58 -05:00
Slava Pestov 7b88756fd0 Add a with-scope so that optimize-tree doesn't pollute namespace 2009-05-27 18:58:54 -05:00
Slava Pestov 117cb78d6b Fixing local optimizations 2009-05-27 18:58:41 -05:00
Slava Pestov f3688c9373 Better CFG checker 2009-05-27 18:58:14 -05:00
Slava Pestov dadb9a2c50 Add phi elimination pass 2009-05-27 18:58:01 -05:00
Slava Pestov 3b79d61496 Add a new ##allocation union to remove some code duplication 2009-05-27 18:55:49 -05:00
Slava Pestov 2025823ba6 Remove old local DCE pass 2009-05-27 17:55:15 -05:00
Slava Pestov ce25e0ad8d New local-optimization combinator removes some boilerplate 2009-05-26 19:56:56 -05:00
Slava Pestov 1db81da264 Refactoring low-level optimizer to support stack analysis pass 2009-05-26 19:31:19 -05:00
Slava Pestov eda44f28a6 Move maybe-set-at to assocs 2009-05-26 18:45:37 -05:00
Slava Pestov ccb662c60e Fix another bug in stack-analysis 2009-05-26 03:42:39 -05:00
Slava Pestov 7ea4e255fb compiler.cfg.stack-analysis: make it pass more tests 2009-05-26 02:59:14 -05:00
Slava Pestov 8b022f926c compiler.cfg.dce: new global dead code elimination pass 2009-05-26 02:58:57 -05:00
Slava Pestov e0841fa695 compiler.cfg.checker: new check-rpo word 2009-05-26 02:58:40 -05:00
Slava Pestov a08bbde2e7 compiler.cfg.stack-analysis: progress 2009-05-25 19:18:13 -05:00
Slava Pestov dead771b3f compiler.cfg.checker: new vocabulary for checking CFG invariants 2009-05-25 19:16:58 -05:00
Slava Pestov a2b982e247 compiler.cfg.builder: don't make basic blocks after terminating calls 2009-05-25 19:16:36 -05:00
Doug Coleman 407377fc98 rename peek -> last and update all usages 2009-05-25 16:38:33 -05:00
Doug Coleman a54c78007b add a clamp word to math.order, use clamp word throughout libraries 2009-05-24 21:35:50 -05:00
Slava Pestov b8aa633d58 Merge branch 'master' into global_optimization 2009-05-23 15:55:04 -05:00
Slava Pestov 43a1834e0b stack-checker: fix case where invalid code could infer 2009-05-23 15:50:35 -05:00
Slava Pestov 145f1dbeef compiler.cfg.stack-analysis: change how inc-d/inc-r work 2009-05-23 15:47:08 -05:00
Slava Pestov 96975474b0 Merge branch 'master' into global_optimization 2009-05-23 01:03:24 -05:00
Joe Groff 3276ae3a08 get rid of useless test 2009-05-21 20:56:57 -05:00
Slava Pestov 6af61656f3 CFG optimizer work in progress - adding phi nodes 2009-05-21 16:49:28 -05:00
Slava Pestov e58fcd485c Working on global optimizations 2009-05-19 17:28:13 -05:00
Slava Pestov 66a9416473 Update documentation for stricter vocabulary search path semantics 2009-05-16 00:29:21 -05:00
Slava Pestov dedbd14945 Fix escape analysis bug reported by Doug 2009-05-15 17:18:38 -05:00
Slava Pestov fb6df472a2 Cleaning up USING: lists for new strict semantics 2009-05-14 16:54:16 -05:00
Slava Pestov b67b617746 Fix compiler breakage if a GENERIC# has an incorrect stack effect declaration 2009-05-12 21:23:52 -05:00
Slava Pestov 6e08e29a3a Remove compiled slot from quotations since its not needed 2009-05-12 03:09:15 -05:00
Slava Pestov 65faa3fda3 Fix unit tests and load errors for slip removal 2009-05-10 17:03:41 -05:00
Slava Pestov a366909c25 Removing slip usage from basis 2009-05-10 15:28:22 -05:00
Slava Pestov 3591f6c684 Count megamorphic cache hits 2009-05-07 14:26:08 -05:00
Slava Pestov 75d9946bd7 compiler.tree.modular-arithmetic: convert >integer >fixnum into >fixnum 2009-05-07 12:54:23 -05:00
Slava Pestov 466533d509 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 581d017b46 Working on inline caching for tail call sites 2009-05-06 19:22:22 -05:00
Slava Pestov c93d876075 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 a961e17ef1 Add new RC_ABSOLUTE_PPC_2 relocation type 2009-05-05 20:56:23 -05:00
Slava Pestov 58d0e17936 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 428f443c9c compiler.constants: update compiled-header-size 2009-05-05 15:06:05 -05:00
Slava Pestov 029d93a838 Make walker work better with call( and breakpoints which are nested inside combinators 2009-05-05 09:12:32 -05:00
Slava Pestov fb5b48c71a Fix some test failures 2009-05-04 09:44:26 -05:00
Slava Pestov a63ad6a7a5 Remove cruddy string encoding/decoding code from VM 2009-05-02 13:45:38 -05:00
Slava Pestov f2ec59d658 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 21ac396128 Fix typo in redefine14 test 2009-05-01 08:29:04 -05:00