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