Björn Lindqvist
d3c91bea72
compiler.cfg.linear-scan.*: stub docs and tests
2014-11-16 06:25:54 -08:00
Björn Lindqvist
3b86d4b9ba
compiler.cfg.def-use: docs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
90b31d543b
compiler.cfg.instructions: more docs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
f06f59b956
Docs: smallish improvements to compiler vocabs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
bc5c23b162
compiler.cfg.linear-scan.assignment: stub docs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
1eac4afc8b
compiler.cfg.linear-scan.allocation.state: sub docs and tests
2014-11-16 06:25:53 -08:00
Björn Lindqvist
0a30bd9218
compiler.cfg.stack-frame: stub docs and tests for vocab
2014-11-16 06:25:53 -08:00
Björn Lindqvist
8a0b4c3d26
compiler.cfg.build-stack-frame: stub docs and tests for vocab
2014-11-16 06:25:53 -08:00
Björn Lindqvist
cbc8681187
Docs: compiler.cfg.instructions improvements
2014-11-16 06:25:53 -08:00
Björn Lindqvist
18d7be2c05
compiler.tests.alien: tests to make sure #1021 stays dead
2014-11-12 19:41:32 -08:00
Doug Coleman
466fe4559d
ffi_test: Can actually test 62 and 63 on windows.
2014-11-10 10:30:35 -08:00
Doug Coleman
564a67ce7e
compiler.tests.alien: Don't test ffi calls 61-63 on Windows.
2014-11-09 10:52:16 -08:00
Doug Coleman
7cfa9d9518
assocs: Make map-index-as support seq or assoc exemplars and move map-index, map-index-as to assocs because they need to use new-assoc. Make zip-index-as support assoc exemplars. Fix up docs and tests.
...
assocs.extras: Remove zip-as and move tests to assocs.
2014-11-08 18:18:00 -08:00
Doug Coleman
1b5711cc42
compiler.tests.alien: Add structs with uint and ulonglong pairs and return them from an FFI call. macosx32 seems to be working, hopefully this will break it or confirm that it's working. Linux32 is broken, hopefully this will show how.
2014-11-08 13:39:47 -08:00
Doug Coleman
56f1b87a6f
basis, extra: Use zip-index.
2014-11-08 00:46:30 -08:00
Doug Coleman
e494e3965b
compiler.tests.alien: Check in a failing unit test. Structure is getting returned improperly.
2014-11-07 15:34:10 -08:00
Benjamin Pollack
2c3dd8c3c8
Remove executable bit from tons of files that aren't
2014-11-05 20:40:42 -08:00
Doug Coleman
1ee9a8ea13
compiler.cfg.stacks.local: Have unit test load prettyprint implementation for ds-loc so that it always prints as "D 4".
2014-10-22 10:31:27 -07:00
Björn Lindqvist
cb83f3b39b
compiler.tests.alien: use the with-callback combinator to plug the memory leaks in the tests
2014-10-22 07:02:55 -07:00
John Benediktsson
af2a53239e
compiler: resolve duplicate doc for "compiled".
2014-10-19 08:27:59 -07:00
Björn Lindqvist
961d0c4eb9
compiler.codegen.gc-maps: update docs so that they match how factors gc-maps currently work
2014-10-19 14:17:54 +02:00
Björn Lindqvist
a617855aef
Docs: fixing smaller help-lint nitpicks
2014-10-19 14:05:06 +02:00
Björn Lindqvist
164af978ba
compiler.cfg.*: more stub docs for cfg construction words
2014-10-19 13:45:42 +02:00
Björn Lindqvist
81a84266d3
compiler.codegen.*: help for resolve-label misplaced -- move it
2014-10-19 13:41:45 +02:00
Björn Lindqvist
83cf4b9d57
compiler,cpu: more docs
2014-10-17 23:18:57 +02:00
Björn Lindqvist
476ebf5b25
compiler.cfg.*: more docs, tests and a small refactoring of the
...
admissible-registers word
2014-10-17 23:18:57 +02:00
Björn Lindqvist
88fb349bd0
stack-checker,compiler: docs for stack-checker and compiler words
2014-10-17 23:18:57 +02:00
Björn Lindqvist
425031e4b3
compiler.codegen.gc-maps: initial docs
2014-10-17 23:17:49 +02:00
Björn Lindqvist
275082d603
compiler.*: doc improvements
2014-10-17 23:17:49 +02:00
Björn Lindqvist
be372831f5
compiler.tests.alien: wrap all callback tests in special
...
unit-test-with-destructor blocks, that way they dont leak memory in the
callback heap
2014-09-29 07:30:22 -07:00
Doug Coleman
4c6435934b
compiler.cfg.stacks.vacant: Fix docs for word rename.
2014-09-08 17:48:22 -07:00
Björn Lindqvist
ffacc8370d
compiler.cfg.stacks.vacant: ##call instructions clear the set of overinitialized locations
2014-09-08 14:54:18 -07:00
Björn Lindqvist
9836d6a1d0
VM: move the stack scrubbing logic to call_frame_slot_visitor to avoid visiting the callstack twice
...
primitive_minor_gc() iterates the stack twice, first to scrub stack
locations, then to trace overinitialized ones and gc roots. By running
visit_callstack() before visit_stack_elements() you only need to do it
once.
2014-09-08 14:54:18 -07:00
Björn Lindqvist
8cd2eee8e0
compiler.codegen.gc-maps: the gc-map-needed? word can be called with f
2014-09-08 14:54:17 -07:00
Björn Lindqvist
8c0f9698de
compiler.codegen.gc-maps: check-d>> and check-r>> now used in the code generator
...
the approach looks sound and now the gc can be fixed to take advantage
of the extra info.
2014-09-08 14:54:17 -07:00
Björn Lindqvist
46082d836a
compiler.cfg.stacks.vacant: invert meaning of 0/1 for overinit:ed locs to make some logic simpler
2014-09-08 14:54:17 -07:00
Björn Lindqvist
70e4f2a8b7
compiler.cfg.instructions: added check-d and check-r slots to gc-map
...
the data is output from compiler.cfg.stacks.vacant in a reasonable
format but not yet used for code generation.
2014-09-08 14:54:17 -07:00
Björn Lindqvist
ecead801c1
compiler.cfg.stacks.vacant: more docs and removed usage of byte-arrays
2014-09-08 14:54:17 -07:00
Björn Lindqvist
ab5e629243
compiler.cfg.stacks.vacant: sub docs seeded with a stolen comment from uninitialized.factor
2014-09-08 14:54:17 -07:00
Björn Lindqvist
40ee3cdcbb
compiler.cfg.stacks.vacant: fix usings and remove commented out code
2014-09-08 14:54:17 -07:00
Björn Lindqvist
e961a03837
compiler.cfg.stacks.vacant: compiler pass replacing uninitialized for more accurate stack maps
...
This pass uses a better algorithm for keeping track of all stack
manipulations which means that the stack maps it assigns are much more
precise.
2014-09-08 14:54:17 -07:00
Björn Lindqvist
d1032c159a
compiler.cfg.dataflow-analysis: generic for configuring the "block skipping"
...
To accurately record uninitialized/overinitialized stack locations,
kill blocks needs to be analyzed. Now you can make it so by overriding
ignore-block?.
2014-09-08 14:54:17 -07:00
Björn Lindqvist
3a6c14765d
vm: add the gc-info struct
2014-08-25 14:52:11 -07:00
John Benediktsson
7609ab6eda
compiler.cfg: fix some help-lint warnings.
2014-08-14 09:59:27 -07:00
Björn Lindqvist
c3253406e3
compiler.cfg.*: more docstrings for compiler words
2014-08-13 11:01:11 -07:00
Björn Lindqvist
c6784020aa
compiler.cfg.*: initial docs for dataflow analysis vocabs
2014-08-13 11:01:11 -07:00
Björn Lindqvist
6560778d2a
compiler.cfg.*: stub docs for register scheduling vocabs
2014-08-13 11:01:11 -07:00
Björn Lindqvist
769ca5550f
compiler.cfg.*: docs for compiler words
2014-08-13 11:01:11 -07:00
Björn Lindqvist
1225abeeaf
Docs: more compiler-related documentation
2014-08-13 11:01:10 -07:00
Björn Lindqvist
60ffe0680e
kernel: new combinator 2with = with with
2014-07-22 07:40:13 -07:00
Doug Coleman
8c8f58dfee
compiler.codegen-docs: Make example clickable.
2014-07-18 13:37:38 -05:00
Doug Coleman
f9d9d8d64c
compiler.cfg.instructions: Messed up a patch. oops.
2014-07-17 18:19:10 -05:00
Doug Coleman
1d0f0fb98a
compiler.cfg.instructions: Fix using.
2014-07-17 15:48:41 -05:00
Doug Coleman
d173da94c1
compiler.cfg: Rename doc -> docs in filenames so the docs load.
2014-07-17 15:32:29 -05:00
John Benediktsson
e0801a632e
compiler.tree.modular-arithmetic: make a partial test and add some information to the XXX: comment.
2014-07-09 09:27:13 -07:00
John Benediktsson
cc7dfc146b
Revert "compiler.tree.modular-arithmetic: revert strict patch so we can investigate further."
...
This reverts commit ec8377e125
.
2014-07-08 19:18:34 -07:00
John Benediktsson
ec8377e125
compiler.tree.modular-arithmetic: revert strict patch so we can investigate further.
2014-07-08 16:59:58 -07:00
Doug Coleman
beb2d1df3a
ffi: Add some tests to ensure that 64bit integers are handled properly.
2014-07-07 17:02:36 -07:00
Doug Coleman
712aa303db
compiler, stack-checker docs: Fix for 32-bit builds.
2014-07-03 12:21:17 -07:00
Doug Coleman
a6ce3e9113
compiler.tree.modular-arithmetic: Don't require that fixnum+ works on tuple slots marked fixnum. This is probably a speed regression. XXX revisit
2014-07-03 12:12:46 -07:00
John Benediktsson
bf473ec943
compiler.cfg: fix some docs.
2014-06-08 18:20:27 -07:00
John Benediktsson
14f425c57c
compiler.tree.modular-arithmetic: strict versions shouldn't be here.
2014-06-08 16:16:24 -07:00
John Benediktsson
b573c40402
compiler.tree: teaching it bignum>fixnum-strict.
2014-06-08 13:40:38 -07:00
Björn Lindqvist
280620c55f
Docs: docs for compiler-related words
2014-06-08 11:48:31 -07:00
Björn Lindqvist
160df8b3f1
Docs: for compiler.cfg.* vocabs
2014-06-08 11:48:31 -07:00
Björn Lindqvist
9c901b9c0e
Docs: for compiler, vm and combinators
2014-06-08 11:48:30 -07:00
Björn Lindqvist
2d7f344109
Docs: more docs for compiler.cfg.* words
2014-06-08 11:48:30 -07:00
Björn Lindqvist
3d7b0dbf0a
Docs: for compiler.cfg.regsters
2014-06-08 11:48:30 -07:00
Björn Lindqvist
395a490b90
Docs: documentation for stack-checker.* and compiler.* vocabs
2014-06-08 11:48:30 -07:00
Björn Lindqvist
fa097c7a56
Docs: for compiler.cfg and cpu.architecture words
...
Conflicts:
basis/cpu/architecture/architecture-docs.factor
2014-06-08 11:48:30 -07:00
Björn Lindqvist
c76a994f27
Docs: new stub documentation for vocabs in compiler.cfg
2014-06-08 11:48:29 -07:00
Björn Lindqvist
c3f9c0a9a3
compiler.cfg.intrinsics.simd: the ulonglong case is correct, it just shouldn't convert the value to a fixnum
2014-06-07 17:00:52 +02:00
Björn Lindqvist
644dac1fc0
compiler.cfg.intrinsics.simd: remove a case in sign-bit-mask that is probably unused
2014-06-07 14:39:19 +02:00
Björn Lindqvist
4f49edaa66
VM: tests that rely on the integer values of the vm_error_type needs to be updated
2014-06-07 12:13:59 +02:00
John Benediktsson
05c35ebda3
kernel: change errors to be in kernel.private.
2014-06-04 14:33:02 -07:00
Björn Lindqvist
6627a3327b
kernel: symbolic constants for the various kernel errors
2014-06-04 23:16:40 +02:00
John Benediktsson
57f9d78892
improve help by linking to types directly.
2014-05-23 20:20:15 -07:00
John Benediktsson
25ff85331c
compile.codegen.relocation: make doc example work on 32-bit.
2014-05-11 08:22:01 -07:00
Björn Lindqvist
e2eebdec4d
Docs: mostly fixes for doc errors found by help lint
2014-05-10 17:13:49 -07:00
Björn Lindqvist
5bccede3b6
Docs: docs for compiler.* and cpu.* words
2014-05-10 17:13:49 -07:00
Björn Lindqvist
4f9f2b862f
Docs: docs for compiler-related vocabs
2014-05-10 17:13:49 -07:00
Björn Lindqvist
ea48d13731
Docs: for compiler.cfg and compiler.codegen
2014-05-10 17:13:49 -07:00
Björn Lindqvist
4cd49e56b2
Docs: for node and #call tuples
2014-05-10 17:13:49 -07:00
Björn Lindqvist
0bb3e2397b
Docs: more compiler documentation
2014-05-10 17:13:48 -07:00
Björn Lindqvist
6a8336047d
Docs: initial docs for the compiler.cfg.* vocabs
2014-05-10 17:13:48 -07:00
Björn Lindqvist
b11e912b44
Docs: initial docs for compiler.tree.propagation.* vocabs
2014-05-10 17:13:48 -07:00
Björn Lindqvist
669bb0a77e
Docs: stub docs for some compiler-related words
2014-05-10 17:13:48 -07:00
John Benediktsson
9d3a654443
namespaces: removing make-assoc in favor of explicit get's.
2014-04-24 09:16:14 -07:00
John Benediktsson
b910ca090c
compiler.tree.propagation.transforms: previous H{ } and HS{ } optimization no longer necessary.
2014-01-08 09:56:08 -08:00
John Benediktsson
47a0ebcc99
compiler.tree.propagation.transforms: faster H{ } and HS{ } clone.
2013-11-25 16:42:59 -08:00
John Benediktsson
97530d86d4
compiler.tree.propagation.transforms: rename to non-negative-fixnum?.
2013-11-25 12:58:21 -08:00
John Benediktsson
9bb5e34762
compiler.tree.propgation.transforms: make bit? use integer>fixnum.
2013-11-25 12:48:48 -08:00
John Benediktsson
9e65ccaf9f
compiler.tree.propagation.simple: check output types length.
2013-04-26 17:21:22 -07:00
John Benediktsson
5e0e6119e3
compiler.tree.propagation.transforms: intersect and diff should return type of set2.
2013-03-27 07:21:39 -07:00
John Benediktsson
77a3641bb6
compiler.tree.propagation.transforms: also fix diff.
2013-03-26 19:06:05 -07:00
John Benediktsson
c4d832ce4d
compiler.tree.propagation.transforms: fix intersect and add intersects?.
2013-03-26 19:04:50 -07:00
Doug Coleman
33a4117787
compiler: Fix tuple literals in tests.
2013-03-24 01:09:37 -07:00
Doug Coleman
8160bb036d
compiler.cfg.linear-scan.live-inervals: Rename live-interval
2013-03-23 22:59:18 -07:00
Doug Coleman
5f377c0849
compiler: Rename value-info, live-interval
2013-03-23 22:56:47 -07:00
Doug Coleman
97f6d171ed
compiler.tree: Fix compiler test with merge-state
2013-03-23 22:56:16 -07:00
Doug Coleman
ee4f4ec997
source-files.errors: Rename error-type.
2013-03-23 21:25:19 -07:00
Doug Coleman
fa0b4c1a5b
compiler: Use lookup-library.
2013-03-23 21:23:23 -07:00
John Benediktsson
d0ad18a64e
compiler.cfg.ssa.construction.tdmsc: fix previous broken commits.
2013-03-23 18:44:49 -07:00
John Benediktsson
15f9ba2763
Revert "compiler.cfg.ssa.construction.tdmsc: more use of ?adjoin."
...
This reverts commit 6bf55a6d89
.
2013-03-23 18:39:15 -07:00
John Benediktsson
3f1a426210
Revert "compiler.cfg.ssa.construction.tdmsc: pass visited set on stack."
...
This reverts commit ec2834300b
.
2013-03-23 18:25:53 -07:00
John Benediktsson
7744498ad2
compiler.cfg.ssa.construction.tdmsc: pass visited set on stack.
2013-03-23 18:13:17 -07:00
John Benediktsson
56a7cf4df2
compiler.cfg.ssa.construction.tdmsc: more use of ?adjoin.
2013-03-23 17:57:41 -07:00
John Benediktsson
93fb7805b0
compiler: more use of ?adjoin.
2013-03-23 17:47:07 -07:00
Doug Coleman
f820215b1e
alien.libraries: Rename library to lookup-library.
2013-03-23 17:16:46 -07:00
Doug Coleman
eb20c5e22e
compiler.tree.modular-arithmetic: Fix test for iota change.
2013-03-23 17:12:16 -07:00
Doug Coleman
9f92b12e3b
compiler.tests: Fix test for <groups> change.
2013-03-23 17:11:27 -07:00
Doug Coleman
033711bf6a
compiler.errors: Rename linkage-error.
2013-03-23 17:10:11 -07:00
Doug Coleman
8c19602ae9
assocs: Add of and ?of. Change all the things at once! Fixes #701 .
2013-03-23 14:59:07 -07:00
Doug Coleman
f9ea61bf91
basis/extra: Update last usages of <sliced-groups> to <groups>.
2013-03-23 12:08:18 -07:00
Doug Coleman
8917ae9ad7
grouping: Remove <groups>, old <sliced-groups> is now <groups>. Fixes
2013-03-23 11:37:51 -07:00
John Benediktsson
460d19f56c
compiler.tree: fewer namespace lookups.
2013-03-21 19:36:07 -07:00
John Benediktsson
7da4a74588
compiler: fewer namespace lookups.
2013-03-21 19:11:20 -07:00
John Benediktsson
972281987c
compiler.cfg.intrinsics: intrinsics on inline words are not supported.
2013-03-20 10:59:45 -07:00
John Benediktsson
2bbec0dd61
stack-checker: more use of hash-sets.
2013-03-16 13:41:51 -07:00
Doug Coleman
875e45a640
sequences: Add some short useful factors. Clean up the use of longest.
2013-03-11 17:47:52 -07:00
John Benediktsson
b8097f9221
compiler: cleaner use of sets.
2013-03-10 17:21:27 -07:00
John Benediktsson
7f3f90eb8d
compiler: more use of hash-sets.
2013-03-10 16:13:31 -07:00
John Benediktsson
1776893c36
compiler.tree.dead-code.simple: curry live-values.
2013-03-10 16:13:31 -07:00
John Benediktsson
ac95c024f3
compiler.cfg.loop-detection: more use of hash-sets.
2013-03-10 10:06:48 -07:00
John Benediktsson
c7c951f207
compiler.cfg.ssa.construction: more use of hash-sets.
2013-03-10 10:03:11 -07:00
John Benediktsson
229e85459e
compiler.tree.tuple-unboxing: simpler checks.
2013-03-10 09:36:52 -07:00
John Benediktsson
2025ffe292
compiler.tree.modular-arithmetic: more use of hash-sets.
2013-03-08 15:58:16 -08:00
John Benediktsson
262a46a3f4
compiler.cfg.loop-detection: more use of hash-sets.
2013-03-08 12:38:50 -08:00
John Benediktsson
ff9af6423f
compiler.tree.recursive: more use of hash-sets.
2013-03-08 12:34:23 -08:00
John Benediktsson
9d43e21563
compiler.cfg.write-barrier: more use of hash-sets.
2013-03-08 12:30:37 -08:00
John Benediktsson
88626d38ca
compiler.cfg.ssa.construction: more use of hash-sets.
2013-03-08 12:24:06 -08:00
John Benediktsson
af1b167c28
compiler.tree.propagation.info: inline <value-info>.
2013-03-08 12:19:24 -08:00
John Benediktsson
b97a1a0753
compiler: fix stack effects to indicate visited is same object.
2013-03-08 12:16:02 -08:00
John Benediktsson
bf35114fec
compiler: use hash-sets to track visited sets.
2013-03-08 11:04:47 -08:00
John Benediktsson
04af5f2ffb
hash-sets: faster implementation based on hashtables.
2013-03-07 21:43:17 -08:00
John Benediktsson
5908186301
compiler.cfg.alias-analysis: use clear-set.
2013-03-07 21:35:00 -08:00
John Benediktsson
5751f6d309
compiler.tree.propagation.transforms: use integer>fixnum-strict in shift.
2013-03-05 08:19:31 -08:00
John Benediktsson
7a3a801bde
words: adding inline-recursive?.
2013-03-04 16:09:56 -08:00
John Benediktsson
5a7e7b8d9b
compiler.tree.propagation.known-words: retry this change, some issue with use vocabs.
2013-01-22 07:09:49 -08:00
John Benediktsson
f5c898734c
Revert "compiler.tree.propagation.known-words: adding known outputs for some words."
...
This reverts commit 16d8e6555b
.
2013-01-22 06:42:58 -08:00
John Benediktsson
7a63013916
compiler.tree.propagation.known-words: adding known outputs for some words.
2013-01-21 20:28:17 -08:00
Doug Coleman
fe677bac2f
compiler.tree.propagation.recursive: Generalizing intervals in the propagation pass ignored types. Fixes #770 .
2013-01-01 18:47:23 -08:00
Doug Coleman
63e55ac813
compiler.cfg.liveness: Break the infinite loop--add the base-pointer as f to start with, and replace it with the real one if there's not a circular chain. Fixes #22 again.
2013-01-01 14:47:54 -08:00
Doug Coleman
125e4befd3
compiler.cfg.liveness: Add parallel-copy method for lookup-base-pointer*. Adjust lookup-base-pointer* stack effect to take two parameters. Still retain stack overflows, but more correct now...
2013-01-01 14:16:51 -08:00
Alex Vondrak
8b44af4717
compiler.cfg.renaming.functor: fix ##parallel-copy methods
2012-12-31 11:26:46 -08:00
Alex Vondrak
e90ce0865c
compiler.cfg.ssa.destruction.leaders: break off leader-map to resolve circular dependencies (oops)
2012-12-31 11:20:57 -08:00
Alex Vondrak
dcb27c51e4
compiler.cfg.liveness: still kill defs by leaders, but keep original
...
vregs in the live-sets so accurate info (e.g., representations) can
still be looked up (issue #22 )
2012-12-31 11:05:05 -08:00
Alex Vondrak
fc91dcf530
compiler.cfg.ssa.destruction: alien-call-insns are too hairy to coalesce (issue #22 )
2012-12-31 11:04:57 -08:00
Alex Vondrak
86a15ad47b
compiler.cfg.liveness: look up leaders (if possible) so liveness analysis doesn't break after leaving SSA (issue #22 )
2012-12-31 11:04:52 -08:00
Alex Vondrak
b08c077023
compiler.cfg.parallel-copy: make sure new vregs used to break cycles in parallel-copy-rep update the leader-map (issue #22 )
2012-12-31 11:04:44 -08:00
Alex Vondrak
ff1c2c293b
compiler.cfg.ssa.interference.live-ranges: fix kill-indices for ##parallel-copy (issue #22 )
2012-12-31 11:04:38 -08:00
Alex Vondrak
ae0b77a0c4
compiler.cfg.ssa.cssa: split the definitions of ##phis so live-ranges don't interfere (issue #22 )
...
See the explanation after the proof of Lemma 1 in "Revisiting Out-of-SSA
Translation for Correctness, Code Quality, and Efficiency" (Boissinot et
al.) for why this is necessary.
2012-12-31 11:04:26 -08:00
Doug Coleman
a0dd953e33
starting point - Fix bootstrap; I broke it in merging. Disable environment variables because the compiler isn't loaded yet and can't call C ffi functions, and tools.test loads this vocab.
...
Disable intrinsics in cpu.x86.64 for now, since they invoke the compiler
Fix ##branch renaming to ##branch,
To work on this branch:
./factor -include=math -i=boot.image
./factor -run=listener
USE: compiler USE: tools.test save
enable-optimizer
Error message is now:
T{ vregs-shouldn't-interfere f 409 424 }
2012-12-31 11:03:45 -08:00
Slava Pestov
07227f22f9
WIP
2012-12-31 11:03:33 -08:00
John Benediktsson
013160df9a
change some "2drop 2drop" to "4drop".
2012-10-23 12:21:30 -07:00
John Benediktsson
cf3c197743
compiler.tree.propagation: revert cleanup, this was more correct.
2012-10-05 15:00:49 -07:00
John Benediktsson
f7d58fff90
compiler.tree.propagation: throw the proper error in >fixnum methods.
2012-10-05 09:54:51 -07:00
John Benediktsson
80b39bd4f2
compiler.tree.propagation: cleanup known-words a bit.
2012-10-05 09:47:27 -07:00
John Benediktsson
040b94f5ce
compiler.tree.propagation: make sure integer>fixnum-strict infers a fixnum.
2012-10-05 04:17:43 -07:00
Alex Vondrak
f75f99ecc9
compiler.cfg.copy-prop: kludge to make sure ##phis get updated
2012-09-12 15:14:11 -07:00
Alex Vondrak
4008edfdf8
move compiler.cfg.graphviz & compiler.cfg.gvn from basis to extra, just to keep organized
2012-09-12 15:14:07 -07:00
Alex Vondrak
51b3b1fd87
compiler.cfg.graphviz: tweak code & output a little
2012-09-12 15:14:06 -07:00
Alex Vondrak
d6849da7ec
compiler.cfg.graphviz: refactoring
2012-09-12 15:14:06 -07:00
Alex Vondrak
64b541759e
add crappy experimental code for compiler.cfg.graphviz & compiler.cfg.gvn
2012-09-12 15:14:06 -07:00
John Benediktsson
e72e1a340f
compiler.tree.propagation: fix >fraction types.
2012-09-11 07:42:39 -07:00
John Benediktsson
e84e508256
math.ratios: speed up some operations on ratios.
2012-09-10 19:53:25 -07:00
John Benediktsson
ec6baefce3
compiler.tree.cleanup: fix "-1 shift" tests.
2012-09-10 19:24:23 -07:00
John Benediktsson
a4f264509d
math: cleaner "2/" speedup by using custom inlining.
2012-09-10 17:59:03 -07:00
John Benediktsson
b6c069f99a
compiler.cfg.representations.selection: removing 10^ in favor of 10^.
2012-09-05 09:25:26 -07:00
Doug Coleman
27f445d505
assocs: Add sift-keys and sift-values. Remove three other implementations
...
of sift-values and use the new one.
2012-08-23 22:36:10 -07:00
John Benediktsson
465a969b61
layouts: defining "fixnum-bits".
2012-08-21 18:05:59 -07:00
Doug Coleman
cd9dd9d752
core: Throw an error when assigning a bignum to a fixnum tuple slot if the bignum doesn't fit. Fixes #594 .
2012-08-03 14:59:59 -07:00
John Benediktsson
6a183718fa
compiler.cfg: don't need to escape the symbol here.
2012-08-02 15:14:42 -07:00
John Benediktsson
3a7a7ac86b
compiler.codegen: instruction counter is a global.
2012-08-02 15:06:04 -07:00
Doug Coleman
2996ef41ff
sequences: Fix tests that broke when nth could only be integers. Undo integer>fixnum in iota nth. See bug #582 .
2012-07-25 22:17:24 -07:00
Doug Coleman
c936f9d5e5
modular-arithmetic: Fix unit test. Should expect integer>fixnum, not >fixnum.
2012-07-23 11:51:44 -07:00
Doug Coleman
fb4e3ad9bc
compiler: Fix bitand on ratios, floats. Fix shift on ratios, floats. Add integer>fixnum. Fixes #500 .
2012-07-23 09:31:12 -07:00
John Benediktsson
4e72d80256
Using "same?" in more places.
2012-07-21 10:22:44 -07:00
Doug Coleman
bf8d455e9c
compiler: Fix /mod simplications in dead-code, add unit tests. Fixes #544
2012-07-21 03:41:42 -07:00
Doug Coleman
d979478bc4
stack-checker: meta-d was a word and symbol, now meta-d word and (meta-d) symbol
...
issuse #358
2012-07-20 12:30:14 -07:00
Doug Coleman
99ec318a98
compiler.tree.debugger: Remove make-assoc
2012-07-19 17:48:02 -07:00
John Benediktsson
559b5bfa5b
using the new H{ } make.
2012-07-19 09:50:09 -07:00
Doug Coleman
42f4dc36b2
namespaces: Rename ``bind`` to ``with-variables``. Update a few places that called ``global [ ] with-variables`` to use ``with-global``.
2012-07-19 00:02:47 -07:00
Doug Coleman
7c77597b09
issue #358 : fix a couple compiler errors
2012-06-21 08:35:47 -07:00
Doug Coleman
1c3deddf61
issue #358 : Rename all of the words depends-on-* to add-depends-on*
2012-06-21 08:35:45 -07:00
John Benediktsson
d1f3b326e5
math: using if-zero in more places.
2012-06-18 14:32:39 -07:00
Doug Coleman
3507b9bad7
classes:
...
- Allow methods to dispatch off union{ } and intersection{ } classes.
- Add not{ } anonymous-complement syntax.
- Define class-name for anonymous-union/intersection/complement and maybes, and clean up pprint.
- Change maybe: foo to maybe{ foo }
- Call sort-classes when making anonymous-union/anonymous-intersection classes so that they are canonicalized.
2012-05-03 19:45:30 -07:00
Joe Groff
c86d92a219
fix compiler.codegen tests
2011-12-14 12:51:12 -08:00
Joe Groff
c9cc98d124
compiler.constants: remove unused constants
2011-12-14 09:56:45 -08:00
Joe Groff
e21f316583
vm: store stack frame size in code blocks
...
Change modify-code-heap primitive so it takes a sixth element in each array for the frame size.
2011-12-14 09:56:45 -08:00
Joe Groff
47fc91e948
command-line: don't pull in tools.errors
...
tools.errors brings the debugger with it, which bloats deploy image size
2011-12-07 10:52:58 -08:00
Joe Groff
2e4d6f724b
compiler: fix failing test
2011-12-06 21:11:44 -08:00
Doug Coleman
80385770ef
compiler: The non-optimizing compiler is too slow with smart combinators in the compiler. Speed up bootstrap by not using them.
2011-12-05 14:50:51 -08:00
Doug Coleman
2b87eaa1b5
generalizations: Refactor stack-checker so that smart combinators can be used with curry and compose.
2011-11-27 20:25:22 -08:00
Joe Groff
943596575a
use radix literals
2011-11-23 19:03:40 -08:00
Joe Groff
f225bf7f55
compiler.cfg.finalization: reenable scheduling
...
Prolog safepoint appears to work with it enabled
2011-11-23 11:11:27 -08:00
Joe Groff
6498bc65ce
compiler: emit safepoints in optimized prologs
2011-11-23 11:11:25 -08:00
Doug Coleman
f7700809c5
compiler tests: fix using, add tests to make sure instance? inlines
2011-11-23 01:01:11 -08:00
Doug Coleman
b37bebb17f
compiler.tree.propagation.transforms: fix infinite recursion that was breaking prettyprint
2011-11-23 00:48:05 -08:00
Doug Coleman
f90bc5cdb6
classes: optimize instance? for classoids
2011-11-22 20:38:07 -08:00
Doug Coleman
82c5388f68
classes: add syntax for intersection{ and union{ anonymous classes. make classoid a mixin.
2011-11-22 18:49:42 -08:00
Doug Coleman
cab0369fec
classes: Make methods dispatch on maybes. Fix a couple bugs in the implementation of maybe. classoid? is now a dumb test if an object could be a well-formed classoid; valid-classoid? tests for well-formedness. Move maybe tests. Make pprint* work better on methods.
2011-11-22 15:12:20 -08:00
Doug Coleman
fac17c10ba
classes.maybe: move maybe definition from classes.union to classes.maybe
2011-11-22 02:46:36 -08:00
Doug Coleman
067f9830ef
classes.union: Define a maybe: word that makes a tuple that acts as an anonymous union for a type and f. Updated all the places we define UNION: ?foo foo POSTPONE: f ;. Fixes #416 and lots of headaches.
2011-11-22 01:56:13 -08:00
Joe Groff
248066c710
code beautification
2011-11-13 16:10:26 -08:00
Joe Groff
9a19f82470
compiler.tree.propagation: missed using
2011-11-13 16:10:25 -08:00
Joe Groff
873208f986
compiler: more peephole tests for shl/sar
2011-11-13 16:10:24 -08:00
Joe Groff
4261d8bb8d
compiler: tighten (simd-select) output class
...
Ints and smaller (or shorts and smaller on 32-bit) can be assumed to be fixnums. Fixes #393
2011-11-13 16:10:23 -08:00
Joe Groff
d79b462f75
compiler: add intrinsic for PMOVMSKB/MOVMSKP[SD]
...
Combined with a fast bit-count this will let us rice byte-counting.
2011-11-13 16:10:20 -08:00
Slava Pestov
910748819d
Now that #foo and ##foo are symbols we can remove a bunch of \
2011-11-12 22:04:26 -08:00
Joe Groff
e0dc236725
cpu.*.bootstrap: clear faulting flag directly
...
No reason to go through a safepoint in unwind-native-frames really.
2011-11-12 13:02:57 -08:00
Doug Coleman
6cca0ea468
compiler.cfg: Rename <##foo> to ##foo, in the low-level IR
2011-11-11 19:48:38 -08:00
Joe Groff
c31530caec
vm: strip out call-counting profiler
...
This makes the separate "code" and "entry_point" fields in word and quotation redundant, so also remove them to reclaim an additional cell per word and quotation object, which should help with #318 .
2011-11-10 16:01:07 -08:00
Doug Coleman
eb2a0c611b
compiler.cfg: Change low-level IR constructors from ##foo to <##foo>
2011-11-06 23:02:46 -08:00
Doug Coleman
d65bd97a54
compiler.tree: Renamed high-level IR node constructors to <#foo> from #foo. Moving towards making classes/word names not conflict.
2011-11-06 23:02:45 -08:00
Doug Coleman
9048233d27
compiler.tree.dead-code: Rewrite /mod to /i or mod in the dead-code pass in the high level optimizer. Fixes #279 .
2011-11-06 19:23:26 -08:00
Doug Coleman
c731dc6edb
Rename lookup to lookup-word.
2011-11-06 16:00:00 -08:00
Joe Groff
8cf18d1a82
remove BSD,solaris,etc. misc platform support code
2011-11-02 17:13:51 -07:00
Slava Pestov
70056d756b
compiler.cfg.builder: add test to ensure that fast union predicates do not contain a conditional
2011-10-29 17:11:04 -07:00
Slava Pestov
5a46b45312
compiler.tree.propagation: more accurate output type for 'tag' primitive
2011-10-29 17:11:04 -07:00
Slava Pestov
e5a308d56a
compiler.tree.debugger: disable length limit when printing optimized. quotation
2011-10-29 17:11:03 -07:00
Joe Groff
402e1155a5
vm: resumably handle signals from leaf procedures
2011-10-27 21:18:18 -07:00
Joe Groff
c06be95816
compiler: no spurious safepoint at start of loops
2011-10-27 21:14:48 -07:00
Joe Groff
41c36752fc
compiler.cfg.tco: clean up commented-out old code
2011-10-27 21:14:47 -07:00
Joe Groff
6f75e84d93
compiler.cfg.tco: teach TCO about safepoints
2011-10-27 21:14:46 -07:00
Joe Groff
e449fef4e3
compiler.cfg.builder: safepoint loops and epilogs
2011-10-27 21:14:46 -07:00
Joe Groff
0c022f2454
compiler: add ##safepoint IR insn
2011-10-27 21:14:46 -07:00
Joe Groff
98fa51f0e0
compiler: rt-safepoint and rel-safepoint words
2011-10-27 21:14:45 -07:00
Doug Coleman
51c033a1f6
Fix all failures in the linux64 build email
2011-10-24 19:33:09 -07:00
Doug Coleman
f9257959fd
Rename class to class-of
2011-10-24 06:47:42 -05:00
John Benediktsson
f4a6e10818
More cleanup of unused stuff.
2011-10-19 11:01:16 -07:00
John Benediktsson
80e1c8e3f2
Eliminate duplicate syntax for stack effects "(" no longer drops and is identical to the old "((", which is now removed.
2011-10-18 13:19:39 -07:00
Joe Groff
dbda6cb40b
compiler.tree.dead-code: fix test
...
It was using "read" in an optimization test, but since "read" is now inline, it wasn't getting the expected optimized quotation back.
2011-10-17 21:23:10 -07:00
John Benediktsson
81714b8dc3
More lint cleanups.
2011-10-16 19:33:16 -07:00
John Benediktsson
378786599d
Cleanup lint warnings.
2011-10-14 11:47:24 -07:00
John Benediktsson
6417f36397
namespaces: adding a "with-global" word to replace "global [ ] bind".
2011-10-13 17:21:59 -07:00
John Benediktsson
1987deb359
Fix M: stack effects.
2011-10-13 16:41:17 -07:00
John Benediktsson
4baf14972f
sequences: adding ?last for symmetry.
2011-10-13 13:04:24 -07:00
Slava Pestov
ae286fb7ef
callback-error: don't use -e until we fix issue #245
2011-10-10 21:25:50 -07:00
Slava Pestov
7bc38641f9
compiler.tree.identities: the identity on mod was useless too, because we already have a rewrite rule which handles this case in compiler.tree.propagation
2011-10-10 12:34:21 -07:00
Slava Pestov
dc36fd712d
compiler.cfg.representations: fix unit test, it depended on hashing order which changed recently
2011-10-10 12:15:41 -07:00
Slava Pestov
3a0ffceed9
compiler.tree.propagation.transforms: fix rem and mod custom inlining
2011-10-10 12:12:53 -07:00
Slava Pestov
7a4ab74703
compiler.codegen.gc-maps: fix tests
2011-10-10 12:07:09 -07:00
Slava Pestov
901ee2434c
Fix custom-inlining for mod and rem, which was converting these calls to bitand in some cases, even if the input was not known to be an integer. Fixes #243
2011-10-09 13:51:35 -07:00
Slava Pestov
b4588629ab
Remove identities on / and rem, which were no-ops because integer-derived-ops would return an empty array
2011-10-09 13:51:03 -07:00
Doug Coleman
31175eb5cc
Mixin classes in redefine25 test are forgotten, but words still reference them -- forget those words, too. Fixes #143 .
2011-10-07 10:49:17 -07:00
Doug Coleman
181f11faa8
Make M\ throw an error upon lookup failure. Change method -> ?lookup-method, lookup-method is the throwing version of ?lookup-method. Fixes #229 .
2011-10-03 15:49:49 -07:00
Slava Pestov
f8e475485a
Add RT_INLINE_CACHE_MISS relocation type to avoid frequent dlsym lookups when compiling PICs. Fixes #123
2011-10-03 00:26:21 -07:00
Slava Pestov
72d3c6e791
Fix linkage-errors test to not clobber its own linkage error
2011-10-03 00:26:21 -07:00
Slava Pestov
05f7419f2f
Rework non-optimizing compiler backend to use compiler.codegen.relocation
2011-10-03 00:26:21 -07:00
Slava Pestov
b89e9a549b
Split up compiler.codegen.fixup into compiler.codegen.{gc-maps,labels,relocation}
2011-10-03 00:25:47 -07:00
Doug Coleman
44ef1d3698
compiler.tree.modular-arithmetic needs shallow-spread>quot
2011-10-02 22:21:11 -07:00
Slava Pestov
daf40ea0c6
Fix infinite loop and empty-dlist error when an error is thrown from a callback running in a thread other than the initial thread. This addresses part of issue #92
2011-10-02 21:59:09 -07:00
Slava Pestov
06218d5d12
compiler.cfg.builder.alien: fix compilation of callbacks which unconditionally throw errors
2011-10-02 19:52:12 -07:00
Doug Coleman
671f19d70f
Remove all non-core uses of (scan-token)
...
Add scan-datum
Add scan-number
Document more words
Fixes #225 .
2011-10-02 12:00:08 -07:00
Doug Coleman
76580da5d5
Refactor the lexer/parser to expose friendlier words for scanning tokens. The preferred top-level words now throw an exception on EOF.
...
CREATE -> scan-new
CREATE-CLASS -> scan-new-class
CREATE-WORD -> scan-new-word
CREATE-GENERIC -> scan-new-generic
scan -> (scan-token)
scan-token now throws on eof
(scan-word) returns word/number/f
scan-word now throws on eof
scan-word-name expects a non-number
Fixes #183 .
Fixes #209 .
2011-09-29 11:28:28 -07:00
Doug Coleman
3826febfae
Fixes the symptom but not the problem. See bug #201 .
2011-09-26 17:32:34 -07:00
John Benediktsson
4f42c72012
specialized-arrays: performed some cleanup.
...
Specifically,
• Created >c-array to be replacement for >T-array.
• Created cast-array to be generic replacement for all T-array-cast words.
• Created c-array@ to be generic replacement for T-array@ words.
• Replaced usages of <T-array> with T <c-array>
• Replaced usages of <direct-T-array> with T <c-direct-array>
• Replaced usages of >T-array with T >c-array
• Replaced usages of T-array-cast with T cast-array
• Replaced usages of malloc-T-array with T malloc-array.
• Removed malloc-T-array.
• Removed T-array-cast.
• Removed T-array@.
• Removed >T-array.
I also added (but didn't change any code to use):
• T c-array-type, returns T-array
• T c-array?, returns T-array?
• c-array{ T ... }, returns T-array{ ... }
Bootstraps just find on Mac OS X. Also `load-all test-all` works for me.
2011-09-26 11:37:51 -07:00
Joe Groff
2bd6de9a02
slots: pre-create the "at", "nth", and "global" slots to make deterministic the currently nondeterministic ambiguity between accessors:change-* and assocs:change-at, sequences:change-nth, and namespaces:change-global
2011-09-19 10:03:43 -07:00
Doug Coleman
bf2a96e9e0
Remove Windows CE from core/ basis/ and build-support/
...
Rename the winnt singleton to windows in core/ basis/ extra/
Rename boot images winnt -> windows
Fixes #84 .
2011-09-18 23:19:06 -05:00
John Benediktsson
499778d808
compiler.tree.escape-analysis.allocations: simplify stack effect.
2011-09-17 08:14:13 -07:00
Slava Pestov
736cebe729
Fix linkage-errors tests for recent changes
2011-09-13 20:42:36 -07:00
Joe Groff
d6668caf7d
compiler.cfg.builder.alien: fix caller-linkage to return the DLL and not the library tuple again; fixes issue #121
2011-09-13 15:10:48 -07:00
Joe Groff
5703e8d7a1
alien.libraries, compiler.cfg.builder.alien: if `dlopen` fails during `<library>`, call `dlerror` and store the error message in the library object; put the dlerror message in the linkage-error when a word from the library is compiled
2011-09-12 23:25:59 -07:00
Joe Groff
b6e0f0180b
alien.libraries, compiler.cfg.builder.alien: include the result of dlerror/GetLastError in the linkage-error for missing symbols
2011-09-12 23:25:59 -07:00
Slava Pestov
7c3827190b
Tease out symbol name and library in undefined_symbol() handler, for friendlier errors when calling an unresolved C function name. Fixes #93
2011-09-12 00:56:24 -07:00
Slava Pestov
edddffdadd
compiler.cfg.dependence: Add ##allot to control dependency chain, so that we don't re-order an allocation and initialization with an alien call. The alien call might GC, exposing uninitialized memory to the GC. Fixes #53 , fixes #58 , fixes #20 .
2011-08-28 21:25:39 -07:00
Slava Pestov
34f71ea042
compiler.cfg.debugger: add random-scheduling word.
...
Run 'random-scheduling "compiler" test' to find bugs in compiler.cfg.dependencies.
2011-08-28 21:25:37 -07:00
Slava Pestov
3ed1910ab1
compiler.cfg.scheduling: remove old scheduling test code, adding a better way of testing scheduling
2011-08-28 21:25:35 -07:00
Erik Charlebois
64252dbdbc
32 and 64 bit Linux PPC support
2011-05-23 23:36:14 -04:00
Slava Pestov
c36d73e242
Change do-callback to register the current thread with the callback, instead of busy waiting for the current callback to become the right one before returning. Fixes 100% CPU usage issue with system-alert. Thanks to Blei and ex-rzr for doing preliminary analysis of the issue
2011-04-12 21:48:54 -04:00
Slava Pestov
5a3c5c7749
compiler.cfg.branch-splitting was totally broken
2011-02-27 16:43:26 -08:00
Slava Pestov
6f7e4e32d0
compiler.cfg.ssa.construction: update unit tests for nths change
2011-02-25 21:05:38 -08:00
Slava Pestov
b0732bcb22
Fix unit test failures caused by alien.data change
2010-12-25 22:34:12 -08:00
Slava Pestov
75560699ea
Move <ref>, deref and little-endian? from alien.c-types to alien.data, remove <c-object>
2010-12-25 16:55:36 -08:00
Slava Pestov
675a420717
compiler.tests: update for <ref> deref
2010-10-25 22:23:03 -07:00
Doug Coleman
69487d1fd3
Fix a few tests that got broken in the <uint> *uint patches
2010-10-25 19:14:21 -05:00
Doug Coleman
67c37591ca
Remove <uint> *uint and friends. Hopefully remove the last usages of these words
2010-10-25 15:54:42 -05:00
Doug Coleman
4ca9bd0bba
Remove usages of <void*> and *void*
2010-10-25 13:22:50 -05:00
Doug Coleman
1f57dc326e
Remove many uses of <int> and *int etc
2010-10-25 12:49:12 -05:00
Slava Pestov
b052aa61cb
compiler.cfg.linear-scan: extend lifetime intervals of base pointers correctly (reported by Anton Gorenko)
2010-09-30 20:49:03 -07:00
Slava Pestov
6b5fffc026
compiler: preliminary implementation of tracking derived pointers in GC maps
2010-09-27 20:12:44 -07:00
Slava Pestov
53aed0805a
compiler.cfg.alias-analysis: fix bug in lazy alias class instantiation
2010-09-27 20:12:43 -07:00
Slava Pestov
546b81b697
compiler.cfg.scheduling: always run scheduling because heuristic was broken
2010-09-25 16:31:42 -07:00
Slava Pestov
80d7aab40b
compiler.cfg.alias-analysis: don't need to do a local live-in calculation anymore
2010-09-25 16:13:17 -07:00
Slava Pestov
ec2f42fd40
compiler.cfg.liveness: merge in compiler.cfg.liveness.ssa and simplify the code, since we don't compute live sets before SSA construction anymore
2010-09-25 14:36:58 -07:00
Slava Pestov
8bc2ea7a5c
compiler.cfg.ssa.construction: use the baller method for pruned SSA
2010-09-20 21:36:22 -07:00
Slava Pestov
a67c7c5739
compiler.cfg.write-barrier: fix soundness issue with ##copy that never came up but probably should've been fixed anyway
2010-09-06 17:01:44 -07:00
Slava Pestov
a605d5c9c9
compiler.cfg.alias-analysis: dead store elimination was too aggressive, can't eliminate dead stores across a GC call even for fresh allocations because GC will see uninitialized data
2010-09-06 16:57:56 -07:00
Slava Pestov
add75411a0
compiler.cfg.write-barrier: handle ##copy instructions
2010-09-05 23:07:30 -07:00
Slava Pestov
54f97557e6
compiler.cfg.dependence: compute dependency graph for write barrier instructions
2010-09-05 22:51:17 -07:00
Slava Pestov
c677c35de4
compiler.cfg: fix major facepalm with write barrier elimination
2010-09-05 21:39:45 -07:00
Slava Pestov
3323284db4
stack-checker.alien: get a bit more inlining going with callbacks, to expose another bug
2010-09-05 21:27:39 -07:00
Slava Pestov
25ed4dd298
compiler.tests: forgot to check in x87-regression test way back
2010-08-20 18:36:26 -07:00
Slava Pestov
3384fcd96d
compiler: update tests for void being parsed like a real word
2010-08-15 13:01:42 -07:00
Slava Pestov
1985705413
compiler: now that FFI has been deconcatenatized, we no longer need the special ##unary-float-function and ##binary-float-function fastpaths
2010-08-13 23:59:19 -07:00
Slava Pestov
b5fc39c198
compiler.cfg: Reading the return value of a float-returning function on x86-32 had a side effect of popping the x87 stack, so it was not correct for DCE to just eliminate this if the return value was not used. Fix this by adding a new dead-outputs slot to alien-call-insns and having DCE move dead returns there
2010-08-13 23:19:56 -07:00
Slava Pestov
42b858b3f0
math.libm: fix regression: fsqrt intrinsic was not working ever since change was made to inline FUNCTION: bodies
2010-08-12 21:41:57 -07:00
Slava Pestov
723d780703
stack-checker.alien: generate a declaration for input parameter types
2010-07-30 15:50:05 -04:00
Slava Pestov
94f6ac98de
compiler.cfg.linear-scan: fix bad interaction between inactive intervals and sync points
2010-07-29 21:06:48 -04:00
Slava Pestov
0f4c5d2bff
classes.algebra: make it work better to fix bug reported by Sascha Matzke
2010-07-29 19:57:23 -04:00
Slava Pestov
168dd1f825
FFI rewrite part 7: compile callback bodies with the optimizing compiler
2010-07-28 00:49:26 -04:00
Slava Pestov
5fc9aa05b0
Revert "compiler.cfg: change linear ordering to place GC call blocks at the end"
...
This reverts commit 544a288192
.
2010-07-27 23:58:41 -04:00
Slava Pestov
8adde5360a
compiler.cfg: change linear ordering to place GC call blocks at the end
2010-07-27 13:00:28 -04:00
Slava Pestov
355d89e8e8
compiler.cfg: now that kill-blocks cannot contain instructions that define vregs we can skip them all
2010-07-27 12:40:31 -04:00
Slava Pestov
c04de94b96
compiler.tree.finalization: record dependencies on inlined predicates
2010-07-23 16:31:15 -07:00
Slava Pestov
b6fe62299e
compiler.cfg.alias-analysis: factor-call-insns which defined values were not handled properly
2010-07-19 19:56:00 -04:00
Slava Pestov
b23aac1beb
compiler.cfg: open-code parameter boxing and unboxing for certain C types
2010-07-19 10:25:13 -04:00
Slava Pestov
8e46305288
compiler.cfg.save-contexts: don't insert ##save-context in front of ##phi
2010-07-19 09:27:10 -04:00
Slava Pestov
adc9db3ea8
compiler.cfg.linear-scan.allocation: fix wrong order
2010-07-19 06:46:50 -04:00
Slava Pestov
b776a92546
compiler.cfg.linear-scan: fix bad interaction between split position calculation and register-clobbering instructions
2010-07-18 17:38:52 -04:00
Slava Pestov
e2ceb11337
stack-checker: calling 'boa' on a non-tuple would compile as a no-op rather than an error (reported by Joe Groff); clean up some other error reporting code too
2010-07-17 15:57:44 -04:00
Slava Pestov
e3edb2653d
compiler.cfg.intrinsics.allot: clean up
2010-07-16 20:04:03 -04:00
Slava Pestov
e5dd21b0b9
compiler.cfg: nuke ##allot-byte-array instruction
2010-07-16 19:57:45 -04:00
Slava Pestov
446ee6896d
alien.data: remove second quotation parameter from with-out-parameters, now all values are copied properly and calling 'clone' on structs in this quotation is not necessary
2010-07-16 17:32:05 -04:00
Slava Pestov
5b31cbcb3c
alien.data: document with-scoped-allocation and with-out-parameters, and add initial: syntax
2010-07-16 17:13:38 -04:00
Slava Pestov
60ddbd9d9b
compiler.cfg.scheduling: ##dispatch must go at the end since its a control flow transfer
2010-07-15 20:55:31 -04:00
Slava Pestov
0fd636b4b9
compiler.cfg: ##unbox-long-long can have multiple outputs now, clean up long long parameter passing code using this
2010-07-15 19:49:29 -04:00
Slava Pestov
48e96ef032
compiler.cfg.scheduling: update to support multiple-output instructions
2010-07-15 17:38:34 -04:00
Slava Pestov
e27adb2830
compiler: re-architect low-level optimizer to allow more than one output value per instruction
2010-07-13 07:40:14 -04:00
Slava Pestov
1f4bd3e293
compiler.tree.propagation.known-words: don't want a type function on clone, all the methods are inline and it was wrong (reported by Joe Groff)
2010-07-07 17:25:32 -04:00
Slava Pestov
a55c8ee671
FFI rewrite part 6: deconcatenatize
2010-07-02 15:44:12 -04:00
Slava Pestov
ae2c2909af
Revert guarded method inlining
...
This reverts commit 44a835e3fc
, reversing
changes made to d45926bda0
.
2010-06-24 12:35:21 -04:00
Daniel Ehrenberg
7599841221
Merge branch 'master' of git://factorcode.org/git/factor into propagation
2010-06-23 12:17:24 -04:00
Slava Pestov
7e24994db5
Whitespace fix
2010-06-23 03:56:17 -04:00
Slava Pestov
68cd067f31
compiler.cfg.builder: if there is a conditional where every branch is known to throw an error, don't process any of the (unreachable) code after the conditional, since this can confuse analysis (reported by Daniel Ehrenberg)
2010-06-23 03:33:15 -04:00
Daniel Ehrenberg
12b0e16232
Unit tests for a couple of serious compiler bugs
2010-06-22 16:41:14 -04:00
Daniel Ehrenberg
2c8897c56b
Merge branch 'master' of git://factorcode.org/git/factor into propagation
2010-06-22 14:47:57 -04:00
Slava Pestov
167aff1b57
compiler.cfg.height: clean it up a bit
2010-06-22 04:14:03 -04:00
Slava Pestov
5d6816d364
compiler.cfg.ssa: fixing test failures
2010-06-15 17:18:51 -04:00
Daniel Ehrenberg
970f96c8b8
Fixing typo in modular arithmetic unit test (should use iota, not integer sequences, and just happened to work still)
2010-06-15 16:15:49 -04:00
Daniel Ehrenberg
30cfbc8512
Merge branch 'master' into propagation
2010-06-15 13:26:01 -04:00
Slava Pestov
e86f434f26
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
2010-06-14 19:39:46 -04:00
Slava Pestov
806e54630a
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Joe Groff
7fe04fa8ee
compiler.cfg.intrinsics.simd: intrinsic support for double-2>float-4 conversion
2010-06-01 00:34:50 -07:00
Slava Pestov
c9ad0856d5
cpu.x86.64: callback prologue was clobbering 5th parameter register on x86-64
2010-05-23 03:00:53 -04:00
Slava Pestov
ba7cb61133
Stack allocation improvements
...
- New with-out-parameters combinator
- Inhibit tail call optimization in frames with local allocation, to ensure that passing a stack allocated value to the last word in the quotation works
- local allocations are now aligned properly
- spill slots are now aligned properly aligned in frames which have parameter and local allocation areas
2010-05-22 02:37:00 -04:00
Slava Pestov
9e59192c73
compiler.cfg.builder.alien: use ##local-allot to fix value struct passing on Win64
2010-05-19 01:53:32 -04:00
Slava Pestov
91cd3b854d
Use ##local-allot to simplify longlong unboxing
2010-05-19 01:07:22 -04:00
Slava Pestov
0a0ebcd71d
compiler.tree.propagation.known-words: fix load error
2010-05-19 00:51:03 -04:00
Slava Pestov
86358b1dc3
alien.data: add with-scoped-allocation combinator for stack-allocating C data
2010-05-19 00:33:36 -04:00
Slava Pestov
77516c6932
compiler.cfg: generalize ##prepare-struct-caller instruction to alloca()-like ##local-allot
2010-05-19 00:33:15 -04:00
Slava Pestov
4dd58ce40e
compiler.tests: fix test for generalizations change
2010-05-18 23:08:37 -04:00
Slava Pestov
11511167e2
cpu.x86.x87: compares were clobbering ST0
2010-05-18 19:18:53 -04:00
Slava Pestov
1834241e5a
alien.libraries, stack-checker.alien: check user inputs more carefully to ensure that invalid ABI descriptors don't slip through and break random stuff (reported by prunedtree)
2010-05-18 18:46:31 -04:00
Slava Pestov
ea726f5680
Move remaining sequence operations from generalizations to sequences.generalizations where they belong
2010-05-18 18:36:47 -04:00
Slava Pestov
be733cd797
compiler.cfg.value-numbering: constant folding for ##shuffle-vector
2010-05-18 04:22:21 -04:00
Slava Pestov
53a51957df
compiler.cfg.value-numbering: add constant folding for ##gather-vector instructions, and fix ##scalar>vector constant folding for integers
2010-05-18 03:56:07 -04:00
Slava Pestov
6eaf2d7534
cpu.x86: add x87 codegen for Model T enthusiasts
2010-05-17 11:35:47 -04:00
Slava Pestov
41d929a201
compiler.cfg.ssa.interference: implement linear-time interference test
2010-05-17 05:50:13 -04:00
Slava Pestov
6b7260a4a7
compiler.cfg.ssa.interference.live-ranges: compute correct live ranges for ##phi instructions
2010-05-17 05:50:13 -04:00
Slava Pestov
0955f2c7eb
compiler.cfg.linear-scan: fix typo
2010-05-17 05:50:13 -04:00
Slava Pestov
7ff309d50e
cpu.x86: get rid of this extra-stack-space nonsense
2010-05-17 02:14:44 -04:00
Slava Pestov
3f8e13bf66
compiler.cfg: refactor stack frame code and fix frame pointer usage in callbacks
2010-05-16 21:04:40 -04:00
Slava Pestov
a7b5957f6d
compiler: hack to make XCreateIC() work on x86-64
2010-05-16 04:49:53 -04:00
Slava Pestov
8ebecac4d2
Merge branch 'master' of git://factorcode.org/git/factor
2010-05-16 04:10:03 -04:00
Slava Pestov
e6abc0be15
Fixes for FFI changes
2010-05-16 04:09:47 -04:00
Joe Groff
67ea40ade3
compiler.cfg.intrinsics.simd: use ^^select-vector for simd constant nth when available
2010-05-16 00:50:20 -07:00
Joe Groff
645164188d
compiler.cfg.instructions: ##select-vector instruction mapping to SSE4 PEXTR*
2010-05-16 00:50:19 -07:00
Slava Pestov
5b48cd2a63
FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing
2010-05-16 03:43:23 -04:00
Joe Groff
0c27f30475
compiler.cfg.intrinsics.simd: use new ##gather-int-vector insns to construct int vectors when available
2010-05-15 23:59:27 -07:00
Joe Groff
8c878ada17
compiler.cfg.instructions: ##gather-int-vector-2/4 instructions that map to SSE4 PINSR/PEXTR
2010-05-15 23:48:22 -07:00
Joe Groff
5d35917061
compiler.cfg.intrinsics: intrinsic for fixnum-bit-count
2010-05-15 13:59:47 -07:00
Joe Groff
7fec53b509
compiler.cfg.instructions: ##bit-count insn
2010-05-15 13:57:35 -07:00
Slava Pestov
5c0c87fcaa
compiler.cfg.value-numbering.comparisons: ##test-imm rewrite rule must check that the immediate fits
2010-05-15 03:19:24 -04:00
Daniel Ehrenberg
fbaa8d153f
Inlining no-method when a generic word has no method
2010-05-14 20:28:09 -05:00
Daniel Ehrenberg
05290ee1b1
Merge branch 'master' of git://factorcode.org/git/factor into propagation
...
Conflicts:
basis/compiler/tree/propagation/propagation-tests.factor
2010-05-14 18:59:39 -05:00
Slava Pestov
ad7636045f
compiler: fix bad unit test
2010-05-14 18:37:11 -04:00
Slava Pestov
5ecd2b61c7
compiler.cfg: more silly optimizations
2010-05-14 18:37:09 -04:00
Slava Pestov
1a61c50896
compiler.cfg.instructions: change vreg-insn from a mixin into a superclass
2010-05-14 18:37:09 -04:00
Slava Pestov
6d30bb8bf4
compiler.cfg.linear-scan: pointless optimizations
2010-05-14 18:37:08 -04:00
Slava Pestov
291543c300
compiler.cfg.ssa.live-ranges: clean up
2010-05-14 18:37:08 -04:00
Slava Pestov
d1e422c981
compiler.cfg.alias-analysis: simplify and speed up
2010-05-14 18:37:07 -04:00
Slava Pestov
5a67711bfd
compiler.cfg: use x86 TEST instruction to optimize 'bitand 0 ='
2010-05-14 18:37:06 -04:00
Joe Groff
8f1751cd54
math.vectors.simd.intrinsics: fix scalar fallback for (simd-vshuffle2-elements)
2010-05-14 02:47:39 -07:00
Joe Groff
465a1673eb
compiler.cfg.intrinsics.simd: mod shuffle indices for shuffle-2-vectors-imm intrinsic so they wrap like a real instruction would
2010-05-14 01:20:05 -07:00
Joe Groff
9f9e145819
math.vectors.simd.intrinsics: (simd-vshuffle2-elements) intrinsic that creates a vector by selecting elements from two input vectors. use ##shuffle-vector-halves-imm to implement for double-2s with SSE
2010-05-14 01:16:29 -07:00
Joe Groff
3766abd65e
compiler.cfg.instructions: ##shuffle-vector-halves-imm insn to map to SSE's two-input SHUFPS/SHUFPD
2010-05-14 00:20:21 -07:00
Slava Pestov
bb87d124c1
compiler: small fixes and cleanups
2010-05-13 02:48:20 -04:00
Slava Pestov
db2db6a1a6
compiler.cfg.builder.alien: fix for x86-32
2010-05-12 18:07:11 -04:00
Slava Pestov
42b0d456cd
Refactor x86-32 stack cleanup logic
2010-05-12 02:09:11 -04:00
Slava Pestov
f89b85db7b
Temporary fixes for x86-32 until FFI boxing is rewritten
2010-05-12 01:41:49 -04:00
Slava Pestov
0cde5c8fb5
Eliminate compiler.alien
2010-05-11 23:24:47 -04:00
Slava Pestov
ee0640f176
Move flatten-c-type to death row so that it can be executed in part 5
2010-05-11 22:26:31 -04:00
Slava Pestov
eb802208d1
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00
Slava Pestov
45689dbfe6
compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first
2010-05-10 01:38:34 -04:00
Slava Pestov
4478c3a51a
FFI rewrite part 3: eliminate ##push-context-stack and ##pop-context-stack
2010-05-10 00:46:29 -04:00
Slava Pestov
acfbea3865
compiler.codegen.fixup: remove unused variable
2010-05-10 00:45:48 -04:00
Slava Pestov
7316d41226
FFI rewrite part 2: use ##peek and ##replace instructions to access stack
2010-05-09 23:26:43 -04:00
Slava Pestov
c211c3e84e
FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions
2010-05-09 21:36:52 -04:00
Slava Pestov
f988dad79c
compiler.cfg: add ##load-float instruction for single precision floating point constants
2010-05-07 18:26:00 -04:00
Slava Pestov
982e704626
compiler.cfg.linear-scan: clean up clobber-insn handling
2010-05-07 18:22:35 -04:00
Slava Pestov
627295f094
Language change: tuple slot setter words with stack effect ( value object -- ) are now named FOO<< instead of (>>FOO)
2010-05-06 17:21:02 -04:00
Slava Pestov
32ab6ca8d8
compiler.cfg.intrinsics: may as well use cell-size stores instead of 32-bit stores when initializing byte arrays
2010-05-05 13:23:00 -04:00
Slava Pestov
07092df20b
compiler.cfg.intrinsics.allot: fix <byte-array> intrinsic for real. Don't ever check in code without testing it
2010-05-05 13:17:20 -04:00
Daniel Ehrenberg
ea69bd68ac
Merge branch 'master' of git://factorcode.org/git/factor into propagation
2010-05-05 08:54:47 -05:00
Slava Pestov
0dab9c7f9d
compiler.cfg.intrinsics.allot: <byte-array> intrinsic was writing past the end of the array and this was causing problems for scheduling
2010-05-05 02:17:57 -04:00
Slava Pestov
e763c74096
More FFI cleanups
2010-05-05 01:13:45 -04:00
Daniel Ehrenberg
4d5b7fe883
Fixing bug in dependency tracking for guarded method inlining
2010-05-04 16:47:00 -05:00
Daniel Ehrenberg
0d055060ad
Bug fix in method inlining
2010-05-04 16:46:39 -05:00
Daniel Ehrenberg
23e78b8380
Removing hack with >fixnum, now subsumed by a more general optimization
2010-05-04 16:46:39 -05:00
Daniel Ehrenberg
0f0b56f1ef
Adding dependency checking and proper handing of dispatch# to the new method inlining
2010-05-04 16:46:38 -05:00
Daniel Ehrenberg
f1d7a4e663
Improving method inlining change, but there's still a bug
2010-05-04 16:46:08 -05:00
Daniel Ehrenberg
19a44d65df
Changes to compiler.tree.propagation.inlining
2010-05-04 16:46:08 -05:00
Daniel Ehrenberg
3ed4a82475
Fixing another bug in the method inlining improvement
2010-05-04 16:46:08 -05:00
Daniel Ehrenberg
416707f327
Fixing optimization for improved method inlining
2010-05-04 16:46:07 -05:00
Daniel Ehrenberg
02bd3d7142
splitting generic word callsites when only one method is applicable
2010-05-04 16:46:07 -05:00
Daniel Ehrenberg
750a96935f
instance? optimizes null checks
2010-05-04 16:46:07 -05:00
Daniel Ehrenberg
24ad579631
Merge branch 'master' of git://factorcode.org/git/factor
2010-05-04 09:52:34 -05:00
Daniel Ehrenberg
4f66732c36
Fixing scheduling for compiler changes
2010-05-04 09:48:16 -05:00
Slava Pestov
035a2e9b63
compiler: more tests
2010-05-04 05:46:45 -05:00
Slava Pestov
572d7f77f8
compiler.cfg.value-numbering: don't use complex addressing modes unless architecture supports it
2010-05-04 05:46:21 -05:00
Slava Pestov
dd2a4c2c77
cpu.x86: GC root offsets were computed wrong in words containing alien calls
2010-05-04 02:53:53 -04:00
Slava Pestov
ea4ee4ff60
compiler.tests: remove useless test from float tests; min and max are generic now, with methods on floats, so any potential inconsistency is gone
2010-05-04 00:07:53 -04:00
Slava Pestov
ad69052a1a
compiler.cfg.value-numbering: fix typo in unit test
2010-05-03 22:11:29 -04:00
Daniel Ehrenberg
b02208ceb2
Some fixes to merge scheduling
2010-05-03 17:54:46 -05:00
Daniel Ehrenberg
277705345f
Merge branch 'master' of git://factorcode.org/git/factor into s3
...
Conflicts:
basis/compiler/cfg/finalization/finalization.factor
2010-05-03 17:29:03 -05:00
Slava Pestov
4352902bb6
compiler.cfg.empty-blocks: remove unused pass
2010-05-03 18:23:54 -04:00
Slava Pestov
ca4f442eaa
compiler.cfg.alias-analysis: storing a reference into an object now merges the reference's alias class with the heap alias class
2010-05-03 18:20:28 -04:00
Daniel Ehrenberg
5509604ffe
Merge branch 'master' into s3
...
Conflicts:
basis/compiler/cfg/optimizer/optimizer.factor
2010-05-03 17:19:28 -05:00
Slava Pestov
58e4381eb1
compiler: new "binary literal area" at the end of a word's machine code stores constant floats and SIMD vectors; this allows ##load-reference/##load-memory fusion to be performed on x86-64, with a RIP-relative address reaching the data; also simplifies VM since custom relocation types used by the previous 32-bit-only optimization are no longer needed
2010-05-03 17:34:35 -04:00
Slava Pestov
9b4135713e
compiler.cfg.representations: make sure that immediate operands fit
2010-05-03 17:34:34 -04:00
Slava Pestov
86548320eb
compiler.cfg.value-numbering: fix unit test for 64-bit
2010-05-03 17:34:33 -04:00
Slava Pestov
f5c5d8b44c
compiler: remove flat machine representation and generate code directly from the CFG
2010-05-03 17:34:32 -04:00
Slava Pestov
5236f327ba
compiler.cfg.debugger: add ssa. word to print IR before representation selection runs
2010-05-03 17:34:31 -04:00
Slava Pestov
0fbf454b18
compiler.tree.propagation: fix both-fixnums? trick
2010-05-03 17:34:30 -04:00
Slava Pestov
7f6ae34d72
Updating tests for recent compiler changes
2010-05-03 17:34:30 -04:00
Slava Pestov
38bafd2be8
compiler.cfg.linear-scan.assignment: spill slot representation logic was backwards, just like Factor
2010-05-03 17:34:29 -04:00
Slava Pestov
428ba9fd0f
compiler.cfg: fuse ##load-integer/##load-reference into ##replace to form ##replace-imm
2010-05-03 17:34:28 -04:00
Slava Pestov
9788323d25
compiler: add ##load-vector instruction to avoid wasting a temporary register on x86-32
2010-05-03 17:34:28 -04:00
Slava Pestov
5979fe7f41
compiler.cfg.copy-prop: optimistic copy propagation
2010-05-03 17:34:26 -04:00
Slava Pestov
e90712b1ed
compiler.cfg: cleanup
2010-05-03 17:34:26 -04:00
Slava Pestov
df86d1341f
compiler.cfg: clean up ##phi literals in tests
2010-05-03 17:34:24 -04:00
Slava Pestov
ffd1844d52
compiler.cfg.linear-scan: clean up spill slot assignment
2010-05-03 17:34:24 -04:00
Slava Pestov
65f86bfce7
compiler.cfg.ssa.detruction: coalesce different representations in more cases
2010-05-03 17:34:22 -04:00
Slava Pestov
ce73031ec3
compiler.cfg.alias-analysis: write unit tests and fix redundant store elimination
2010-05-03 17:34:22 -04:00
Slava Pestov
33eb15bf44
compiler.cfg.debugger: clean up and make it more flexible
2010-05-03 17:34:22 -04:00
Slava Pestov
43f269e4eb
Register allocation now uses SSA properties to coalesce values with different representations
2010-05-03 17:34:20 -04:00
Slava Pestov
9b34a4a054
compiler.cfg: remove unused 'reps' slot from compiler.cfg, and re-organize things in preparation for SSA register allocation
2010-05-03 17:34:18 -04:00
Slava Pestov
43fc230c69
compiler.cfg.linear-scan: cleanups
2010-05-03 17:34:18 -04:00
Slava Pestov
d23bb19b55
Code cleanups
2010-05-03 17:34:17 -04:00
Slava Pestov
c55a6bb385
compiler.cfg.gc-checks: move phi instructions into GC check block, to ensure correct behavior
2010-05-03 17:34:17 -04:00
Slava Pestov
95ff5ffe51
New GC checks work in progress
2010-05-03 17:34:16 -04:00
Slava Pestov
4d749c9dfe
compiler.tree.propagation: fix tests
2010-05-03 17:34:14 -04:00
Slava Pestov
9c44dddf97
compiler.codegen: cleanup
2010-05-03 17:34:14 -04:00
Slava Pestov
db7403d697
compiler.cfg.linear-scan.resolve: fix incorrect behavior when one physical register is used with several representations in the same register class
2010-05-03 17:34:14 -04:00
Slava Pestov
51b13ce373
compiler.cfg.linear-scan: don't insert a _reload if the register is going to be overwritten anyway
2010-05-03 17:34:14 -04:00
Slava Pestov
a9ccfa8f05
strings: move string-nth primitive out of the VM and into the library
2010-05-03 17:34:12 -04:00
Slava Pestov
458fd007be
compiler.cfg.representations: simplify a little
2010-05-03 17:34:11 -04:00
Slava Pestov
ed8c32989f
compiler.cfg.representations: add peephole optimizations for integer comparisons
2010-05-03 17:34:11 -04:00
Slava Pestov
0f5d9974a0
compiler.cfg.representations: fix various bugs
2010-05-03 17:34:11 -04:00
Slava Pestov
456743a6ce
compiler.cfg.representations: add more peephole optimizations to reduce fixnum tagging and untagging overhead
2010-05-03 17:34:11 -04:00
Slava Pestov
a141df595b
compiler.cfg.value-numbering: more cleanups
2010-05-03 17:34:10 -04:00
Slava Pestov
ef8094e3b3
compiler.cfg.value-numbering: identify VNs with their representative vregs, eliminating the vn>vreg hash
2010-05-03 17:34:10 -04:00
Slava Pestov
edaf59bf46
compiler.cfg.value-numbering: maintain a VN to instruction mapping. This eliminates all instances of expression inspection, allowing the auto-generated expression classes to be removed
2010-05-03 17:34:09 -04:00
Slava Pestov
f548a08637
compiler.cfg.value-numbering: remove constant -vs- literal distinction
2010-05-03 17:34:09 -04:00
Slava Pestov
9cea3f2c93
compiler.cfg.ssa.liveness: remove unused pass
2010-05-03 17:34:08 -04:00
Slava Pestov
732f57f31d
compiler.cfg.builder: fix unit tests
2010-05-03 17:34:08 -04:00
Slava Pestov
f14f2cbdab
compiler.cfg.value-numbering: merge 'simplify' pass into 'rewrite'
2010-05-03 17:34:08 -04:00
Slava Pestov
378c2b2a46
compiler.cfg: add ##load-memory and ##store-memory instructions implementing complex addressing modes, and associated value numbering optimizations
2010-05-03 17:34:07 -04:00
Slava Pestov
b8d556514c
compiler.cfg.value-numbering: add slot addressing rewrite rule to eliminate a redundant ##add-imm from array-nth and set-array-nth
2010-05-03 17:34:07 -04:00
Slava Pestov
2475699736
compiler.cfg: more flexible addressing for ##slot and ##set-slot
2010-05-03 17:34:06 -04:00
Slava Pestov
913b95192e
compiler.cfg: merge all alien accessors into ##load-memory-imm and ##store-memory-imm
2010-05-03 17:34:06 -04:00
Slava Pestov
279eb461b1
compiler.cfg: remove ##set-string-nth-fast instruction since it can be expressed just as efficiently using other instructions
2010-05-03 17:34:04 -04:00
Slava Pestov
c81063614b
compiler.tests.low-level-ir: update for recent changes
2010-05-03 17:34:04 -04:00
Slava Pestov
efd2a80d98
compiler.cfg.value-numbering: fix compile error
2010-05-03 17:34:04 -04:00
Slava Pestov
e95cd256ec
compiler.cfg.representations: peephole optimizations are used to simplify the case where the input to a ##shl-imm or ##sar-imm needs to be untagged
2010-05-03 17:34:03 -04:00
Slava Pestov
2ce926594d
compiler.cfg.value-numbering: new optimizations; reassociation for shifts and redistribution for shifts/multiplies over additions/subtractions
2010-05-03 17:34:02 -04:00
Slava Pestov
2ca8d543f1
compiler.cfg.instructions: more typos
2010-05-03 17:34:02 -04:00
Slava Pestov
82fb1879af
Debugging untagged fixnums
2010-05-03 17:34:02 -04:00
Slava Pestov
5d3a7a7362
Untagged fixnums work in progress
2010-05-03 17:34:02 -04:00
Slava Pestov
503c0fcfde
compiler: Start using tagged-rep for stuff, and split up compiler.cfg.representations into several sub-vocabularies
2010-05-03 17:34:01 -04:00
Erik Charlebois
baab8c060d
Remove ENUM: f and replace uses with CONSTANTs.
...
Fix bootstrap and load-all errors from enum classes.
2010-04-19 20:08:40 -07:00
Joe Groff
4bc915d526
C-ENUM: -> ENUM:
2010-04-19 20:07:16 -07:00
Slava Pestov
d143aa64b2
compiler.tree.propagation.transforms: open-code >fixnum when input is already a fixnum or f
2010-04-19 01:14:00 -05:00
Slava Pestov
2517b2fc2b
compiler: combine ##load-constant followed by ##alien-double into a ##load-double on x86-32, saving an integer register
2010-04-18 21:42:45 -05:00
Slava Pestov
8f0739197e
compiler.cfg: fix some bugs introduced by the ##compare-imm fusion patch
2010-04-18 21:42:45 -05:00
Slava Pestov
bc9241d2b7
compiler.tree.propagation.recursive: more fine-grained generalize-counter-interval eliminates overflow checks from binary-search
2010-04-18 21:42:45 -05:00
Slava Pestov
2aaf24412a
compiler: change how 'f' is represented in low level IR to simplify some code, and fuse a ##load-constant of a word with a ##compare into a ##compare-imm on x86-32. This eliminates a spill from binary-search
2010-04-18 21:42:45 -05:00
Daniel Ehrenberg
fbb1eb98a9
Improving dependence graph correctness
2010-04-18 19:59:52 -05:00
Daniel Ehrenberg
865285cdd7
Merge branch 'master' of git://factorcode.org/git/factor into s3
2010-04-17 14:05:40 -05:00
Slava Pestov
c1a870fe72
sequences: remove stupid <flat-slice> word
2010-04-17 00:58:30 -05:00
Daniel Ehrenberg
6892bac1ca
Making some scheduling assertions only run in unit tests
2010-04-15 17:36:43 -05:00
Daniel Ehrenberg
74de7d0e2a
Merge branch 'master' of git://factorcode.org/git/factor into s3
2010-04-15 17:28:53 -05:00
Slava Pestov
bd4e920995
compiler.tree.propagation: fix scalability issue with constraints
2010-04-14 17:19:26 -07:00
Slava Pestov
4f16212840
compiler.tests.redefine23: test wasn't testing anything
2010-04-13 00:56:48 -07:00
Slava Pestov
88f627a402
compiler.tests.alien: fix tests on Win64
2010-04-13 01:24:04 -05:00
Slava Pestov
918b202b9a
compiler.tests.alien: get it passing when VM is compiled with MINGW by disabling certain tests and using the MINGW ABI for others, and fix fastcall alien-indirect tests for name decoration
2010-04-12 18:14:18 -05:00
Slava Pestov
67e24b1d2a
compiler.codegen: need to do name decoration with fastcall as well
2010-04-12 18:10:25 -05:00
Slava Pestov
1434a305c8
vm: add a new rc-absolute-1 relocation class to allow storing values in 8-bit operands, and optimized code sequences for inline caches using this
2010-04-12 14:22:41 -07:00
Slava Pestov
145e6428ba
Fixing load errors
2010-04-10 17:24:44 -07:00
Slava Pestov
0aab7aa872
compiler.tests.alien: fix typo
2010-04-10 00:41:20 -07:00
Joe Groff
3e0d86f355
Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols
...
Conflicts:
basis/compiler/tests/alien.factor
2010-04-06 12:30:15 -07:00
Daniel Ehrenberg
aae69daa96
Fixing USING: line of scheduling to remove unnecessary vocabs
2010-04-05 15:45:06 -05:00
Daniel Ehrenberg
e22f66daf4
Scheduling has to come before representation selection, since the latter inserts memory operations
2010-04-05 00:24:12 -05:00
Daniel Ehrenberg
601b6f8457
Merge branch 'master' of git://factorcode.org/git/factor into s3
2010-04-04 19:43:15 -05:00
Slava Pestov
74640b7f71
Get green threads working on Windows
...
- store stack base and limit in TIB
- set up a frame-based structured exception handler in each context's callstack
- boot.x86.32.image has now been replaced by boot.winnt-x86.32.image and boot.unix-x86.32.image
2010-04-03 20:24:33 -04:00
Joe Groff
1c5f718e80
add tests for fastcall callbacks
2010-04-02 00:23:39 -07:00
Joe Groff
47f3ace5ac
test fastcall indirect struct return
2010-04-02 00:00:34 -07:00
Joe Groff
43d73dcd4d
remove fastcall struct param tests because GCC appears to behave differently from VC++ here and again, who cares
2010-04-01 23:54:08 -07:00