Commit graph

875 commits

Author SHA1 Message Date
Justin Ethier
dfdd84d585 Issue #198 - Remove custom "member" function 2017-05-08 18:44:29 -04:00
Justin Ethier
1391186a6f Inline (exact?) and (exact-integer?) 2017-05-04 08:40:59 +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
94fac5c512 Expand number of inlined prims 2017-04-29 07:01:29 +00:00
Justin Ethier
70c5212fd2 Added inlines back 2017-04-29 01:27:03 +00:00
Justin Ethier
75b9e7bf8a Explicit inlines 2017-04-29 01:18:39 +00:00
Justin Ethier
edccb56163 bugfixes 2017-04-30 19:03:44 -04:00
Justin Ethier
9a98356589 Added lib:inlines 2017-04-30 18:52:21 -04: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
fef4663f78 Remove old function 2017-04-28 18:10:32 -04:00
Justin Ethier
eb4fe26284 Relocated function 2017-04-28 17:54:04 +00:00
Justin Ethier
19e0346968 Temporary workaround for name conflict
A longer-term solution will need to address cases where a function is defined with the same name as an inlinable function from another library. These are effectively promoted to primitives, which are not renamed by alpha conversion.

A possible workaround might be to allow a global in the module being compiled to "override" a primitive of the same name. TBD
2017-04-27 18:11:57 -04:00
Justin Ethier
e469f4d5a6 Added (imported?) 2017-04-26 17:22:33 -04:00
Justin Ethier
6e1073387a Expose UDF inlines and original symbols 2017-04-24 23:03:09 +00:00
Justin Ethier
1c82f0e74a Add Scheme inlines to global inline list 2017-04-24 22:08:15 +00: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
62559ee2c0 No extra comma for inlined scheme functions 2017-04-19 00:54:01 +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
506a7e6136 Generate code using new return_copy macro 2017-04-18 20:36:05 +00:00
Justin Ethier
bd9119c274 WIP 2017-04-18 19:14:52 +00:00
Justin Ethier
021113ced4 Add cps param 2017-04-20 17:57:59 -04:00
Justin Ethier
f50aafffe4 WIP - starting to add cps parameter 2017-04-18 13:49:34 +00:00
Justin Ethier
2da2317a91 Rename param to "cps?" 2017-04-18 13:21:19 +00:00
Justin Ethier
b27dab456d WIP 2017-04-18 12:44:45 +00:00
Justin Ethier
68b8e1fc38 WIP 2017-04-18 10:53:30 +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
529585d92c Expose list of inlinable functions 2017-04-17 18:11:51 -04:00
Justin Ethier
08a960306c WIP 2017-04-17 17:46:39 +00:00
Justin Ethier
719cbaec2f Inline log and sin 2017-04-17 16:59:53 +00:00
Justin Ethier
396888f1b8 Bug fixes for listing inlinables 2017-04-17 16:59:41 +00:00
Justin Ethier
3fbdbb2e72 WIP - output list of inlinable funcs 2017-04-17 14:22:27 +00:00
Justin Ethier
8cb74fb075 Inline version of truncate 2017-04-17 10:27:23 +00:00
Justin Ethier
7cc3532385 Version bump 2017-04-15 19:18:47 -04:00
Justin Ethier
498fa6f54e Issue #194 - Disable inline define-c's for now 2017-04-12 18:01:33 -04:00
Justin Ethier
861330bc82 WIP 2017-04-05 19:00:42 -04:00
Justin Ethier
4b8d143627 Cleanup 2017-04-05 18:08:08 -04:00