Commit graph

3358 commits

Author SHA1 Message Date
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
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
62613e537e Remove experimental code 2017-04-18 07:48:38 +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