[video member=pervognsen stream_platform=twitch project=bitwise title="More Compiler Hacking" vod_platform=youtube id=UvYeis032Ok annotator=Miblo]
[0:00][Recap and set the stage for the day][:speech]
[0:30][Review the newly explicit package namespace semantics, and the current status of anonymous structs / unions][:language :parsing :research]
[3:13][Review the changed implementation of anonymous structs / unions][:language :parsing :research]
[5:09][Demo the shortcoming of the current implementation, regarding incorrect layout of anonymous structs / unions][:language :memory :research]
[6:12][Review bug fix in type_complete_union() regarding struct member alignment][:language :memory :research]
[7:48][Set up to correctly lay out anonymous structs / unions][:language :memory :speech]
[11:41][Dive into enabling our aggregate code to produce correctly aligned anonymous structs / unions][:language :memory]
[31:16][Set up to add some anonymous structs / unions test cases to test1.ion][:language :memory]
[32:13][:Run it and hit our assertion in cdecl_name()][:language :memory]
[32:34][Temporarily skip gen_typeinfos() and introduce test_token()][:language :memory]
[33:24][Step through complete_aggregate() to type_complete_union() to see that they correctly align our test anonymous struct / union][:language :memory :run]
[34:25][Enable complete_aggregate() to push a subaggregate_type][:language :memory]
[35:18][Step through type_complete_struct() to see that it completes our type, but is not inlining the fields into the parent struct][:language :memory :run]
[36:34][Introduce add_type_fields() to inline the fields of anonymous struct / unions into the parent][:language :memory]
[47:52][Test our anonymous struct alignment, to see that it is not correct][:language :memory :programming :run]
[48:56][Fix add_type_fields(), type_complete_struct() and type_complete_union() to correctly offset our fields][:language :memory]
[53:57][Test our anonymous struct field alignment to find that it is not correct][:language :memory :programming :run]
[56:10][Step into type_complete_union() to inspect its data][:language :memory :programming :run]
[56:46][Fix type_complete_union() and type_complete_struct() to align and size our fields after inlining them into the parent][:language :memory]
[58:09][Test it to find that it all works][:language :memory :programming :run]
[59:04][Enable gen_typeinfos() to generate type info for anonymous structs / unions][:"code generation" :language :parsing]
[1:00:23][Check out our generated type info to see that our typeinfo_table\[\] is wrong][:"code generation" :language :research]
[1:01:07][Enable is_excluded_typeinfo() to handle defined and anonymous structs / unions differently][:"code generation" :language :parsing]
[1:01:46][Check out our generated type info to see that our anonymous types don't show up][:"code generation" :language :research]
[1:03:50][Q&A][:speech]
[1:03:58][@xanatos387][So, what is the general plan for the next few weeks? We were working on the simulator for a bit; we still need to create our own HDL as well? Will creating the HDL be the start of the :hardware / FPGA section? How far do we plan to take the simulator in the near term?][:emulation]
[1:08:58][Read through our anonymous struct / union code][:"code generation" :language :research]
[1:09:57][Demo the bug in complete_aggregate() regarding undetected duplicate fields when anonymous structs / unions are in the mix][:"code generation" :language :parsing :run]
[1:10:26][Fix has_duplicate_fields() to handle anonymous types][:"code generation" :language :parsing]
[1:11:44][:Run it to see that it detects duplicate fields across subtypes][:"code generation" :language :parsing]
[1:13:02][Rename subaggregate_type to item_type in complete_type()][:language]
[1:13:20][Glance over the new anonymous struct / union code one more time, to see that it looks reasonable][:"code generation" :language :research]
[1:14:55][@miotatsu][The forth implementation is going to be fun. I've been planning to translate jonesforth to RISC-V :asm on my own series as an early exercise][:language]
[1:16:33][@miotatsu][It seems like a pretty ideal :language to me for bootstrapping more complex things]
[1:17:57][That's it for today][:speech]
[/video]
