50a1c33adb
Adjust code lines.
2020-09-18 14:42:50 -07:00
d153af5212
Get rid of more constructors and make mangled names optional.
2020-09-18 14:09:03 -07:00
a336b27b6c
Remove unneeded explicit calls to std::string
2020-09-18 12:27:57 -07:00
97eb4b6e3e
Fix silent error in set_mangled_name
2020-09-18 12:02:37 -07:00
430768eac5
Add a TODO to part 13.
2020-09-17 22:56:08 -07:00
5db864881a
Fix use of wrong environment for name mangling.
2020-09-17 22:55:27 -07:00
d3b1047d37
Renamed the file since we have no optimization.
2020-09-17 22:36:43 -07:00
98cac103c4
Update blog post, switching away from two sections.
2020-09-17 22:35:40 -07:00
7226d66f67
Remove the parent method from type_env.
2020-09-17 22:35:12 -07:00
8a352ed3ea
Roll back optimization changes.
2020-09-17 20:45:24 -07:00
02f8306c7b
Use an instruction instead of a special-case boolean instruction.
2020-09-17 18:33:52 -07:00
cf6f353f20
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
7a631b3557
Make a few more things classes.
2020-09-17 18:30:41 -07:00
5e13047846
Make global scope a class.
2020-09-15 19:45:05 -07:00
c17d532802
Make type_mgr a class.
2020-09-15 19:19:58 -07:00
55e4e61906
Make mangler a class and reformat graph.
2020-09-15 19:13:48 -07:00
f2f88ab9ca
Make env a class.
2020-09-15 19:12:12 -07:00
ba418d357f
Make type_env a class.
2020-09-15 19:10:36 -07:00
0e3f16139d
Make llvm_context a class.
2020-09-15 19:08:00 -07:00
55486d511f
Make some refactors for name mangling and encapsulation.
2020-09-15 18:51:28 -07:00
6080094c41
Require mangled names for global variables.
2020-09-15 14:39:31 -07:00
6b8d3b0f8a
Refactor errors and update post draft.
2020-09-11 21:29:49 -07:00
725958137a
Factor type into case strategy constructor.
2020-09-11 13:03:00 -07:00
1f6b4bef74
Start working on part 13 of compiler series.
2020-09-11 02:16:57 -07:00
fe1e0a6de0
Switch to using FILE* and default YY_INPUT.
2020-09-11 02:16:29 -07:00
1f3c42fc44
Change constructor visibility to global.
...
Constructors are always effectively global.
2020-09-10 20:11:55 -07:00
8bf67c7dc3
Merge branch 'master' of https://dev.danilafe.com/Web-Projects/blog-static into master
2020-09-10 18:47:55 -07:00
13214cee96
Try out unboxing integers.
2020-09-10 17:32:16 -07:00
579c7bad92
Enable more syntax.
2020-09-10 16:04:44 -07:00
f00a6a7783
Actually use the environment for binop functions.
2020-09-10 16:03:56 -07:00
2a81fdd9fb
Stop using mangled names for local variables.
2020-09-10 15:14:19 -07:00
17c59e595c
Add assertion regarding local name mangling.
2020-09-10 15:05:02 -07:00
ad2576eae2
Move common code into loops.
2020-09-10 14:50:03 -07:00
72d8179cc5
Add compile-time flag to disable output.
2020-09-10 14:07:28 -07:00
dbabec0db6
Tweak parsed type error warning.
2020-09-10 14:04:06 -07:00
76675fbc9b
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
ca395b5c09
Add programs to trigger error cases.
2020-09-10 14:02:19 -07:00
1a05d5ff7a
Add type errors to identifier nodes.
2020-09-10 12:59:26 -07:00
56f0dbd02f
Prevent case compilation from crashing and burning.
2020-09-10 12:53:55 -07:00
9fc0ff961d
Add more built-in boolean-specific instructions.
2020-09-10 12:44:41 -07:00
73441dc93b
Register booleans as internal types.
2020-09-10 00:54:35 -07:00
df5f5eba1c
Make sure to delete LLVM target machine.
2020-09-09 23:45:48 -07:00
d950b8dc90
Initialize graph indegree.
2020-09-09 23:44:53 -07:00
85394b185d
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
86b49f9cc3
Add 'internal' types.
2020-09-09 18:08:38 -07:00
9769b3e396
Replace throw 0 with real exceptions or assertions.
2020-09-09 17:19:23 -07:00
e337992410
Add sources for unification type errors.
2020-09-09 15:26:18 -07:00
d5c3a44041
Add extra line after code fence.
2020-09-09 15:25:48 -07:00
eade42be49
Print locations in non-unification type errors.
2020-09-09 15:15:25 -07:00
d0fac50cfd
Add locations to patterns.
2020-09-09 15:15:09 -07:00