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
Justin Ethier
4b35ff71df
Do not copy pairs
...
Already do not allow cons to be inlined, so it is (should be?) safe to pass any pairs directly through. Cannot make copies of any pairs except those between ptr and stack_top because that could cause equality checks to fail later on.
2017-04-24 17:40:08 +00:00
Justin Ethier
7a7419a3f4
Prevent null ref
2017-04-24 16:16:00 +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
9b7a5e3cfe
Explicitly check for a (define) form
2017-04-19 00:25:47 +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
5bc26c072a
Added the return_copy macro
2017-04-18 23:20:51 +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
9f26868ef0
Exclude lib init from inlinable top level funcs
2017-04-18 12:51:30 +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
d27b55d27b
Allow scheme inlines through, though C comp fails
2017-04-18 09:54:13 +00:00
Justin Ethier
547d1e218d
Re-enable inline searching code
2017-04-18 09:02:44 +00:00
Justin Ethier
33ba61578b
Remove unsafe code
2017-04-18 08:31:25 +00:00
Justin Ethier
124c137987
WIP
2017-04-18 07:47:32 +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
fc8b09ed34
Version bump
2017-04-18 01:17:29 +00: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
a173ecb201
Issue #194 - Use write barrier
...
When allocating vectors directly on the heap, use write barrier to ensure fill is moved to heap. This prevents the possibility of fill being corrupted.
2017-04-15 19:16:32 -04:00
Justin Ethier
36a4e91c5e
Prepping 0.5 release
2017-04-13 18:08:22 -04:00
Justin Ethier
a13dcea054
Updated release
2017-04-13 13:41:41 +00:00
Justin Ethier
498fa6f54e
Issue #194 - Disable inline define-c's for now
2017-04-12 18:01:33 -04:00
Justin Ethier
a02af12dce
Testing
2017-04-06 17:57:20 +00:00
Justin Ethier
f9941759ad
Temporary test file
2017-04-05 19:00:51 -04:00