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
Slava Pestov
92781739c8
Some new compiler tests
2009-05-01 06:48:33 -05:00
Slava Pestov
e9e095f240
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
a70a2c0e31
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
Slava Pestov
05f3f9dcb9
Fixing unit tests for stack effect inference changes
2009-04-20 21:15:19 -05:00
Slava Pestov
8414693142
stack-checker: trust word declarations instead of recursively checking them
2009-04-20 18:44:45 -05:00
Slava Pestov
5165d811d5
Changing the stack effect of a generic word could break the compiler
2009-04-20 04:21:00 -05:00
Slava Pestov
ec49307c88
Never inline default methods, and fix inlining of methods with hints
2009-04-20 03:27:18 -05:00
Slava Pestov
e811dd6192
Reverse compiler.errors => tools.errrs dependency to reduce deploy image size
2009-04-18 03:21:31 -05:00
Slava Pestov
e9e15ffb27
Merge branch 'master' of git://factorcode.org/git/factor
2009-04-17 16:17:36 -05:00
Doug Coleman
332bde4173
use iota in a few places
2009-04-17 16:17:11 -05:00
Slava Pestov
f80c89f128
Add fatal? flag to error types; non-fatal errors are hidden by default in error list, not shown in summary
2009-04-17 16:16:12 -05:00
Slava Pestov
99a120a146
Merge branch 'smarter_error_list'
2009-04-17 15:50:36 -05:00
Slava Pestov
ce76331fd6
Fixing more unit tests
2009-04-17 15:50:03 -05:00
Doug Coleman
7a1841f59b
(( -- )) eval -> eval( -- )
2009-04-17 15:49:21 -05:00
Doug Coleman
dba4c0d589
fixing compiler errors in basis
2009-04-17 12:46:04 -05:00
Slava Pestov
0a5b076c11
Make the walker infer
2009-04-16 23:14:11 -05:00
Slava Pestov
a69d404f74
Start documenting compiler internals
2009-04-16 16:24:14 -05:00
Slava Pestov
c0874e64cc
Documentation updates
2009-04-15 18:19:35 -05:00
Slava Pestov
83b7ac3f3a
Forgetting a definition removes compile error
...
Notify definition observers with nested compilation units
2009-04-15 00:27:02 -05:00
Slava Pestov
65b27354ad
Merge branch 'master' into smarter_error_list
2009-04-14 15:07:22 -05:00
sheeple
a4e62dfdba
Fix for math.parser syntax change
2009-04-13 14:47:39 -05:00
Slava Pestov
a2cff89591
Call notify-error-observers
2009-04-13 14:40:03 -05:00
Slava Pestov
e52be965f0
Finish moving compiler.errors to basis
2009-04-13 02:50:23 -05:00
Slava Pestov
d227fcd33f
Move compiler.errors to basis
2009-04-13 02:18:41 -05:00
Slava Pestov
c4be8bd65a
Refactor error code so that error types are registered; listener prints a summary of errors
2009-04-12 16:08:46 -05:00
Slava Pestov
deae1d7bbb
Fix bootstrap
2009-04-10 04:41:26 -05:00
Slava Pestov
0a7485190b
compile-error-type => source-error-type; make test failures global
2009-04-10 03:52:12 -05:00
Slava Pestov
37e278ed02
Use [ ] [ ] map-reduce instead of unclip [ ] reduce
2009-04-06 17:50:54 -05:00
Slava Pestov
268abfcf2a
Remove method-specs in favor of M\
2009-04-06 02:59:59 -05:00
Slava Pestov
932d44cab8
Small speedup for code using H{ } clone and with-scope
2009-03-31 08:16:04 -05:00
Slava Pestov
39b53817b9
Small size reduction for deployed images
2009-03-31 08:15:27 -05:00
Doug Coleman
5460a5375e
change makefile to use .so instead of .a on unix
2009-03-28 14:41:48 -05:00
U-SLAVA-DFB8FF805\Slava
40631ec2a9
Fix alien tests on Windows; LoadLibraryEx does not like UNC paths
2009-03-28 02:37:07 -05:00
Doug Coleman
6f743b280d
hopefully last fix for alien.factor
2009-03-27 17:58:31 -05:00
sheeple
1cf5c519cc
fix ffi tests on 32bit
2009-03-27 14:39:45 -05:00
sheeple
e04efe5f5a
use .a instead of .so on unix
2009-03-27 10:41:24 -05:00
Doug Coleman
73b8bf1193
fix using list
2009-03-26 19:58:23 -05:00
Doug Coleman
63e06589bd
don't normalize-path in add-library
2009-03-26 18:56:10 -05:00
Doug Coleman
b771758ff7
fix load errors, help lint
2009-03-26 10:45:52 -05:00
Doug Coleman
6ca02e9b37
Merge branch 'master' of http://factorcode.org/git/factor into db
2009-03-25 23:01:05 -05:00
Doug Coleman
8b7fcce399
update code for usages of add-library
2009-03-25 23:00:19 -05:00
Slava Pestov
ff07c8f352
Fix compiler.tree.debugger tests
2009-03-25 22:53:03 -05:00
Doug Coleman
4b275c2861
make add-library normalize-path, use libfactor-ffi-tests for testing ffi
2009-03-25 13:05:34 -05:00
Slava Pestov
9b8dd01c0b
Fix bitrot in compiler.tree.debugger
2009-03-25 10:11:58 -05:00
Slava Pestov
9ebd9c8d01
Add unit test for regression
2009-03-22 21:42:15 -05:00