Commit graph

233 commits

Author SHA1 Message Date
Justin Ethier
341679a479 WIP - beta expansion 2017-05-12 17:30:10 +00:00
Justin Ethier
9618e35364 Experimental beta expansion code 2017-05-11 17:53:47 +00:00
Justin Ethier
93f87ac4c3 Allow inlines if a var is passed to a continuation 2017-05-04 08:22:01 +00:00
Justin Ethier
72c1bb9bea Keep track of which refs are continuations 2017-05-04 07:03:05 +00:00
Justin Ethier
3bd5d52671 Keep track of lambda's with continuations 2017-05-04 06:50:09 +00:00
Justin Ethier
c7aa3700ea Also identify pure functions using assigned-var
This identifies cases where a pure function exits but is defined inline rather than at the top-level.
2017-05-04 05:11:46 +00:00
Justin Ethier
8be8014a1b Allow inlining refs passed to pure lambdas 2017-05-03 22:18:13 +00:00
Justin Ethier
1a973cafd8 Added lambda side effect analysis 2017-05-03 21:54:51 +00:00
Justin Ethier
6881285e0c Added analyze-find-lambdas 2017-05-03 20:30:19 +00:00
Justin Ethier
8ef7060463 Storage for lambda side effects 2017-05-03 19:52:06 +00:00
Justin Ethier
7389417e39 If prim mutates args, ignore ivar if not mutated 2017-04-29 11:13:50 +00:00
Justin Ethier
79cde357b1 Experimental change 2017-04-29 11:02:58 +00:00
Justin Ethier
a2c0d8c511 Debug traces 2017-04-29 19:02:23 -04:00
Justin Ethier
f80da86712 Do not inline functions with free vars 2017-04-28 18:27:51 -04:00
Justin Ethier
eb4fe26284 Relocated function 2017-04-28 17:54:04 +00:00
Justin Ethier
1f8fb3c20d Issue #172 -
Cannot assume that just because a primitive deals with immutable objects that it is safe to inline.  A (set!) could still mutate variables the primitive is using, causing invalid behavior.
2017-02-07 18:40:30 +00:00
Justin Ethier
1c6388bfaf Designated more objs that allocate mutable objs 2016-12-14 17:32:27 -05:00
Justin Ethier
44bd8986d7 WIP 2016-12-14 03:35:15 +00:00
Justin Ethier
45d040c955 Experiment with always inlining certain prims 2016-12-13 19:03:24 -05:00
Justin Ethier
eea9631347 Remove debug traces 2016-11-17 18:57:17 -05:00
Justin Ethier
88e54286bb Do not inline if there is an indirect mutation 2016-11-17 18:52:00 -05:00
Justin Ethier
11cf558ba8 Added indirect-mutations 2016-11-17 18:18:52 -05:00
Justin Ethier
12770291b7 Issue #132 - Protect against hang 2016-11-12 06:02:33 +00:00
Justin Ethier
004fa655d5 Experimental inline change
At least for now, use both inlinable analysis (fast path) and inline-ok (slow path, but finds more optimizations).
2016-11-10 20:59:38 +00:00
Justin Ethier
aa70c5ece9 Updated comments 2016-11-10 19:47:53 +00:00
Justin Ethier
ac021ef35e WIP 2016-11-10 19:03:54 -05:00
Justin Ethier
965aadc0d6 More experimental changes 2016-11-10 18:56:44 +00:00
Justin Ethier
a6eafa7869 Experimental code 2016-11-10 18:45:34 +00:00
Justin Ethier
c2fd9d3383 Remove trace 2016-11-10 18:39:05 +00:00
Justin Ethier
adb0beb878 Detect potential optimization 2016-11-10 18:38:14 +00:00
Justin Ethier
67f0f792b3 Added analyze:find-inlinable-vars 2016-11-10 17:06:05 +00:00
Justin Ethier
e97234905a Allow inline of ref for an if condition
If the if condition is a single ref, it should be OK to inline that.
2016-11-09 18:20:43 -05:00
Justin Ethier
e19c4db19d Issue #130 - Inline constant values 2016-11-07 18:20:19 -05:00
Justin Ethier
5cf0cd048b debugging 2016-08-16 03:52:22 -04:00
Justin Ethier
6643eeb083 Fix and attempt to improve (if) optimization 2016-07-29 19:05:50 -04:00
Justin Ethier
0fb83a8100 Optimize (if #f x y) to just y 2016-07-29 18:52:00 -04:00
Justin Ethier
5eeef5d992 Added (Cyc-compilation-environment) 2016-07-30 03:12:17 -04:00
Justin Ethier
c23d3c4a7a Added more functions to (prim-creates-mutable-obj?) 2016-07-15 19:37:16 -04:00
Justin Ethier
9311ee5f83 Generalized CPS optimization fix 2016-07-15 02:55:53 -04:00
Justin Ethier
ccf8329ffb WIP 2016-07-14 23:54:51 -04:00
Justin Ethier
c733e440d4 WIP 2016-07-14 23:31:03 -04:00
Justin Ethier
63d6d8fbab Cleanup 2016-06-09 03:13:56 -04:00
Justin Ethier
7fa4cd4ebd Allow optimizing non-mutating prims 2016-06-09 00:04:30 -04:00
Justin Ethier
0f7839c4ce Remove debugging 2016-06-08 23:36:36 -04:00
Justin Ethier
741e71415e Finished (inline-ok?) 2016-06-08 23:27:16 -04:00
Justin Ethier
d415ccee31 WIP 2016-06-07 22:52:02 -04:00
Justin Ethier
2f326c0efc Do not optimize-out variables if they are:
- Mutated
- Never referenced (implies operation is performed for side effects)
2016-06-07 00:03:57 -04:00
Justin Ethier
9b548b94c3 WIP 2016-06-03 22:47:45 -04:00
Justin Ethier
d112632300 WIP 2016-06-03 21:51:07 -04:00
Justin Ethier
bafa80f63b Remove debug output 2016-06-04 04:27:47 -04:00