Commit Graph

89 Commits (a2927eb25589063c7009654a5584c3e9ed5445df)

Author SHA1 Message Date
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 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 bb87d124c1 compiler: small fixes and cleanups 2010-05-13 02:48:20 -04:00
Daniel Ehrenberg 4d5b7fe883 Fixing bug in dependency tracking for guarded method inlining 2010-05-04 16:47:00 -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 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 750a96935f instance? optimizes null checks 2010-05-04 16:46:07 -05:00
Slava Pestov 4d749c9dfe compiler.tree.propagation: fix tests 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 e6a15c0b33 compiler.tree.propagation: don't constant-fold boa constructors of identity-tuple subclasses 2010-03-26 22:44:56 -04:00
Slava Pestov 6501480a0e Fix two problems with recompilation: predicate constant folding was recording unsatisfied dependencies in some cases, and literal tuple instances of forgotten classes would cause problems for method inlining 2010-02-20 12:01:47 +13:00
Daniel Ehrenberg 52f2ac2bb9 Tests for propagation additions; making fixnum-bit? inline 2010-01-25 20:15:17 -06:00
Slava Pestov 3b5f7a9ecf 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 df4fb4a3ee Removing integers-as-sequences 2010-01-15 07:15:33 +13:00
Slava Pestov 50d68c1b10 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 47a5e96547 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 720c412431 compiler.tree.propagation: fix bug in constraints that caused retain stack overflow 2009-11-13 03:22:57 -06:00
Slava Pestov 7afea4c0ea compiler.tree.propagation: implementing missing case in branch constraints 2009-11-12 17:24:11 -06:00
Slava Pestov e4ad642134 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
Doug Coleman bd13e018dd memq? -> member-eq?, sorted-memq? -> sorted-member-eq? 2009-10-28 15:02:00 -05:00
Slava Pestov 0c431f1222 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
Daniel Ehrenberg bb93543054 Another identity in value numbering for bitfields 2009-10-08 15:20:42 -05:00
Daniel Ehrenberg eb31589092 Adding identity to propagation to remove some redundant bitands 2009-10-08 00:59:15 -05:00
Slava Pestov 530accdad9 io.mmap: fix obsolete tests and get code to inline better 2009-09-28 03:18:27 -05:00
Slava Pestov 7ea8832556 Tweaks to reduce deployed image size 2009-09-24 06:24:43 -05:00
Daniel Ehrenberg 45ba559ce4 Merge branch 'master' of git://factorcode.org/git/factor into constraints 2009-09-22 16:09:33 -05:00
Daniel Ehrenberg 6e936bdb05 Fixing failing unit tests in compiler.tree.propagation due to constraints 2009-09-22 16:01:14 -05:00
Joe Groff 01d2ef415a get compiler tests loading 2009-09-16 09:20:47 -05:00
Slava Pestov 172219e931 compiler.tree.propagation: fix unary-op type functions with complex number inputs 2009-09-15 14:30:20 -07:00
Slava Pestov 32b95c2cdf math: add unordered comparison operators u< u<= u> u>= which behave exactly like < <= > >= except no floating point exceptions are set if one or both inputs are NaNs; also add efficient intrinsic for unordered? predicate, and fix propagation type functions for abs, absq, and bitnot 2009-09-12 22:20:13 -05:00
Slava Pestov dd661edf46 compiler.tree.propagation: convert /i of a positive integer by a power of two into a shift 2009-09-11 21:03:11 -05:00
Slava Pestov 7f2e2b1777 Specialized array overhaul
- Replace hand-written specialized-arrays.* subvocabularies with new system; instead of USE:ing specialized-arrays.T, do SPECIALIZED-ARRAY: T
- Ditto for specialized-vectors; use SPECIALIZED-VECTOR:
- io.mmap.functor: removed entirely, use <mapped-array> instead
- struct-arrays and struct-vectors have been removed because specialized arrays and vectors subsume them entirely
2009-09-09 22:33:34 -05:00
Slava Pestov bbca00e2ae Fix conflicts 2009-09-07 23:51:25 -05:00
Slava Pestov 9f9b6bca01 compiler.tree.propagation: type check inputs to unsafe foldable words manually, so that stuff like [ "Hi" { } fixnum+fast ] doesn't crash in the compiler 2009-09-07 23:40:23 -05:00
Slava Pestov e36a0d7ef4 compiler: clean up code generation for alien boxing/unboxing a bit 2009-09-03 21:22:43 -05:00
Slava Pestov ae051e0c9a compiler.tree.propagation: type function for clone had an issue, sometimes clone would get optimized out because of incorrect constant folding 2009-09-03 02:40:18 -05:00
Slava Pestov ba0f3a9911 compiler.tree.propagation.transforms: don't fail to compile if 'at' called on something that's not an assoc 2009-08-27 18:57:56 -05:00
Slava Pestov f01f7ad6eb compiler.tree.propagation: bitand custom inlining was wrong if the second input was a bignum 2009-08-20 03:47:07 -05:00
Slava Pestov 2dc99ea05f Fix interval inference of abs, absq when input is a complex number 2009-08-19 16:06:37 -05:00
Slava Pestov 829107902e compiler.tree.propagation: improved interval inference for absq eliminates a conditional from math.vectors:distance. Type inference for rational math also a bit sharper now 2009-08-19 02:33:41 -05:00
Slava Pestov 3047d4a451 compiler.tree.propagation: remove method inlining heuristic 2009-08-17 22:29:05 -05:00
Doug Coleman 3f3d57032b Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places, minor refactoring 2009-08-13 19:21:44 -05:00
Slava Pestov 7e35723db0 compiler.tree.propagation: be more careful with intervals, ensuring that the inferred interval of a value is a subset of the value class's interval. This improves accuracy, for example [ >fixnum 1 + >fixnum most-positive-fixnum <= ] constant-folds to true 2009-08-10 01:16:49 -05:00
Slava Pestov e400d80d8b More accurate interval inference for mod, rem, and propagation can now infer intervals in the case where a value might be f. so, [ [ 127 bitand ] [ drop f ] if dup [ 0 >= ] [ not ] if ] now constant-folds down to 't'! 2009-08-08 23:03:45 -05:00
Slava Pestov 61ea749bb6 More accurate interval-mod and interval-rem 2009-08-08 22:01:12 -05:00
Slava Pestov 3fb4fc1bde Improve code generation for shift word: add intrinsics for fixnum-shift-fast in the case where the shift count is not constant, transform 1 swap shift into a more overflow check with open-coded fast case, transform bitand into fixnum-bitand in more cases 2009-07-16 23:50:48 -05:00
Daniel Ehrenberg ee3e84a1f8 define-partial-eval framework in propagation pass makes it easy to add transforms; moving some transforms from stack checker to propagation, making them stronger 2009-07-16 00:34:50 -05:00
Daniel Ehrenberg bb06facb01 new is inlined in the propagation pass when the class is known 2009-07-14 14:16:39 -05:00