Commit Graph

47 Commits

Author SHA1 Message Date
fb5a8a5a73 Change tagging to assume sign extension.
ARM and x86_64 require "real" pointers to be
sign-extended in their top bits. This means
a working pointer is guaranteed to have either "11"
as leading bits, or "00". So, to tag a "fake" pointer
which is an unboxed 32-bit integer, we simply toggle
the leading bit.
2020-09-17 18:30:55 -07:00
dfe47548cf Make a few more things classes. 2020-09-17 18:30:41 -07:00
a5597aeae0 Make global scope a class. 2020-09-15 19:45:05 -07:00
127f51041b Make type_mgr a class. 2020-09-15 19:19:58 -07:00
f4b5069125 Make mangler a class and reformat graph. 2020-09-15 19:13:48 -07:00
3fbca52845 Make env a class. 2020-09-15 19:12:12 -07:00
8b897c9636 Make type_env a class. 2020-09-15 19:10:36 -07:00
6a655827d3 Make llvm_context a class. 2020-09-15 19:08:00 -07:00
ed1f9a1460 Make some refactors for name mangling and encapsulation. 2020-09-15 18:51:28 -07:00
18aac4c8fd Require mangled names for global variables. 2020-09-15 14:39:31 -07:00
03465c07ce Refactor errors and update post draft. 2020-09-11 21:29:49 -07:00
4cdb9360fb Factor type into case strategy constructor. 2020-09-11 13:03:00 -07:00
9a591d6da6 Switch to using FILE* and default YY_INPUT. 2020-09-11 02:16:29 -07:00
820a8bc5e9 Change constructor visibility to global.
Constructors are always effectively global.
2020-09-10 20:11:55 -07:00
30b7b4143b Try out unboxing integers. 2020-09-10 17:32:16 -07:00
362d9b05dc Enable more syntax. 2020-09-10 16:04:44 -07:00
99f7f45d51 Actually use the environment for binop functions. 2020-09-10 16:03:56 -07:00
e7afa126c8 Stop using mangled names for local variables. 2020-09-10 15:14:19 -07:00
688463570c Add assertion regarding local name mangling. 2020-09-10 15:05:02 -07:00
d3c719436a Move common code into loops. 2020-09-10 14:50:03 -07:00
a940503cea Add compile-time flag to disable output. 2020-09-10 14:07:28 -07:00
b23ffe1b21 Tweak parsed type error warning. 2020-09-10 14:04:06 -07:00
828be79ab5 Make make_case_for throw from the second time on.
Also clean up the errors thrown a little bit.
2020-09-10 14:03:04 -07:00
0e816e523a Add programs to trigger error cases. 2020-09-10 14:02:19 -07:00
2ede230704 Add type errors to identifier nodes. 2020-09-10 12:59:26 -07:00
87b51819e8 Prevent case compilation from crashing and burning. 2020-09-10 12:53:55 -07:00
b03e68bb28 Add more built-in boolean-specific instructions. 2020-09-10 12:44:41 -07:00
9393e35a84 Register booleans as internal types. 2020-09-10 00:54:35 -07:00
b6df158280 Make sure to delete LLVM target machine. 2020-09-09 23:45:48 -07:00
adc95c8d04 Initialize graph indegree. 2020-09-09 23:44:53 -07:00
c7b2a4959f Add prototype impl of case specialization.
Boolean cases could be translated to ifs, and
integer cases to jumps. That's still in progress.
2020-09-09 22:49:35 -07:00
c1a8dc4557 Add 'internal' types. 2020-09-09 18:08:38 -07:00
92a9ec2021 Replace throw 0 with real exceptions or assertions. 2020-09-09 17:19:23 -07:00
1f7a53ccf6 Add sources for unification type errors. 2020-09-09 15:26:18 -07:00
80f181cbb6 Add extra line after code fence. 2020-09-09 15:25:48 -07:00
34357163cd Print locations in non-unification type errors. 2020-09-09 15:15:25 -07:00
945d0f31c3 Add locations to patterns. 2020-09-09 15:15:09 -07:00
bdaa046a8c Require C++17 for optionals 2020-09-09 15:14:37 -07:00
588ce99601 Add locations to error reporting. 2020-09-09 15:08:43 -07:00
07ac3d72e4 Add a method to print location. 2020-09-09 14:41:16 -07:00
2752703038 Touch up source index code. 2020-09-09 14:20:10 -07:00
c648e20a02 Keep track of locations in definitions. 2020-09-09 14:19:46 -07:00
350a630213 Make driver keep track of line numbers and locations. 2020-09-09 13:57:01 -07:00
5a9d4c1e92 Update ASTs to actually take in locations.
Didn't realize I broke the build by leaving this out.
2020-09-09 13:29:28 -07:00
a6839c548e Start using driver, and switch to file IO. 2020-09-09 13:28:43 -07:00
2f09401685 Enable locations. 2020-09-09 12:21:50 -07:00
e7367ef86e Fork off version 13 of the compiler. 2020-09-08 18:38:05 -07:00