Slava Pestov
a56d480aa6
Various optimizations leading to a 10% speedup on compiling empty EBNF parser:
...
- open-code getenv primitive
- inline tuple predicates in finalization
- faster partial dispatch
- faster built-in type predicates
- faster tuple predicates
- faster lo-tag dispatch
- compile V{ } clone and H{ } clone more efficiently
- add fixnum fast-path to =; avoid indirect branch if two fixnums not eq
- faster >alist on hashtables
2008-12-06 09:16:29 -06:00
Slava Pestov
aa838dbc2d
Fix compile errors
2008-12-05 09:04:16 -06:00
Slava Pestov
908644ee7a
O(1) <sbuf> and new-sequence on byte-arrays (work in progress)
2008-12-05 07:28:52 -06:00
Slava Pestov
e256846acd
Tweak string representation; high bit indicates if character has high bits in aux vector. Avoids memory access in common case. Split set-string-nth into two primitives; set-string-nth-fast is open-coded by optimizing compiler. 13% improvement on reverse-complement
2008-12-05 06:38:51 -06:00
Slava Pestov
ba31f73b41
Fix regression on >r/r> test
2008-12-04 10:19:05 -06:00
Slava Pestov
e304d3c9f8
Local DCE
2008-12-04 06:02:49 -06:00
Slava Pestov
e5ed7447ed
Removing more >r/r> usages
2008-12-03 08:46:16 -06:00
Slava Pestov
b80e82b170
Use specializer hints when inlining words
2008-11-29 12:05:27 -06:00
Slava Pestov
eb8c621b6f
Faster generic arithmetic on fiixnums: both-fixnums? sub-primitive performs a check if the top two stack items are both fixnums with a single conditional branch
2008-11-28 08:35:02 -06:00
Slava Pestov
92cc760070
Fixes
2008-11-28 01:11:03 -06:00
Slava Pestov
6dfce7d4e7
load-locals is a primitive now, change semantics of get-locals to bum out 2 instructions from the sub-primitive
2008-11-27 22:30:29 -06:00
Slava Pestov
02b8dcf9f3
Stack checker now knows about wlet words
2008-11-27 21:57:16 -06:00
slava
e9aa13150f
gc-reset, gc-stats, jit-compile primitives didn't have static stack effects
2008-11-24 16:01:53 -06:00
Slava Pestov
7788b3e0db
Merge branch 'master' into microseconds
2008-11-23 03:06:32 -06:00
Slava Pestov
a4d9cdfeb3
Refactor all usages of >r/r> in core to use dip, 2dip, 3dip
...
Non-optimizing compiler now special-cases dip, 2dip, 3dip following a
literal quotation: this allows us to break the dip/slip meta-circle
without explicit calls to >r/r>
2008-11-23 02:44:56 -06:00
Slava Pestov
3e7afcac29
(call-next-method) now takes a method instead of a class and a generic
2008-11-22 19:57:25 -06:00
Slava Pestov
8819f23312
Replace millis primitive with micros primitive
...
Add millis as a library word
sleep now takes either a duration or a microsecond count; code using durations doens't need to be updated, code using millisecond counts updated to use durations for the most part
2008-11-19 01:50:05 -06:00
Slava Pestov
a166db313a
Inferring set-datastack is just a warning not an error
2008-11-17 12:23:12 -06:00
Slava Pestov
672f9e400e
Better error message
2008-11-17 11:16:32 -06:00
Slava Pestov
9e82f1f8dd
Better inference error messages
2008-11-16 19:42:53 -06:00
Doug Coleman
afc071eaf8
fix docs
2008-11-13 16:15:57 -06:00
Slava Pestov
5bae69426d
Stack checker cleanup and optimization
...
- stack-checker.state vocabulary split up into stack-checker.{state,values,recursive-state}
- code that modifies and searches recursive state factored out into stack-checker.recursive-state
- recursive state is now a set of three binary hash trees instead of an alist, and no longer contains unnecessary data
- binary hash trees are in stack-checker.recursive-state.tree: unbalanced, persistent
- ~8 second speedup on bootstrap, ~20 second speedup in "peg.javascript" require
2008-11-13 00:07:45 -06:00
Slava Pestov
4a1bcacfd4
Refactoring recursive-state alist; now its a mapping from words to local state triples, reduces searching by a bit
2008-11-12 19:08:40 -06:00
Slava Pestov
fab60f94a7
Minor performance improvements
2008-11-11 19:51:26 -06:00
Slava Pestov
26f309d2ae
Trying to make PEGs compile faster by reducing the number of low level IR nodes: merge functionality of #>r and #r> into #shuffle, and generate 1 node instead of 3 for calls to get-local
2008-11-11 18:46:31 -06:00
Slava Pestov
cc879fa9b7
Tuple layouts are now arrays, instead of built-in types. The superclass
...
array is now part of the tuple layout object itself, and class hashcodes
are stored alongside class words there. This removes 2 indirections when
reading a superclass, and 3 when reading a superclass hashcode.
2008-11-05 22:20:29 -06:00
Slava Pestov
2445a83cb9
Clean up recursive-state usage
2008-11-03 03:06:11 -06:00
Slava Pestov
b6ec4dc6ff
Merge branch 'master' of git://factorcode.org/git/factor into new_codegen
2008-10-19 18:10:48 -05:00
Doug Coleman
78a529b1c3
remove directory from the vm
2008-10-19 13:27:59 -05:00
Slava Pestov
b5f9d47968
Merge branch 'master' into new_codegen
2008-10-19 01:12:20 -05:00
Doug Coleman
27c36974a7
remove primitives from core, update usages
2008-10-18 21:42:01 -05:00
Slava Pestov
5f93ab74e4
Fix #dispatch generation
2008-10-12 16:46:59 -05:00
Slava Pestov
0e4e05d5cd
Debugging new codegen
2008-10-08 03:51:44 -05:00
Slava Pestov
c19f2257f4
Fix permission bits
2008-10-02 08:34:49 -05:00
Slava Pestov
22f9478c5e
Better error printing
2008-09-22 02:27:07 -05:00
Slava Pestov
3d790d8ac8
Memory ricing to make deploy tests pass on Mac OS X/PowerPC
2008-09-19 00:26:27 -05:00
Slava Pestov
cf80dd122a
Updating code for make and fry changes
2008-09-10 22:11:40 -05:00
Slava Pestov
44f53de164
Move make to its own vocabulary, remove fry _ feature
2008-09-10 20:07:00 -05:00
Slava Pestov
d14d398895
Tweak stack checker so that we no longer need to do forget-errors during normal usage
2008-09-07 02:37:13 -05:00
Doug Coleman
8a921c791c
if-empty changes
2008-09-06 19:13:59 -05:00
Slava Pestov
b6c2a85931
Remove shuffle word, rename shuffle* to shuffle
2008-09-05 19:54:05 -05:00
Slava Pestov
6d506b89e8
Image size reduction
2008-09-03 18:23:48 -05:00
Slava Pestov
e1716d92b3
Remove delegation slot
2008-09-03 03:46:56 -05:00
Doug Coleman
05779654ec
new accessors
2008-09-02 01:53:55 -05:00
Slava Pestov
29e5ed2adb
Fixing deploy tool
2008-08-31 19:17:04 -05:00
Slava Pestov
f5fbd94a4c
New compiled crossref implementation
2008-08-31 01:34:00 -05:00
Slava Pestov
3cef7c9992
Smarter usage tracking system
2008-08-30 02:31:27 -05:00
Slava Pestov
85cdb1b767
Working on new compiled usage strategy; old one was wrong
2008-08-30 00:05:27 -05:00
Slava Pestov
1fcbdf9d52
Fix more compiler bugs
2008-08-29 00:26:47 -05:00
Slava Pestov
74dccc7fbf
Debugging compiler
2008-08-28 22:28:34 -05:00
Slava Pestov
91059b4ad6
Documentation update
2008-08-23 20:24:54 -05:00
Slava Pestov
8ce6924702
Fix minor inference errors
2008-08-23 15:05:46 -05:00
Slava Pestov
a4ac751605
Starting to remove delegation
2008-08-22 23:20:49 -05:00
Slava Pestov
40e926609a
Fixing unit tests
2008-08-22 22:07:59 -05:00
Slava Pestov
17758f3749
Stack flow checker; various fixes
2008-08-19 17:11:33 -05:00
Slava Pestov
aa9341e579
Enforce that usages of >r/r> must be balanced within a quotation
2008-08-18 20:49:03 -05:00
Slava Pestov
705054b567
Working on stricter retain stack usage
2008-08-18 20:08:45 -05:00
Slava Pestov
2fa08c75b9
Fix bug, better tests
2008-08-15 21:45:05 -05:00
Slava Pestov
32b762f5ec
Fixing soundness issues with recursive combinators
2008-08-15 04:09:23 -05:00
Slava Pestov
e1987d4af9
Debugging new optimizer
2008-08-14 23:35:19 -05:00
Slava Pestov
a61e13f7be
More aggressive DCE
2008-08-13 23:52:49 -05:00
Slava Pestov
a982e564bf
More DCE work
2008-08-13 18:56:50 -05:00
Slava Pestov
a5ff214d67
More load fixes
2008-08-12 03:38:56 -05:00
Slava Pestov
56d272df9e
Merge branch 'master' into new_optimizer
2008-08-12 03:36:44 -05:00
Slava Pestov
48fa2e2d0e
Updating some code
2008-08-12 03:31:48 -05:00
Slava Pestov
f2a5a30c6f
New front-end and high-level optimizer lands
2008-08-12 03:22:45 -05:00