Commit Graph

743 Commits

Author SHA1 Message Date
Nathan Braswell 3a7f73b711 sigh 2017-01-23 01:09:31 -05:00
Nathan Braswell beb50b8e25 3 sec laptop speed improvement in hash_map 2017-01-22 16:36:04 -05:00
Nathan Braswell ebb34d5ba3 Replace visited list for pass_common with hash_set (which isn't complete, but has the basics) for a massive speedup (6xish) 2017-01-22 10:13:06 -05:00
Nathan Braswell 896e8a936c Merge branch 'ref_lower' 2017-01-21 22:50:59 -05:00
Nathan Braswell d9814a278a It does work! Commented out ctce_pass test because it chokes on the new iteration styrategery 2017-01-21 22:50:29 -05:00
Nathan Braswell 5a6f498043 Working! 2017-01-21 22:01:47 -05:00
Nathan Braswell 21f957195a Fix dreferencing function_call refs. Now need to make sure new pass method works with defer_lower, which currently does very crazy defer double stack chains 2017-01-20 01:31:28 -05:00
Nathan Braswell e2639989c9 ref_lower now generates C, though a ton of syntax errors 2017-01-20 01:11:06 -05:00
Nathan Braswell 2a53d5539d Modify captain.sh to use /usr/bin/env bash 2016-11-23 23:57:01 +00:00
Nathan Braswell b0d2a6918d Regex rewrite for big speed gain, some extras (--no-c-compile), -O2 is default now 2016-08-02 01:33:16 -07:00
Nathan Braswell 523526f40e Improve arg parsing a bit, including parsing arbitrary flags for later use. Got (after a bunch of linker pain solved by just linking in LLVM-3.8 plain and not messing with llvm-config at all) a LLVM example working 2016-07-09 23:52:32 -07:00
Nathan Braswell c633cb5b04 CTCE Pass first implementation, but it's very slow. 2016-07-09 15:33:15 -07:00
Nathan Braswell fb63eee9e8 Commit pre enabling CTCE pass (which is quite slow, but does work). Had to add walking through cast nodes for finding variables to close over. Also had to remove the static in front of functions to prevent gcc compiling it so that it segfaults (doesn't segfault if compiled with clang, but wanted to make sure.) 2016-07-09 15:08:57 -07:00
Nathan Braswell ddd250e7f3 Fixed baking the right integer types into values from #ctce, added the rest of the integer type literals (10ul, etc), fixed/added struct padding/alignment in interpreter 2016-07-09 00:45:40 -07:00
Nathan Braswell dc5fe39083 Added static to non extern non main functions in c_generator giving a 12 second compilation speedup - added a nodes touched pass, commented out in main, and fixed the test_extern test to use the right printf arguments. 2016-07-06 22:46:57 -07:00
Nathan Braswell a5deef8c30 Transitioned to using CTCE for Kraken compile information 2016-07-06 00:22:33 -07:00
Nathan Braswell f71b5f3576 Init globals before lowering CTCE, allows CTCE to use imported functions, etc. 2016-07-06 00:16:39 -07:00
Nathan Braswell cd21e7a1cc Add in simple CTCE test 2016-07-03 23:07:34 -07:00
Nathan Braswell 067c72f77c Finish transition to the new #link syntax 2016-07-03 22:53:05 -07:00
Nathan Braswell 0f2ac1421a Basic CTCE working! In between commit because #link(a) syntax changed to #link(a) 2016-07-03 22:50:42 -07:00
Nathan Braswell 6fee942756 Refactored interpreter into just functions, added a REPL to the main kraken. 2016-07-03 15:32:45 -07:00
Nathan Braswell 87c2b1d2c1 Interpreter up to 71/73 tests passing, the only ones that don't yet are the future ones. Struct size is still wrong though 2016-07-03 01:55:32 -07:00
Nathan Braswell 2e80682f01 small double fix for interpreter 2016-07-01 09:37:14 -07:00
Nathan Braswell 9291003af7 Fixed interpreter not returning ref correctly, 65/73 tests passing 2016-06-30 22:41:32 -07:00
Nathan Braswell b4d0d20883 Fix returning functions 2016-07-01 00:08:41 -04:00
Nathan Braswell 4bf8572d21 Move functions to use a pointer to a map for closures instead of a raw map, as we cannot currently ensure that the object is made with the right size (type_size doesn't do padding, etc) 2016-06-30 17:06:34 -04:00
Nathan Braswell 76e78a2ac0 transfer work on interpreted closures 2016-06-30 09:57:41 -07:00
Nathan Braswell 4195da6492 Added union and ref = ptr workaround to interpreter (fixing adt matching), allowing test_union and test_adt to pass. 2016-06-28 01:35:54 -07:00
Nathan Braswell 284d8ac9c7 Fixed up interpreter, ADT is close to working but something's weird about what match statements are translated into 2016-06-27 01:21:24 -07:00
Nathan Braswell 15fe2aeba4 Moved copy_constructing into functions and destructing the results into obj_lower. Removed all defer_stack from c_generator. The last thing should be to move ref handling into obj_lower or maybe a pass after, then the rest of c_generator can be cleaned up and fixing interpreter (except for closures) should be easy. 2016-06-26 04:44:54 -07:00
Nathan Braswell 4cc0d26c4c Now && and || short circuiting is done in obj_lower 2016-06-25 23:56:07 -07:00
Nathan Braswell dd8fbc0489 moved munging while and for into obj_lower 2016-06-25 16:02:53 -07:00
Nathan Braswell 9de3e07715 forgot to add a dependency in captain.sh 2016-06-24 01:45:10 -07:00
Nathan Braswell e3607beabe Refactor parameter destruction into obj_lower 2016-06-24 01:42:48 -07:00
Nathan Braswell 29eff2a23e Fix defer_lower to handle return statements, starting on obj_lower which has now taken over calling destruct for declared varaibles. Some of the code from the c_generator has been commented out or bypassed to use the new system - it should be removed when it's complete. 2016-06-22 01:41:57 -07:00
Nathan Braswell 26e7ee249a Now using adt_lower, which also makes the backing deconstruct a reference, which makes sense 2016-06-20 01:52:28 -07:00
Nathan Braswell 4a33a94b15 Fixed, working unions. Had to move the is_union member to the end. I'm not sure if this is a C bug or an effect of me doing something weird somewhere 2016-06-16 23:06:38 -07:00
Nathan Braswell 59f5c6f667 found segfault member 2016-06-17 01:01:59 -04:00
Nathan Braswell 3f89cb1e37 partial rollback, might still not work 2016-06-16 09:53:15 -07:00
Nathan Braswell 4de7dd1210 Added support for unions as a step towards lowering ADTs in the next pass to be written. 2016-06-15 22:26:03 -07:00
Nathan Braswell d44293a48b Defer is now lowered in its own pass as a first step towards refactoring other things into their own passes as well 2016-06-15 01:36:59 -07:00
Marcus Godwin acb0e48324 Merge branch 'master' of https://github.com/Limvot/kraken 2016-06-14 23:32:43 -04:00
Marcus Godwin 61cfe76b6d Fix bug in future causing a segfault. Fixed the test case. 2016-06-14 23:30:12 -04:00
Nathan Braswell 27fea0e90c work on multithread, interpreter, and prototyped a #line-in-simple-passthrough ast changing pass turned on with -g 2016-06-14 02:14:25 -07:00
Marcus Godwin e3c1cbf27e remove debug printing from future 2016-06-13 20:21:23 -04:00
Nathan Braswell 1318e71efd Figured out why future crashed, added in simple threading library. Future isn't fixed yet, but could be with a similar approach 2016-06-11 11:27:48 -07:00
Nathan Braswell 2c8c3af48a Some speed improvements 2016-06-11 00:45:18 -07:00
Nathan Braswell 59969e7114 Add passthrough optimization levels 2016-06-07 23:14:52 -07:00
Nathan Braswell 889d93e16d GSS in parser now deletes old stack nodes on clear for some ram savings 2016-06-07 21:26:02 -07:00
Nathan Braswell 008cc01c70 Lambdas and function values starting to work - using the parameters or return value crashes 2016-06-01 23:28:32 -07:00