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
cd2ed0c0dd
Rev
2017-05-10 16:49:27 +00:00
Justin Ethier
e005f0d37e
Revised header
2017-05-10 16:48:34 +00:00
Justin Ethier
fe485e7d59
Summary of changes in this release.
2017-05-10 12:13:42 +00:00
Justin Ethier
8be4221c1c
Cleanup, adjust formatting, remove debug statement
2017-05-10 10:37:55 +00:00
Justin Ethier
ea2550a882
Issue #199 - More efficient memory usage
...
Only use a single int on the heap to store the number of huge heap allocations. There is no need to track allocations on the other heaps, at least at this time.
2017-05-10 10:12:25 +00:00
Justin Ethier
95e15dd3c2
Issue #199 - Initiate GC using huge GC alloc count
...
Free space does not work for huge heaps since often they are allocated on demand as a full page at a time. But if more than X huge pages have been allocated, it is probably a good time to initiate a major GC.
2017-05-09 23:01:44 +00:00
Justin Ethier
d533cf6910
Use double_type as ptr type for UDF inlines
...
Cannot use common_type as it leads to segfaults when running the gcbench benchmark. There must be an alignment problem or such that seems to work most of the time but is ultimately unstable.
2017-05-09 21:44:26 +00:00
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