Commit graph

180 commits

Author SHA1 Message Date
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