Justin Ethier
526032e52f
Include new file
2019-09-10 17:47:03 -04:00
Justin Ethier
f3c83e42a4
Optimized versions of (map) and (for-each)
...
These versions are optimized for when the function is being called with two list arguments.
2019-08-09 16:00:46 -04:00
Justin Ethier
1edb877c5f
Speed up vector
for five args or less
2019-08-02 12:13:30 -04:00
Justin Ethier
f64d429ab8
WIP
2019-02-28 09:43:58 -05:00
Justin Ethier
70b27ccd22
Speed up free-vars checking for primitives
...
We know prims are only symbols, so instead of checking for primitives in the top-level cond (which is expensive) we check for it as a sub-condition off of the (ref?) condition. This lets us avoid a call to memq unless we already are inspecting a symbol.
2018-12-18 22:00:19 -05:00
Justin Ethier
a46a9e92d3
Pre-sort the list of globals
...
This cuts down on the amount of work that must be done by the alpha conversion.
2018-12-18 16:33:24 -05:00
Justin Ethier
49017f5731
Latest attempt to speed this up
2018-12-18 13:20:43 -05:00
Justin Ethier
41d35279d0
Added TODO, comments
2018-12-18 10:08:53 -05:00
Justin Ethier
cbb8357f66
WIP - fast insert
2018-12-17 18:32:25 -05:00
Justin Ethier
68e91f2408
WIP
2018-12-16 19:03:15 -05:00
Justin Ethier
506452654f
Issue #286
2018-12-14 17:50:29 -05:00
Justin Ethier
c625e8b0e6
Second try with fast list
2018-12-05 17:39:09 -05:00
Justin Ethier
1a586b188c
Disable fast list functions
...
Having problems getting macros to work in a safe way with Cyc-seq. Since these functions were never a big win anyway, we are going to disable them for now.
2018-12-04 17:51:35 -05:00
Justin Ethier
a06d2793c8
Do not accumulate free vars from our local (let)'s
2018-11-14 18:22:51 -05:00
Justin Ethier
8aac3163af
Cleanup, remove unused identifiers from sequences
2018-11-01 13:40:57 -04:00
Justin Ethier
5868cd448c
Cleaner flattening now that code generation has been fixed
2018-11-01 13:20:20 -04:00
Justin Ethier
31e749bf5a
Flatten nested Cyc-seq expressions.
2018-10-31 17:57:30 -04:00
Justin Ethier
9d606f9d43
Fix for AST output for wrap-mutables
2018-09-05 17:45:02 -04:00
Justin Ethier
cc1bfea6f0
Update (free-vars) to include AST support
2018-09-05 12:51:21 -04:00
Justin Ethier
8f8df24b15
WIP, generate proper AST output from wrap-muts
2018-09-04 13:09:50 -04:00
Justin Ethier
b2f4502651
WIP - preserve AST through to closure-conversion
2018-08-31 19:50:58 -04:00
Justin Ethier
dd77c46400
Issue #272 - Added more predicates
2018-08-16 18:06:47 -04:00
Justin Ethier
081088ae40
Issue #272 - Optimize-out simple (if) expressions
2018-08-16 17:53:17 -04:00
Justin Ethier
2672b181ba
Test optimizing simple calls to map/for-each
2018-06-20 16:59:35 -04:00
Justin Ethier
b611520274
Optimize calls to (list)
2018-06-19 18:06:18 -04:00
Justin Ethier
6441ce9409
Relocated macro expansion code
2017-11-28 18:46:48 -05:00
Justin Ethier
a55ab6780c
Remove obsolete imports
2017-11-28 17:01:41 -05:00
Justin Ethier
eac413a2f5
Relocated functions
2017-11-27 17:43:44 -05:00
Justin Ethier
044d135b84
First working version of let-syntax
2017-11-25 19:03:00 -05:00
Justin Ethier
d590d1bf8b
Added local-env parameter
2017-11-25 17:34:38 -05:00
Justin Ethier
454fe2c26c
Additional hook required for let-syntax
2017-11-24 17:49:42 -05:00
Justin Ethier
5b8f47af43
WIP for let-syntax
2017-11-21 19:07:52 -05:00
Justin Ethier
5112aa9f46
Do not precompute user defined prim
2017-07-19 18:02:20 -04:00
Justin Ethier
2fd88a15e6
Relocate closure conversion
2017-07-07 13:03:30 +00:00
Justin Ethier
45c27f5a3a
Experimenting with wrap-mutable optimizations
2017-05-09 15:19:29 +00:00
Justin Ethier
dfdd84d585
Issue #198 - Remove custom "member" function
2017-05-08 18:44:29 -04:00
Justin Ethier
3bd5d52671
Keep track of lambda's with continuations
2017-05-04 06:50:09 +00:00
Justin Ethier
75b9e7bf8a
Explicit inlines
2017-04-29 01:18:39 +00:00
Justin Ethier
fef4663f78
Remove old function
2017-04-28 18:10:32 -04:00
Justin Ethier
8b88b8d36d
Do not inline prims that create mutable objs
2017-04-24 14:55:57 +00:00
Justin Ethier
045a86dc44
Do not inline functions w/mutating primitives
2017-04-24 13:16:23 +00:00
Justin Ethier
0262beb351
Do not try to inline large lambda bodies
...
If a lambda body contains more than one expression it must be compiled using CPS, so the inline code must reject it as a possible candidate.
2017-04-19 00:12:49 +00:00
Justin Ethier
33ba61578b
Remove unsafe code
2017-04-18 08:31:25 +00:00
Justin Ethier
f1d5bb6f83
Find inlinable scheme functions
2017-04-18 05:55:00 +00:00
Justin Ethier
b607f9a420
WIP: (inlinable-top-level-function? expr)
2017-04-18 19:03:31 -04:00
Justin Ethier
fae5813018
WIP: (inlinable-top-level-function? expr)
2017-04-17 21:34:21 +00:00
Justin Ethier
a4319fd48d
prim-convert - do not stop on first ref
2017-04-04 08:54:06 +00:00
Justin Ethier
0b76fbc8b2
Use new function from prim library
2017-04-04 05:41:45 +00:00
Justin Ethier
470ea62e9d
Handle define-c inline globals
2017-04-03 20:55:45 +00:00
Justin Ethier
2accd479c9
Cleanup
2017-03-21 11:57:53 +00:00