Commit graph

3293 commits

Author SHA1 Message Date
Justin Ethier
27bacda445 Use car instead of cell_get
car is much faster since there is no function overhead.
2017-05-09 15:33:56 +00:00
Justin Ethier
45c27f5a3a Experimenting with wrap-mutable optimizations 2017-05-09 15:19:29 +00:00
Justin Ethier
e6eeeb958e Merge branch 'inline7-dev' 2017-05-09 13:00:21 +00:00
Justin Ethier
bd3b662bb9 Added 0.5.1 features section 2017-05-09 12:58:01 +00:00
Justin Ethier
48ee3708d5 Inline more define-c functions 2017-05-09 12:44:42 +00:00
Justin Ethier
dfdd84d585 Issue #198 - Remove custom "member" function 2017-05-08 18:44:29 -04:00
Justin Ethier
0060ac4d6e Update Writing-the-Cyclone-Scheme-Compiler-Revised-2017.md 2017-05-06 22:24:27 -04:00
Justin Ethier
c96fa9ba34 Update AUTHORS
Thanks for all your help with 0.5 (Arthur) and Windows/msys2 support (Kashyap)
2017-05-06 22:21:11 -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
b74213ec2d Attempt 2 CPS optimization passes 2017-05-04 05:11:23 +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
7a90159109 WIP 2017-05-02 18:55:40 -04:00
Justin Ethier
2662a15622 Temporary test file 2017-05-02 18:55:01 -04:00
Justin Ethier
94fac5c512 Expand number of inlined prims 2017-04-29 07:01:29 +00:00
Justin Ethier
0d3ae68f87 Reorganize allocated_bytes to try to speed it up 2017-04-29 07:01:06 +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
10569ddcfd Get root library name 2017-04-29 00:46:47 +00:00
Justin Ethier
dc42d5a1d4 Only inline specifically designated functions 2017-04-28 21:28:30 +00:00
Justin Ethier
8b6830ea49 WIP - explicit inlines 2017-04-30 19:04:53 -04: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
8d7bff212a WIP 2017-04-28 17:43:57 +00:00
Justin Ethier
4ae3269373 WIP 2017-04-27 19:06:08 -04:00
Justin Ethier
9b3a4769dc Avoid naming conflicts with user defined inlines
Do not allow an inline if it conflicts with a global in the current module. This at least attempts to avoid obvious name conflicts. TBD if it is good enough or if additional fixes are necessary.
2017-04-27 18:52:22 -04: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
c2929af714 Added exception handler 2017-04-26 18:08:07 -04:00
Justin Ethier
51a1a63700 Register built-in inlines 2017-04-26 17:35:58 -04:00
Justin Ethier
e469f4d5a6 Added (imported?) 2017-04-26 17:22:33 -04:00
Justin Ethier
f88016eb3e WIP 2017-04-25 06:22:40 +00:00
Justin Ethier
3d2fdb36d9 WIP 2017-04-24 23:30:27 +00:00
Justin Ethier
998fb4efaa WIP 2017-04-24 23:27:25 +00: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
0dafd88ed3 Check for inlinable functions after prim conv
At this point there are more opportunities for inlining.
2017-04-24 18:57:52 -04:00
Justin Ethier
24f9651232 Cleanup networking examples 2017-04-24 18:05:06 -04:00
Justin Ethier
0656756ab4 Simplify logic 2017-04-24 17:58:05 +00:00