Slava Pestov
ca9852b541
compiler.tree.propagation.call-effect: hack so that call( doesn't clear the last error
2010-02-03 23:11:33 +13:00
Slava Pestov
edbb980e3f
Revert "macros: macro body is now defined in its own subword, for compile-time stack effect checking"
...
This reverts commit 24de7c52f0c3f21cfcdb80235cac7296b0401c85.
2010-02-03 23:11:29 +13:00
Slava Pestov
d19709c188
vm: modify-code-heap primitive now takes a pair of parameters, update-existing? and reset-pics?. If no generic words were changed, PICs do not need to be reset. If no existing words were redefined, the code heap doesn't have to be traced at all. Speeds up compilation of PEGs since those create lots of compilation units
2010-02-03 23:11:28 +13:00
Slava Pestov
c3f66d49a3
Better error message for call( when quotation has the wrong effect
2010-02-03 23:11:25 +13:00
Slava Pestov
29e1d268b7
generic: rename method-body predicate class to method
2010-02-03 23:11:24 +13:00
Slava Pestov
0ff526f478
macros: macro body is now defined in its own subword, for compile-time stack effect checking
2010-02-03 23:11:22 +13:00
Slava Pestov
83a2de6565
Fix ffi-test library to work with Windows SDK. Turns out MINGW has a different ABI for struct returns than MS's compiler; make the MS ABI the default for cdecl on Windows, and add mingw ABI for libraries that use the MINGW ABI
2010-02-02 04:01:12 -06:00
Slava Pestov
eec325b4a6
compiler.crossref: clean up and fix bug with forgotten classes
2010-02-01 17:20:08 +13:00
Slava Pestov
7f664a6387
Fix a couple of unit tests that were relying on the old compiler crossref structures
2010-01-31 23:26:55 +13:00
Slava Pestov
8a8c47ab1d
compiler.cfg.intrinsics.simd: ignore dummy assert-positive word
2010-01-31 18:19:14 +13:00
Slava Pestov
8f763fe8da
Merge git://github.com/littledan/Factor into littledan
2010-01-31 02:54:58 +13:00
Slava Pestov
8e2e869ec5
stack-checker.dependencies: make conditional dependencies more robust
2010-01-31 01:55:35 +13:00
Slava Pestov
5753d76c98
compiler.crossref: word props were stored the wrong way round
2010-01-30 22:33:27 +13:00
Slava Pestov
351c68094c
compiler.crossref: cleanup
2010-01-30 21:14:40 +13:00
Slava Pestov
93c2428cf4
compiler.crossref: more space-efficient storage of dependency information
2010-01-30 09:29:02 +13:00
Slava Pestov
39aa70aa88
Clean up some code in preparation for a refactoring
2010-01-30 09:29:02 +13:00
Slava Pestov
9b49424070
compiler.crossref: memoize dependency evaluation
2010-01-30 09:29:01 +13:00
Slava Pestov
21abe46414
compiler.crosssref: rename word property
2010-01-30 09:29:00 +13:00
Slava Pestov
65ba4b58d9
stack-checker.dependencies: add tuple layout dependencies for use by 'new' and 'boa'
2010-01-30 09:29:00 +13:00
Slava Pestov
df16224ab2
Re-work flushed dependencies into new compiler cross-referencing framework
2010-01-30 09:29:00 +13:00
Slava Pestov
13f920babb
Add some utility words to stack-checker.dependencies in preparation for a refactoring
2010-01-30 09:28:59 +13:00
Slava Pestov
468a3a74f1
Re-defining a tuple class now invalidates cached quotation stack effects
2010-01-30 09:28:59 +13:00
Slava Pestov
2138b55708
New 'conditional dependency' mechanism for more accurate recording of recompilation information
2010-01-30 09:28:57 +13:00
Slava Pestov
dba5b0be08
compiler.tree.propagation.call-effect: clear out dependency tracking variables to ensure that infer calls made by call( as part of the compile process doesn't pollute the dependencies of the word being compiled
2010-01-30 09:28:57 +13:00
Slava Pestov
1da446d8fc
Code cleanups
2010-01-30 09:28:56 +13:00
Slava Pestov
0738e85df1
Work in progress: record constant-folds of predicate words, and call-next-method invocations, in the same way that method inlining are recorded, for greater recompilation accuracy
2010-01-30 09:28:56 +13:00
Slava Pestov
9d207cc913
Fix regression when forgetting classes
2010-01-30 09:28:55 +13:00
Slava Pestov
ed7f8341e5
More changes so that mixins trigger even less recompilation
2010-01-30 09:28:53 +13:00
Slava Pestov
0a77399242
Add test case for mixin bug Doug found, seems to be fixed now
2010-01-30 09:28:52 +13:00
Daniel Ehrenberg
8f4bd0e7df
Merge branch 'master' of git://factorcode.org/git/factor
2010-01-26 14:14:05 -06:00
Daniel Ehrenberg
8837fe5792
Tests for propagation additions; making fixnum-bit? inline
2010-01-25 20:15:17 -06:00
Doug Coleman
7322c0a400
remove a stray character
2010-01-22 15:07:01 -06:00
Doug Coleman
8ae200d419
Rename accumulator to collector, pusher to selector
2010-01-22 15:00:53 -06:00
Slava Pestov
cf21edd415
compiler: fix docs
2010-01-23 00:46:04 +13:00
Slava Pestov
81967cab35
compiler.test: fix
2010-01-23 00:40:56 +13:00
Slava Pestov
0cbf9c9b50
Move compile-call and related words only meant to be used for debugging to compiler.test
2010-01-23 00:39:56 +13:00
Daniel Ehrenberg
8b04f0f417
Merge branch 'master' of git://factorcode.org/git/factor
...
Conflicts:
basis/compiler/tree/propagation/transforms/transforms.factor
2010-01-20 00:15:55 -06:00
Daniel Ehrenberg
2e5f16da00
Adding compiler transforms in propagation
2010-01-20 00:10:49 -06:00
Slava Pestov
875053d645
compiler.tree.propagation.call-effect: eliminate some dispatch from call( expansion
2010-01-19 21:08:45 +13:00
Slava Pestov
88004434ec
vm: remove primitive table, non-optimizing compiler now looks up primitives with dlsym()
2010-01-19 20:00:33 +13:00
Slava Pestov
e19c6fd76f
compiler.tree.escape-analysis: make tests a bit more robust; a change to boa constructors recently meant dead curries were showing up on certain expansions, this was throwing off the escape-analysis test's unboxed allocation counting. Fix this by having the test run DCE first, and remove a few tests that no longer make sense now
2010-01-18 23:32:34 +13:00
Slava Pestov
0165daf56c
Stop wearing monocle and use the term "entry point" instead of "XT" throughout VM and compiler; also remove two unused relocation types
2010-01-18 20:54:00 +13:00
Slava Pestov
4bf62e6b41
compiler.tree.propagation: ensure that we don't call 'equal?' or 'hashcode' on literals in words being compiled
2010-01-16 20:00:48 +13:00
Slava Pestov
ce05955693
stack-checker: add inputs and outputs words, since 'infer (in>>|out>>) length' was coming up a lot
2010-01-15 08:04:14 +13:00
Doug Coleman
7521807b55
random is generic now -- iota random -> random
2010-01-14 12:48:57 -06:00
Slava Pestov
880fb747fc
Removing integers-as-sequences
2010-01-15 07:15:33 +13:00
Slava Pestov
5770a5f9b3
Fix input-classes of /i and mod, and add some regression tests with various reductions of the original test-case from the terrain demo
2010-01-14 18:15:51 +13:00
Slava Pestov
1c9afb4ccf
compiler.codegen.fixup: cache symbol names, reducing image size by ~200Kb
2010-01-13 23:18:43 +13:00
Slava Pestov
005db61ad6
Rework min and max so that behavior with floats and NaNs is consistent between generic arithmetic and open-coded float intrinsics
2010-01-13 22:20:16 +13:00
Slava Pestov
790674cf89
Rename kernel.private:getenv/setenv to special-object/set-special-object to mirror recent renaming on the VM side
2010-01-13 18:08:18 +13:00
Slava Pestov
5ef9fb5473
More PowerPC non-optimizing compiler backend fixes
2010-01-13 03:09:43 +13:00
Slava Pestov
1e2c0327ee
Add alien-assembly form for inline assembler, works like alien-invoke except calls a user-supplied quotation instead of generating a subroutine call. Replaces FPU status control, SSE detection and read timestamp routines in vm/cpu-x86.*S
2010-01-07 17:39:22 +13:00
Slava Pestov
1e137b6d6a
compiler.tree: remove some code duplication concerning #alien nodes
2010-01-07 16:06:07 +13:00
Slava Pestov
a9f90026df
Update x86-32 for assembly entry point changes
2010-01-06 17:55:20 +13:00
Slava Pestov
d2baa6dde5
vm: move c_to_factor, lazy_jit_compile_impl, throw_impl, set_callstack assembly routines into non-optimizing compiler for x86-64
2010-01-06 15:47:36 +13:00
Slava Pestov
9399a68786
Change how non-volatile register preservation is done in alien callbacks, with the aim of fixing callbacks on PowerPC, and to eventually eliminate assembly code from VM
...
- Simplify calculation of offset in relocation table
- Open-code %alien-callback
- Remove magic_frame hack from context objects
- Move magical return instruction from optimizing compiler backend into callback entry stub
2010-01-03 01:11:51 +13:00
Slava Pestov
8f449f1a82
Get optimizing compiler working without global register variables in VM
2009-12-22 15:42:49 +13:00
Slava Pestov
31a260b74c
vm: big overhaul of non-optimizing compiler
...
- change some primitives into sub-primitives: fixnum+ fixnum- fixnum* inline-cache-miss inline-cache-miss-tail
- rename some relocation types for clarity
- some other minor re-organizations and cleanups
2009-12-15 07:20:09 -05:00
Joe Groff
1ad9dc14b4
fix simd tests
2009-12-05 17:17:16 -08:00
Joe Groff
d674ff8191
simd intrinsic implementation for v*high, v*hs+, vavg, and vsad
2009-12-05 14:52:18 -08:00
Joe Groff
778c21e94c
change compiler.cfg.intrinsics.simd tests to not use types and operations that depend on host cell size
2009-12-04 13:23:31 -08:00
Joe Groff
4116e2aa4e
don't use intrinsics for simd vector element operations when the component size doesn't fit in a fixnum
2009-12-03 12:46:56 -08:00
Slava Pestov
3dee027879
Merge branch 'simd-cleanup' of git://factorcode.org/git/factor into simd-cleanup
2009-12-02 19:09:56 -05:00
Slava Pestov
daf47a539c
RT_HERE now takes its argument from the literal table rather than the parameter table, reducing image size further
2009-12-02 04:55:48 -06:00
Slava Pestov
912b1265fc
Split literal table into literal and parameter tables, literal table is discarded after code block initialization
2009-12-02 04:28:15 -06:00
Joe Groff
ebcaaa0d64
Merge branch 'master' into simd-cleanup
2009-11-26 16:14:46 -08:00
Joe Groff
ea7c5b6d86
fix buggy simd intrinsics
2009-11-26 13:28:40 -08:00
Joe Groff
dcc9e6cbf3
don't try to rewrite redundant test-vector-exprs
2009-11-25 20:06:11 -08:00
Slava Pestov
a684164783
Fix non-tail recursive inline recursive compilation
2009-11-25 19:12:09 -06:00
Joe Groff
8095704010
change name of 'unsign-rep' to more sensible 'signed-rep'
2009-11-24 22:44:12 -08:00
Joe Groff
90cd1b47f7
make math.vectors.simd tests pass again
2009-11-24 18:30:12 -08:00
Joe Groff
5aebf7ffba
update compiler.cfg.intrinsics.simd tests
2009-11-24 12:50:27 -08:00
Joe Groff
804c8c3bcc
fix simd intrinsic compilation
2009-11-24 11:37:28 -08:00
Joe Groff
faf4df9043
scalar fallbacks for simd intrinsics
2009-11-23 21:24:55 -08:00
Slava Pestov
08b6ebc7fa
Factor source files should not be executable
2009-11-21 17:50:43 -06:00
Joe Groff
3b17573c7c
break simd intrinsics into a separate vocab so they can be intrinsified before the simd methods compile
2009-11-19 11:53:46 -08:00
Joe Groff
4700890b70
fix primitive emit fallback for simd intrinsics
2009-11-18 21:29:51 -08:00
Joe Groff
b54a925d1e
enable simd intrinsics and fix first-pass compiler errors
2009-11-18 20:32:05 -08:00
Joe Groff
e6295d5640
tests for all simd intrinsics
2009-11-18 18:20:58 -08:00
Joe Groff
3698595d39
properly handle -vector-op and case words in simd.backend
2009-11-18 12:36:41 -08:00
Joe Groff
132ce61bb5
start on tests for simd intrinsics
2009-11-17 11:13:16 -08:00
Slava Pestov
43c1ae0a44
compiler.cfg: 'basic-block new hashcode' should not throw an exception; fixes tools.deploy.test.11
2009-11-16 02:01:36 -06:00
Slava Pestov
6d0598a385
heap-size now has a partial-eval instead of being foldable, and the partial-eval adds a dependency on the C type word. Fixes problem where redefining a struct didn't update specialized array
2009-11-15 11:26:37 -06:00
Joe Groff
00b9506439
compilation fixes
2009-11-14 23:43:22 -06:00
Joe Groff
993631e44c
Merge branch 'master' of git://factorcode.org/git/factor into simd-cleanup
...
Conflicts:
basis/math/vectors/simd/functor/functor.factor
2009-11-14 21:02:39 -06:00
Joe Groff
9efff4a322
backend fixups
2009-11-14 20:59:03 -06:00
Slava Pestov
aaad7b6b16
compiler.tree.propagation.branches: fix recent constraints change
2009-11-13 07:16:41 -06:00
Slava Pestov
b201cc4a6f
Fixing call( inline caching
2009-11-13 04:32:33 -06:00
Slava Pestov
eb165a5450
Instead of bumping the definition counter every time in the VM, bump it only if stack effects changed or macros were redefined
2009-11-13 03:52:14 -06:00
Slava Pestov
6c7ce97380
compiler.tree.propagation: fix bug in constraints that caused retain stack overflow
2009-11-13 03:22:57 -06:00
Slava Pestov
a841083ebe
compiler.tree.propagation.transforms: inline push if types are known. Speeds up reverse-complement, sort, sum-file benchmarks
2009-11-12 17:24:32 -06:00
Slava Pestov
2e861d2ff8
compiler.tree.propagation: implementing missing case in branch constraints
2009-11-12 17:24:11 -06:00
Slava Pestov
06fb247b8c
Invalidate inline caches used by call( and execute( when words are redefined
2009-11-12 16:09:07 -06:00
Joe Groff
db1ae26801
sever lingering dependencies on simd from compiler
2009-11-11 16:08:40 -06:00
Slava Pestov
3b75114015
Fixing test failures
2009-11-11 02:40:24 -06:00
Slava Pestov
68f3087c1c
Faster identity-hashcode primitive; fast path now opencoded by the compiler
2009-11-11 02:27:19 -06:00
Joe Groff
d52d56f335
backend for choosing available SIMD intrinsic implementations
2009-11-10 23:35:46 -06:00
Slava Pestov
4168ffbcee
New identity-hashcode primitive
2009-11-10 21:18:54 -06:00
Slava Pestov
b4d997d17a
compiler.cfg.intrinsics.slots: new implementation of value-tag
2009-11-10 17:30:27 -06:00
Slava Pestov
e0d3878c00
stack-checker: tighten some screws in error reporting
2009-11-09 00:17:24 -06:00
Joe Groff
96060c32e9
Merge branch 'master' into simd-cleanup
2009-11-08 21:54:53 -06:00
Slava Pestov
8f9d4e3d2c
stack-checker: split off stack-checker.dependencies from stack-checker.state
2009-11-08 20:34:46 -06:00
Slava Pestov
c00b1df581
compiler.crossref: fix bugs
2009-11-08 06:22:39 -06:00
Slava Pestov
5dc20ef385
Use a more compact representation for "compiled-uses" and "compiled-generic-uses" word-props; reduces image size
2009-11-08 06:08:04 -06:00
Joe Groff
b09b0f0686
Merge branch 'master' into simd-cleanup
2009-11-07 22:26:09 -06:00
Slava Pestov
0731485d86
compiler: fix alien tests
2009-11-06 01:04:02 -06:00
Joe Groff
f780bbddc3
deprimitivize tuck and put it to pasture
2009-11-05 22:47:05 -06:00
Daniel Ehrenberg
d860a2febb
custom inlining for diff and intersect, when given a literal sequence. this cuts off 1/3 of the running time of a microbenchmark
2009-11-05 13:13:27 -06:00
Joe Groff
a279b360eb
Merge branch 'master' into simd-cleanup
...
Conflicts:
basis/math/vectors/simd/functor/functor.factor
2009-11-05 11:27:08 -06:00
Joe Groff
cf28782533
more intrinsic madness
2009-11-05 09:52:57 -06:00
Slava Pestov
3d392cbc2c
compiler: fix intrinsics tests on 32-bit
2009-11-04 18:28:46 -06:00
Joe Groff
54e9baa7e4
change ##horizontal-add-vector insn to better match what the HADD SSE instructions do (add adjacent pairs, pack results)
2009-11-04 12:18:01 -06:00
Slava Pestov
4b31c10830
compiler.cfg.intrinsics.allot: fix inline byte array allocation on 32-bit platforms
2009-11-03 23:44:20 -06:00
Slava Pestov
d0a784d61c
compiler: update unit tests for 4-bit tag change
2009-11-03 21:40:29 -06:00
Joe Groff
e12c708797
new intrinsic generators, pt1
2009-11-03 21:38:45 -06:00
Slava Pestov
f102bd7ded
cpu.x86: update %box-displaced-alien for introduction of address field
2009-11-03 03:17:43 -06:00
Slava Pestov
bc45ceb05b
Merge branch 'master' into new_gc
2009-11-02 20:34:13 -06:00
Slava Pestov
6b1f651208
compiler.cfg.intrinsics: uncomment line commented out by mistake
2009-11-02 20:33:14 -06:00
Slava Pestov
f1479e800b
Merge branch 'master' into new_gc
2009-11-02 20:11:43 -06:00
Slava Pestov
bb202805d8
compiler.cfg: don't generate useless methods in instruction meta-programming. reduces bootstrap time
2009-11-02 20:11:29 -06:00
Slava Pestov
6299c42564
Minor bug fixes for 4-bit tags
2009-11-02 17:41:36 -06:00
Joe Groff
9ac1cec6c4
move all simd intrinsics to compiler.cfg.intrinsics.simd, and only load it when math.vectors.simd is loaded
2009-11-02 15:17:34 -06:00
Joe Groff
6cf6252753
update compiler.tree.propagation.simd, and don't load it till math.vectors.simd is loaded
2009-11-02 15:09:16 -06:00
Slava Pestov
d65296b334
vm: 4 bit tags, new representation of alien objects makes unbox-any-c-ptr more efficient (work in progress)
2009-11-02 04:25:54 -06:00
Slava Pestov
5da0b1a22e
Merge branch 'master' into new_gc
2009-10-30 21:04:37 -05:00
Joe Groff
eecef661cf
exile roll and -roll to basis/shuffle and mark them deprecated
2009-10-30 17:11:45 -05:00
Slava Pestov
051dcb6849
Merge branch 'master' into new_gc
2009-10-30 03:03:05 -05:00
Joe Groff
11dd8720f4
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-30 00:42:37 -05:00
Joe Groff
ca8d4c15f4
add ##shl-vector-imm and ##shr-vector-imm insn variants. use merge/shr instead of compare/merge to do signed unpacks
2009-10-30 00:41:19 -05:00
Doug Coleman
1ee8c8f5eb
sigma -> map-sum
2009-10-29 14:34:04 -05:00
Doug Coleman
ff14283c2d
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-28 17:26:23 -05:00
Doug Coleman
9ff38fb56c
(normalize-path) -> absolute-path, canonicalize-path -> resolve-symlinks
2009-10-28 17:25:50 -05:00
Joe Groff
c6761710a6
Merge branch 'master' of http://factorcode.org/git/factor
...
Conflicts:
basis/locals/locals.factor
basis/peg/peg.factor
extra/infix/infix.factor
2009-10-28 16:17:24 -05:00
Joe Groff
22a9be5ea5
update existing code to use :> ( ) when possible
2009-10-28 16:11:33 -05:00
Doug Coleman
b5fd809209
memq? -> member-eq?, sorted-memq? -> sorted-member-eq?
2009-10-28 15:02:00 -05:00
Doug Coleman
82992f6dd4
reverse-here -> reverse!
2009-10-28 14:40:15 -05:00
Doug Coleman
a57e990af7
parsed -> suffix!, add append!
2009-10-28 13:38:27 -05:00
Joe Groff
33f373162d
fix load errors from bootstrapping
2009-10-28 12:51:03 -05:00
Slava Pestov
ba37429563
filter-here -> filter!
2009-10-28 00:44:05 -05:00
Slava Pestov
03e70d1aa9
remq -> remove-eq, delq -> remove-eq!
2009-10-28 00:23:08 -05:00
Slava Pestov
b8a51c7eb0
delete-nth -> remove-nth!
2009-10-27 23:41:57 -05:00
Slava Pestov
34d3d4962a
change-each -> map!, deep-change-each -> deep-map!
2009-10-27 22:32:56 -05:00
Joe Groff
8b6665c57e
update existing code for [let change
2009-10-27 22:05:37 -05:00
Joe Groff
9ea0ce5c40
update compiler.tree.cleanup test
2009-10-26 23:01:35 -05:00
Slava Pestov
8715b67644
Merge branch 'master' into new_gc
2009-10-24 01:31:15 -05:00
Slava Pestov
496d8a990e
compiler.tree.propagation: fix broken corner cases in bitand and shift transforms, exposed by Hugh Aguilar's LC53 benchmark
2009-10-24 01:09:32 -05:00
Slava Pestov
47d6507548
compiler.tree.propagation.transforms: fix problem with 'shift' transform when input was a bignum
2009-10-23 07:50:56 -05:00
Slava Pestov
322510525d
Merge branch 'master' into new_gc
2009-10-23 03:56:46 -05:00
Slava Pestov
5681f67101
compiler: fix stack effect inference bug discovered by x6j8x; it was possible to define a word which did not compile but could be called anyway
2009-10-23 03:27:25 -05:00
Slava Pestov
b78202e816
Merge branch 'master' into new_gc
2009-10-22 05:40:57 -05:00