diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-07-27 16:01:55 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-07-27 17:47:59 -0700 |
commit | 6e1eeeebfb453fa7c871869c19375ce60fbd7413 (patch) | |
tree | 539c4a3fdf1756ae79770d5c4aaf6366f1d1525e /999spaces.cc | |
parent | 8846a7f85cc04b77b2fe8a67b6d317723437b00c (diff) | |
download | mu-6e1eeeebfb453fa7c871869c19375ce60fbd7413.tar.gz |
5485 - promote SubX to top-level
Diffstat (limited to '999spaces.cc')
-rw-r--r-- | 999spaces.cc | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/999spaces.cc b/999spaces.cc deleted file mode 100644 index adbbf8a9..00000000 --- a/999spaces.cc +++ /dev/null @@ -1,86 +0,0 @@ -//: Since different layers all carve out different parts of various namespaces -//: (recipes, memory, etc.) for their own use, there's no previous place where -//: we can lay out the big picture of what uses what. So we'll do that here -//: and just have to manually remember to update it when we move boundaries -//: around. -//: -//:: Memory -//: -//: Location 0 - unused (since it can help uncover bugs) -//: Locations 1-899 - reserved for tests -//: Locations 900-999 - reserved for predefined globals in Mu scenarios, like keyboard, screen, etc. -:(before "End Reset") -assert(Max_variables_in_scenarios == 900); -//: Locations 1000 ('Reserved_for_tests') onward - available to the allocator in chunks of size Initial_memory_per_routine. -assert(Reserved_for_tests == 1000); - -//:: Recipes -//: -//: 0 - unused (IDLE; do nothing) -//: 1-199 - primitives -assert(MAX_PRIMITIVE_RECIPES < 200); -//: 200-999 - defined in .mu files as sequences of primitives -assert(Next_recipe_ordinal == 1000); -//: 1000 onwards - reserved for tests, cleared between tests - -//:: Depths for tracing -//: -//: 0 - errors -//: 1-99 - app-level trace statements in Mu -//: 100-9999 - call-stack statements (mostly label run) -assert(Initial_callstack_depth == 100); - -//:: Summary of transforms and their dependencies -//: begin transforms -//: begin instruction inserting transforms -//: 52 insert fragments -//: ↳ 52.2 check fragments -//: --- -//: 53 rewrite 'stash' instructions -//: end instruction inserting transforms -//: -//: begin instruction modifying transforms -//: 56.2 check header ingredients -//: ↳ 56.4 fill in return ingredients -//: 48 check or set types by name -//: -//: begin type modifying transforms -//: 56.3 deduce types from header -//: --- -//: 30 check or set invalid containers -//: end type modifying transforms -//: ↱ 46 collect surrounding spaces -//: ↳ 42 transform names -//: ↳ 57 static dispatch -//: --- -//: 13 update instruction operation -//: 40 transform braces -//: 41 transform labels -//: end instruction modifying transforms -//: ↳ 60 check immutable ingredients -//: -//: begin checks -//: --- -//: 21 check instruction -//: ↳ 61 check indirect calls against header -//: ↳ 56 check calls against header -//: ↳ 43 transform 'new' to 'allocate' -//: 30 check merge calls -//: 36 check types of return instructions -//: 43 check default space -//: 56 check return instructions against header -//: end checks -//: end transforms - -//:: Summary of type-checking in different phases -//: when dispatching instructions we accept first recipe that: -//: strictly matches all types -//: maps literal 0 or literal 1 to boolean for some ingredients -//: performs some other acceptable type conversion -//: literal 0 -> address -//: literal -> character -//: when checking instructions we ensure that types match, and that literals map to some scalar -//: (address can only map to literal 0) -//: (boolean can only map to literal 0 or literal 1) -//: (but conditionals can take any scalar) -//: at runtime we perform no checks |