From 63efd05db8988100f73bed9c87a43962d630371c Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Tue, 16 Apr 2019 12:46:46 +0100 Subject: [PATCH] Chipped away at remaining explicit PR counters, which should not exist --- docs/core-module/12-dtd.html | 5 +- docs/core-module/13-rsfk.html | 283 +++++++++--------- docs/core-module/17-tl.html | 17 +- docs/core-module/17-ts.html | 10 +- docs/core-module/18-lc.html | 14 +- docs/core-module/2-sq.html | 2 +- docs/core-module/24-lv.html | 10 +- docs/core-module/26-ct.html | 2 +- docs/core-module/26-rt.html | 8 +- docs/core-module/26-vm.html | 4 +- docs/core-module/27-ei.html | 43 ++- docs/core-module/27-hl.html | 41 ++- docs/core-module/27-hr.html | 94 ++++-- docs/core-module/27-in.html | 22 +- docs/core-module/27-pc.html | 18 +- docs/core-module/27-tr.html | 8 +- docs/core-module/5-ins.html | 6 +- docs/core-module/5-lp.html | 4 +- docs/core-module/5-nv.html | 1 + docs/core-module/5-un.html | 6 +- docs/core-module/6-rlt.html | 3 +- docs/if-module/4-act.html | 3 +- docs/if-module/4-ap.html | 10 +- docs/if-module/5-gv.html | 3 +- docs/linguistics-module/4-vrb.html | 7 +- .../Chapter 12/Deciding to Defer.w | 5 +- .../Chapter 13/Runtime Support for Kinds.w | 53 ++-- .../core-module/Chapter 17/Text Literals.w | 15 +- .../Chapter 17/Text Substitutions.w | 10 +- .../core-module/Chapter 18/List Constants.w | 14 +- inform7/core-module/Chapter 26/Routines.w | 4 +- inform7/core-module/Chapter 27/Emit.w | 3 +- .../Chapter 27/Hierarchy Locations.w | 27 +- inform7/core-module/Chapter 27/Hierarchy.w | 56 +++- .../core-module/Chapter 27/Inter Namespace.w | 6 +- .../Chapter 5/Nonlocal Variables.w | 1 + inform7/core-module/Chapter 6/Relations.w | 3 +- inform7/if-module/Chapter 4/Action Patterns.w | 10 +- inform7/if-module/Chapter 4/Actions.w | 3 +- inform7/if-module/Chapter 5/Grammar Verbs.w | 3 +- inform7/linguistics-module/Chapter 4/Verbs.w | 7 +- 41 files changed, 475 insertions(+), 369 deletions(-) diff --git a/docs/core-module/12-dtd.html b/docs/core-module/12-dtd.html index 6999a62e1..f9cacd0db 100644 --- a/docs/core-module/12-dtd.html +++ b/docs/core-module/12-dtd.html @@ -80,9 +80,8 @@ all deferral requests are redeemed — they would then never be reached. pdef->reason = reason; pdef->deferred_from = current_sentence; pdef->rtp_iname = NULL; - pdef->ppd_iname = Packaging::function(Packaging::supply_iname(Packaging::current_enclosure(), PROPOSITION_PR_COUNTER), Packaging::current_enclosure(), NULL); - - Inter::Symbols::set_flag(InterNames::to_symbol(pdef->ppd_iname), MAKE_NAME_UNIQUE); + package_request *PR = Hierarchy::package_in_enclosure(PROPOSITIONS_HAP); + pdef->ppd_iname = Hierarchy::make_iname_in(PROPOSITION_HL, PR); if (no_further_deferrals) internal_error("Too late now to defer propositions"); return pdef; diff --git a/docs/core-module/13-rsfk.html b/docs/core-module/13-rsfk.html index 89620f725..568e5dc2d 100644 --- a/docs/core-module/13-rsfk.html +++ b/docs/core-module/13-rsfk.html @@ -11,7 +11,7 @@

To compile I6 material needed at runtime to enable kinds to function as they should.

-
+

§1. Definitions.

@@ -60,7 +60,7 @@ kinds being compiled to an I6 Class<

-

The function Kinds::RunTime::I6_classname is used in §27, 6/bp (§25), 6/rlt (§29.2, §29.3, §29.4, §29.5, §29.6), 12/ter (§8.6), 12/ca (§6.2), 12/dtd (§24), 13/kak (§2), 25/cii (§3.1.1.4.7.1), 26/iti (§9), 27/is (§31.8.1), 27/hr (§4).

+

The function Kinds::RunTime::I6_classname is used in §26, 6/bp (§25), 6/rlt (§29.2, §29.3, §29.4, §29.5, §29.6), 12/ter (§8.6), 12/ca (§6.2), 12/dtd (§24), 13/kak (§2), 25/cii (§3.1.1.4.7.1), 26/iti (§9), 27/is (§31.8.1), 27/hr (§4).

The function Kinds::RunTime::I6_classnumber is used in 16/ic (§6, §12.2), 27/in (§4).

@@ -105,17 +105,21 @@ chosen), but no problem message has been issued about this, or (Kinds::get_construct(K) == CON_phrase) || (Kinds::get_construct(K) == CON_relation)) { if (Kinds::get_construct(K) == CON_list_of) { - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); inter_name *rks_symb = Kinds::RunTime::compile_default_value_inner(K); Emit::array_iname_entry(rks_symb); Emit::array_numeric_entry(0); - Kinds::RunTime::end_block_constant(K); + Emit::array_end(); Packaging::exit(save); if (N) InterNames::holster(VH, N); } else if (Kinds::Compare::eq(K, K_stored_action)) { - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K_stored_action); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); Kinds::RunTime::emit_block_value_header(K_stored_action, FALSE, 6); Emit::array_iname_entry(PL::Actions::double_sharp(PL::Actions::Wait())); Emit::array_numeric_entry(0); @@ -128,14 +132,16 @@ chosen), but no problem message has been issued about this, or #endif Emit::array_numeric_entry(0); Emit::array_numeric_entry(0); - Kinds::RunTime::end_block_constant(K_stored_action); + Emit::array_end(); Packaging::exit(save); if (N) InterNames::holster(VH, N); } else if (Kinds::get_construct(K) == CON_relation) { - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); Relations::compile_blank_relation(K); - Kinds::RunTime::end_block_constant(K); + Emit::array_end(); Packaging::exit(save); if (N) InterNames::holster(VH, N); } else { @@ -154,11 +160,13 @@ chosen), but no problem message has been issued about this, or } if (Kinds::Compare::eq(K, K_text)) { - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); Emit::array_iname_entry(Hierarchy::find(PACKED_TEXT_STORAGE_HL)); Emit::array_iname_entry(Hierarchy::find(EMPTY_TEXT_PACKED_HL)); - Kinds::RunTime::end_block_constant(K); + Emit::array_end(); Packaging::exit(save); if (N) InterNames::holster(VH, N); return TRUE; @@ -185,7 +193,7 @@ chosen), but no problem message has been issued about this, or

The function Kinds::RunTime::emit_default_value is used in 19/rsft (§1.1.1.1.1.5).

-

The function Kinds::RunTime::emit_default_value_as_val is used in §26.6.2, 22/pav (§9.2), 24/lv (§43), 25/cii (§3.2.1, §3.5.3), 25/cp (§3.3.1).

+

The function Kinds::RunTime::emit_default_value_as_val is used in §25.6.2, 22/pav (§9.2), 24/lv (§43), 25/cii (§3.2.1, §3.5.3), 25/cp (§3.3.1).

The function Kinds::RunTime::compile_default_value_vh is used in 5/nv (§25.1), 15/vp (§11).

@@ -534,7 +542,7 @@ like variables. That's what makes them intermediate.)

-

The function Kinds::RunTime::weak_id is used in §9, §26, §26.1, 4/am (§20, §29.1, §30, §34.2).

+

The function Kinds::RunTime::weak_id is used in §9, §25, §25.1, 4/am (§20, §29.1, §30, §34.2).

§9. And the following compiles an easier-on-the-eye form of the weak ID, but which might occupy up to 31 characters, the maximum length of an I6 identifier: @@ -570,9 +578,9 @@ which might occupy up to 31 characters, the maximum length of an I6 identifier:

The function Kinds::RunTime::compile_weak_id is used in 12/is (§4.3.1).

-

The function Kinds::RunTime::emit_weak_id is used in §12, §16.1, §21.

+

The function Kinds::RunTime::emit_weak_id is used in §12, §16.1, §20.

-

The function Kinds::RunTime::emit_weak_id_as_val is used in §12, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, 12/is (§8), 14/lv (§14.3), 21/fao (§10), 25/cii (§3.2.8).

+

The function Kinds::RunTime::emit_weak_id_as_val is used in §12, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, 12/is (§8), 14/lv (§14.3), 21/fao (§10), 25/cii (§3.2.8).

§10. The strong ID is a faithful representation of the kind structure, so we don't need access to its value for comparison purposes; we just need @@ -651,7 +659,7 @@ turns up. This means remembering everything we've seen, using a new structure:

The function Kinds::RunTime::emit_strong_id is used in §16.1.1, §16.1.1.1, §16.1.1.2, 6/rlt (§15.1.4, §16), 18/lc (§12.1, §13), 22/pav (§8.1, §9.1).

-

The function Kinds::RunTime::emit_strong_id_as_val is used in §16.3, §20, 6/rlt (§15, §15.2.9.1), 12/dtd (§16, §17, §27), 19/tc (§8), 22/pav (§9.2), 25/cii (§3.2.7).

+

The function Kinds::RunTime::emit_strong_id_as_val is used in §16.3, §19, 6/rlt (§15, §15.2.9.1), 12/dtd (§16, §17, §27), 19/tc (§8), 22/pav (§9.2), 25/cii (§3.2.7).

§13. Thus the following routine must return NULL if K is a kind whose weak ID is the same as its strong ID — if it's a base kind, in other words — @@ -741,15 +749,16 @@ compile under Inform 6. rks->kind_described = K; rks->make_default = FALSE; rks->default_requested_here = NULL; - rks->rks_iname = InterNames::new(KIND_ID_INAMEF); package_request *PR = Kinds::Behaviour::package(K); - Packaging::house(rks->rks_iname, PR); + rks->rks_iname = InterNames::new(KIND_ID_INAMEF); + Packaging::house(rks->rks_iname, PR); TEMPORARY_TEXT(TEMP); Kinds::Textual::write(TEMP, K); wording W = Feeds::feed_stream(TEMP); + rks->rks_iname = Hierarchy::make_iname_with_memo(KIND_HL, PR, W); DISCARD_TEXT(TEMP); - InterNames::attach_memo(rks->rks_iname, W); - InterNames::to_symbol(rks->rks_iname); + InterNames::attach_memo(rks->rks_iname, W); + InterNames::to_symbol(rks->rks_iname); rks->rks_dv_iname = Hierarchy::make_iname_in(DEFAULT_VALUE_HL, PR); @@ -783,7 +792,7 @@ values for kinds, since both involve tracking constructions uniquely.

The function Kinds::RunTime::compile_default_value_inner is used in §4.

-

The function Kinds::RunTime::precompile_default_value is used in §20.

+

The function Kinds::RunTime::precompile_default_value is used in §19.

§15. Convenient storage for some names.

@@ -1085,29 +1094,7 @@ has essentially no memory constraints compared with the Z-machine.

This code is used in §18.

-

§19.

- - -
-    inter_name *Kinds::RunTime::begin_block_constant(kind *K) {
-        inter_name *N = Packaging::supply_iname(Packaging::current_enclosure(), BLOCK_CONSTANT_PR_COUNTER);
-        Inter::Symbols::set_flag(InterNames::to_symbol(N), MAKE_NAME_UNIQUE);
-        Emit::named_late_array_begin(N, K_value);
-        return N;
-    }
-
-    void Kinds::RunTime::end_block_constant(kind *K) {
-        Emit::array_end();
-    }
-
- -

- -

The function Kinds::RunTime::begin_block_constant is used in §4, 17/tl (§16), 17/ts (§8.1), 18/lc (§11).

- -

The function Kinds::RunTime::end_block_constant is used in §4, 17/tl (§16), 17/ts (§8.1), 18/lc (§11).

- -

§20. The following routine both compiles code to create a pointer value, and +

§19. The following routine both compiles code to create a pointer value, and also increments the heap allocation suitably. Each pointer-value kind comes with an estimate of its likely size needs — its exact size needs if it is fixed in size, and a reasonable overestimate of typical usage if it is @@ -1169,7 +1156,7 @@ list of 20 texts. For the cases above, it's always 1.

The structure heap_allocation is private to this section.

-

§21.

+

§20.

@@ -1203,7 +1190,7 @@ list of 20 texts. For the cases above, it's always 1.
 
 

The function Kinds::RunTime::emit_block_value_header is used in §4, 6/rlt (§15.1, §16), 18/lc (§12.1, §13).

-

§22. Run-time support for units and enumerations. The following generates a small suite of I6 routines associated with +

§21. Run-time support for units and enumerations. The following generates a small suite of I6 routines associated with each such kind, and needed at run-time.

@@ -1225,11 +1212,11 @@ each such kind, and needed at run-time.

-

The function Kinds::RunTime::base_represented_in_inter is used in §24, §25, §26.

+

The function Kinds::RunTime::base_represented_in_inter is used in §23, §24, §25.

The structure kind_interaction is private to this section.

-

§23.

+

§22.

@@ -1243,7 +1230,7 @@ each such kind, and needed at run-time.
 
 

The function Kinds::RunTime::package is used in §15, 15/epv (§2), 22/pav (§9), 27/ei (§4).

-

§24.

+

§23.

@@ -1267,13 +1254,13 @@ each such kind, and needed at run-time.
             kind *operands[MAX_KIND_ARITY];
             int icon = -1;
             inter_t idt = ROUTINE_IDT;
-            if (Kinds::get_construct(K) == CON_description) <Run out inter kind for description 24.2>
-            else if (Kinds::get_construct(K) == CON_list_of) <Run out inter kind for list 24.1>
-            else if (Kinds::get_construct(K) == CON_phrase) <Run out inter kind for phrase 24.5>
-            else if (Kinds::get_construct(K) == CON_rule) <Run out inter kind for rule 24.6>
-            else if (Kinds::get_construct(K) == CON_rulebook) <Run out inter kind for rulebook 24.7>
-            else if (Kinds::get_construct(K) == CON_table_column) <Run out inter kind for column 24.3>
-            else if (Kinds::get_construct(K) == CON_relation) <Run out inter kind for relation 24.4>
+            if (Kinds::get_construct(K) == CON_description) <Run out inter kind for description 23.2>
+            else if (Kinds::get_construct(K) == CON_list_of) <Run out inter kind for list 23.1>
+            else if (Kinds::get_construct(K) == CON_phrase) <Run out inter kind for phrase 23.5>
+            else if (Kinds::get_construct(K) == CON_rule) <Run out inter kind for rule 23.6>
+            else if (Kinds::get_construct(K) == CON_rulebook) <Run out inter kind for rulebook 23.7>
+            else if (Kinds::get_construct(K) == CON_table_column) <Run out inter kind for column 23.3>
+            else if (Kinds::get_construct(K) == CON_relation) <Run out inter kind for relation 23.4>
             else {
                 LOG("Unfortunate kind is: $u\n", K);
                 internal_error("unable to represent kind in inter");
@@ -1287,10 +1274,10 @@ each such kind, and needed at run-time.
 
 

-

The function Kinds::RunTime::iname is used in §3, §23, §26, 15/epv (§1), 16/ic (§10), 27/ei (§3).

+

The function Kinds::RunTime::iname is used in §3, §22, §25, 15/epv (§1), 16/ic (§10), 27/ei (§3).

-

§24.1. -<Run out inter kind for list 24.1> = +

§23.1. +<Run out inter kind for list 23.1> =

@@ -1303,10 +1290,10 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§24.2. -<Run out inter kind for description 24.2> = +

§23.2. +<Run out inter kind for description 23.2> =

@@ -1318,10 +1305,10 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§24.3. -<Run out inter kind for column 24.3> = +

§23.3. +<Run out inter kind for column 23.3> =

@@ -1333,10 +1320,10 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§24.4. -<Run out inter kind for relation 24.4> = +

§23.4. +<Run out inter kind for relation 23.4> =

@@ -1348,10 +1335,10 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§24.5. -<Run out inter kind for phrase 24.5> = +

§23.5. +<Run out inter kind for phrase 23.5> =

@@ -1372,10 +1359,10 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§24.6. -<Run out inter kind for rule 24.6> = +

§23.6. +<Run out inter kind for rule 23.6> =

@@ -1387,10 +1374,10 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§24.7. -<Run out inter kind for rulebook 24.7> = +

§23.7. +<Run out inter kind for rulebook 23.7> =

@@ -1404,9 +1391,9 @@ each such kind, and needed at run-time.

-

This code is used in §24.

+

This code is used in §23.

-

§25.

+

§24.

@@ -1435,11 +1422,11 @@ each such kind, and needed at run-time.
 
 

-

The function Kinds::RunTime::iname_inner is used in §24.

+

The function Kinds::RunTime::iname_inner is used in §23.

The function Kinds::RunTime::assure_iname_exists is used in 5/un (§2).

-

§26.

+

§25.

@@ -1509,9 +1496,9 @@ each such kind, and needed at run-time.
             if (Kinds::Behaviour::stored_as(K) == NULL)
                 if (Kinds::Behaviour::is_an_enumeration(K)) {
                     inter_name *printing_rule_name = Kinds::Behaviour::get_iname(K);
-                    <Compile I6 printing routine for an enumerated kind 26.3>;
-                    <Compile the A and B routines for an enumerated kind 26.4>;
-                    <Compile random-ranger routine for this kind 26.5>;
+                    <Compile I6 printing routine for an enumerated kind 25.3>;
+                    <Compile the A and B routines for an enumerated kind 25.4>;
+                    <Compile random-ranger routine for this kind 25.5>;
                 }
         }
         LOOP_OVER_BASE_KINDS(K) {
@@ -1521,15 +1508,15 @@ each such kind, and needed at run-time.
             if (Kinds::Behaviour::stored_as(K) == NULL) {
                 inter_name *printing_rule_name = Kinds::Behaviour::get_iname(K);
                 if (Kinds::Behaviour::is_quasinumerical(K)) {
-                    <Compile I6 printing routine for a unit kind 26.2>;
-                    <Compile random-ranger routine for this kind 26.5>;
+                    <Compile I6 printing routine for a unit kind 25.2>;
+                    <Compile random-ranger routine for this kind 25.5>;
                 } else {
-                    <Compile I6 printing routine for a vacant but named kind 26.1>;
+                    <Compile I6 printing routine for a vacant but named kind 25.1>;
                 }
             }
         }
 
-        <Compile a suite of I6 routines taking kind IDs as arguments 26.6>;
+        <Compile a suite of I6 routines taking kind IDs as arguments 25.6>;
     }
 
@@ -1545,7 +1532,7 @@ each such kind, and needed at run-time.

The function Kinds::RunTime::compile_data_type_support_routines is used in 1/mr (§4.14).

-

§26.1. A slightly bogus case first. If the source text declares a kind but never +

§25.1. A slightly bogus case first. If the source text declares a kind but never gives any enumerated values or literal patterns, then such values will never appear at run-time; but we need the printing routine to exist to avoid compilation errors. @@ -1553,7 +1540,7 @@ compilation errors.

-<Compile I6 printing routine for a vacant but named kind 26.1> = +<Compile I6 printing routine for a vacant but named kind 25.1> =

@@ -1573,16 +1560,16 @@ compilation errors.

-

This code is used in §26.

+

This code is used in §25.

-

§26.2. A unit is printed back with its earliest-defined literal pattern used as +

§25.2. A unit is printed back with its earliest-defined literal pattern used as notation. If it had no literal patterns, it would come out as decimal numbers, but at present this can't happen.

-<Compile I6 printing routine for a unit kind 26.2> = +<Compile I6 printing routine for a unit kind 25.2> =

@@ -1603,10 +1590,10 @@ but at present this can't happen.

-

This code is used in §26.

+

This code is used in §25.

-

§26.3. -<Compile I6 printing routine for an enumerated kind 26.3> = +

§25.3. +<Compile I6 printing routine for an enumerated kind 25.3> =

@@ -1665,9 +1652,9 @@ but at present this can't happen.

-

This code is used in §26.

+

This code is used in §25.

-

§26.4. The suite of standard routines provided for enumerative types is a little +

§25.4. The suite of standard routines provided for enumerative types is a little like the one in Ada (T'Succ, T'Pred, and so on).

@@ -1684,7 +1671,7 @@ to A_T1_colour(v).

-<Compile the A and B routines for an enumerated kind 26.4> = +<Compile the A and B routines for an enumerated kind 25.4> =

@@ -1695,26 +1682,26 @@ to A_T1_colour(v). inter_name *iname_i = Kinds::Behaviour::get_inc_iname(K); packaging_state save = Routines::begin(iname_i); - <Implement the A routine 26.4.1>; + <Implement the A routine 25.4.1>; Routines::end(save); inter_name *iname_d = Kinds::Behaviour::get_dec_iname(K); save = Routines::begin(iname_d); - <Implement the B routine 26.4.2>; + <Implement the B routine 25.4.2>; Routines::end(save);

-

This code is used in §26.

+

This code is used in §25.

-

§26.4.1. There should be a blue historical plaque on the wall here: this was the +

§25.4.1. There should be a blue historical plaque on the wall here: this was the first routine implemented by emitting Inter code, on 12 November 2017.

-<Implement the A routine 26.4.1> = +<Implement the A routine 25.4.1> =

@@ -1749,14 +1736,14 @@ first routine implemented by emitting Inter code, on 12 November 2017.

-

This code is used in §26.4.

+

This code is used in §25.4.

-

§26.4.2. And this was the second, a few minutes later. +

§25.4.2. And this was the second, a few minutes later.

-<Implement the B routine 26.4.2> = +<Implement the B routine 25.4.2> =

@@ -1804,9 +1791,9 @@ first routine implemented by emitting Inter code, on 12 November 2017.

-

This code is used in §26.4.

+

This code is used in §25.4.

-

§26.5. And here we add: +

§25.5. And here we add:

@@ -1819,7 +1806,7 @@ and b inclusive.

-<Compile random-ranger routine for this kind 26.5> = +<Compile random-ranger routine for this kind 25.5> =

@@ -1889,7 +1876,7 @@ and b inclusive. Emit::inv_primitive(return_interp); Emit::down(); smaller = b_s; larger = a_s; - <Formula for range 26.5.1>; + <Formula for range 25.5.1>; Emit::up(); Emit::up(); Emit::up(); @@ -1897,7 +1884,7 @@ and b inclusive. Emit::inv_primitive(return_interp); Emit::down(); smaller = a_s; larger = b_s; - <Formula for range 26.5.1>; + <Formula for range 25.5.1>; Emit::up(); Routines::end(save); @@ -1905,10 +1892,10 @@ and b inclusive.

-

This code is used in §26 (twice).

+

This code is used in §25 (twice).

-

§26.5.1. -<Formula for range 26.5.1> = +

§25.5.1. +<Formula for range 25.5.1> =

@@ -1937,39 +1924,39 @@ and b inclusive.

-

This code is used in §26.5 (twice).

+

This code is used in §25.5 (twice).

-

§26.6. Further runtime support. These last routines are synoptic: they take the ID number of the kind as an +

§25.6. Further runtime support. These last routines are synoptic: they take the ID number of the kind as an argument, so there is only one of each routine.

-<Compile a suite of I6 routines taking kind IDs as arguments 26.6> = +<Compile a suite of I6 routines taking kind IDs as arguments 25.6> =

-        <Compile PrintKindValuePair 26.6.1>;
-        <Compile DefaultValueOfKOV 26.6.2>;
-        <Compile KOVComparisonFunction 26.6.3>;
-        <Compile KOVDomainSize 26.6.4>;
-        <Compile KOVIsBlockValue 26.6.5>;
-        <Compile KOVSupportFunction 26.6.6>;
+        <Compile PrintKindValuePair 25.6.1>;
+        <Compile DefaultValueOfKOV 25.6.2>;
+        <Compile KOVComparisonFunction 25.6.3>;
+        <Compile KOVDomainSize 25.6.4>;
+        <Compile KOVIsBlockValue 25.6.5>;
+        <Compile KOVSupportFunction 25.6.6>;
 

-

This code is used in §26.

+

This code is used in §25.

-

§26.6.1. PrintKindValuePair(K, V) prints out the value V, declaring its kind to +

§25.6.1. PrintKindValuePair(K, V) prints out the value V, declaring its kind to be K. (Since I6 is typeless and in general the kind of V cannot be deduced from its value alone, K must explicitly be supplied.)

-<Compile PrintKindValuePair 26.6.1> = +<Compile PrintKindValuePair 25.6.1> =

@@ -2027,16 +2014,16 @@ deduced from its value alone, K

-

This code is used in §26.6.

+

This code is used in §25.6.

-

§26.6.2. DefaultValueOfKOV(K) returns the default value for kind K: it's needed, +

§25.6.2. DefaultValueOfKOV(K) returns the default value for kind K: it's needed, for instance, when increasing the size of a list of K to include new entries, which have to be given some type-safe value to start out at.

-<Compile DefaultValueOfKOV 26.6.2> = +<Compile DefaultValueOfKOV 25.6.2> =

@@ -2104,9 +2091,9 @@ which have to be given some type-safe value to start out at.

-

This code is used in §26.6.

+

This code is used in §25.6.

-

§26.6.3. KOVComparisonFunction(K) returns either the address of a function to +

§25.6.3. KOVComparisonFunction(K) returns either the address of a function to perform a comparison between two values, or else 0 to signal that no special sort of comparison is needed. (In which case signed numerical comparison will be used.) The function F may be used in a sorting algorithm, @@ -2117,7 +2104,7 @@ unless the two values are genuinely equal.

-<Compile KOVComparisonFunction 26.6.3> = +<Compile KOVComparisonFunction 25.6.3> =

@@ -2179,10 +2166,10 @@ unless the two values are genuinely equal.

-

This code is used in §26.6.

+

This code is used in §25.6.

-

§26.6.4. -<Compile KOVDomainSize 26.6.4> = +

§25.6.4. +<Compile KOVDomainSize 25.6.4> =

@@ -2242,15 +2229,15 @@ unless the two values are genuinely equal.

-

This code is used in §26.6.

+

This code is used in §25.6.

-

§26.6.5. KOVIsBlockValue(K) is true if and only if K is the I6 ID of a kind +

§25.6.5. KOVIsBlockValue(K) is true if and only if K is the I6 ID of a kind storing pointers to blocks on the heap.

-<Compile KOVIsBlockValue 26.6.5> = +<Compile KOVIsBlockValue 25.6.5> =

@@ -2293,16 +2280,16 @@ storing pointers to blocks on the heap.

-

This code is used in §26.6.

+

This code is used in §25.6.

-

§26.6.6. KOVSupportFunction(K) returns the address of the specific support function +

§25.6.6. KOVSupportFunction(K) returns the address of the specific support function for a pointer-value kind K, or returns 0 if K is not such a kind. For what such a function does, see "BlockValues.i6t".

-<Compile KOVSupportFunction 26.6.6> = +<Compile KOVSupportFunction 25.6.6> =

@@ -2364,9 +2351,9 @@ such a function does, see "BlockValues.i6t".

-

This code is used in §26.6.

+

This code is used in §25.6.

-

§27. Code for printing names of kinds at run-time. This needn't run quickly, and +

§26. Code for printing names of kinds at run-time. This needn't run quickly, and making it a routine rather than using an array saves a few bytes of precious Z-machine array space.

@@ -2406,7 +2393,7 @@ Z-machine array space.

The function Kinds::RunTime::I7_Kind_Name_routine is used in 1/mr (§4.14).

-

§28.

+

§27.

diff --git a/docs/core-module/17-tl.html b/docs/core-module/17-tl.html
index f610b8a40..c0d3ecc29 100644
--- a/docs/core-module/17-tl.html
+++ b/docs/core-module/17-tl.html
@@ -156,10 +156,9 @@ in the source.
         x->unexpanded = FALSE;
         x->small_block_array_needed = FALSE;
         x->lt_sba_iname = NULL;
-        x->lt_iname = Packaging::supply_iname(Packaging::current_enclosure(), LITERAL_PR_COUNTER);
-        Inter::Symbols::set_flag(InterNames::to_symbol(x->lt_iname), MAKE_NAME_UNIQUE);
+        package_request *PR = Hierarchy::package_in_enclosure(LITERALS_HAP);
+        x->lt_iname = Hierarchy::make_iname_in(TEXT_LITERAL_HL, PR);
         Emit::annotate_symbol_i(InterNames::to_symbol(x->lt_iname), TEXT_LITERAL_IANN, 1);
-        InterNames::to_symbol(x->lt_iname);
         if ((wn_quote_suppressed >= 0) && (w1 == wn_quote_suppressed)) x->unexpanded = TRUE;
         return x;
     }
@@ -392,7 +391,7 @@ different for compilation purposes.
 
 

The function Strings::TextLiterals::compile_quotation is used in 17/rs (§12).

-

The function Strings::TextLiterals::CCOUNT_QUOTATIONS is used in 13/rsfk (§26).

+

The function Strings::TextLiterals::CCOUNT_QUOTATIONS is used in 13/rsfk (§25).

§13. A version from fixed text:

@@ -533,15 +532,17 @@ number -1). literal_text *Strings::TextLiterals::compile_literal_sb(value_holster *VH, wording W) { literal_text *lt = NULL; if (TEST_COMPILATION_MODE(CONSTANT_CMODE)) { - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K_text); - if (N) InterNames::holster(VH, N); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); lt = Strings::TextLiterals::compile_literal(NULL, FALSE, W); Emit::array_iname_entry(Hierarchy::find(PACKED_TEXT_STORAGE_HL)); if (lt == NULL) Emit::array_iname_entry(Hierarchy::find(EMPTY_TEXT_PACKED_HL)); else Emit::array_iname_entry(lt->lt_iname); - Kinds::RunTime::end_block_constant(K_text); + Emit::array_end(); Packaging::exit(save); + if (N) InterNames::holster(VH, N); } else { lt = Strings::TextLiterals::compile_literal(VH, TRUE, W); } diff --git a/docs/core-module/17-ts.html b/docs/core-module/17-ts.html index 4f998cb98..b43dfae2e 100644 --- a/docs/core-module/17-ts.html +++ b/docs/core-module/17-ts.html @@ -245,13 +245,15 @@ that routine later. This appearance of the routine name is called the "cue". text_substitution *ts = Strings::TextSubstitutions::new_text_substitution(W, phsf, adopted_rule_for_compilation, adopted_marker_for_compilation, Packaging::current_enclosure()); if (TEST_COMPILATION_MODE(CONSTANT_CMODE)) { - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K_text); - if (N) InterNames::holster(VH, N); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); Emit::array_iname_entry(Hierarchy::find(CONSTANT_PACKED_TEXT_STORAGE_HL)); Emit::array_iname_entry(ts->ts_routine_iname); - Kinds::RunTime::end_block_constant(K_text); + Emit::array_end(); Packaging::exit(save); + if (N) InterNames::holster(VH, N); } else { inter_name *tin = Strings::TextSubstitutions::text_substitution_iname(ts); if (Holsters::data_acceptable(VH)) { diff --git a/docs/core-module/18-lc.html b/docs/core-module/18-lc.html index 058f60d94..c06d1b204 100644 --- a/docs/core-module/18-lc.html +++ b/docs/core-module/18-lc.html @@ -391,12 +391,14 @@ so there was once a two-page explanation here, but it is now blessedly simple. int incipit = Wordings::first_wn(W); literal_list *ll = Lists::find_list_at(incipit+1); if (ll) { - kind *K = Lists::kind_of_ll(ll, FALSE); - packaging_state save = Packaging::enter_current_enclosure(); - inter_name *N = Kinds::RunTime::begin_block_constant(K); + Lists::kind_of_ll(ll, FALSE); + package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP); + inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR); + packaging_state save = Packaging::enter_home_of(N); + Emit::named_late_array_begin(N, K_value); Emit::array_iname_entry(Lists::iname(ll)); Emit::array_numeric_entry(0); - Kinds::RunTime::end_block_constant(K); + Emit::array_end(); Packaging::exit(save); return N; } @@ -405,8 +407,8 @@ so there was once a two-page explanation here, but it is now blessedly simple. inter_name *Lists::iname(literal_list *ll) { if (ll->ll_iname == NULL) { - ll->ll_iname = Packaging::supply_iname(Packaging::current_enclosure(), LITERAL_PR_COUNTER); - Inter::Symbols::set_flag(InterNames::to_symbol(ll->ll_iname), MAKE_NAME_UNIQUE); + package_request *PR = Hierarchy::package_in_enclosure(LITERALS_HAP); + ll->ll_iname = Hierarchy::make_iname_in(LIST_LITERAL_HL, PR); } return ll->ll_iname; } diff --git a/docs/core-module/2-sq.html b/docs/core-module/2-sq.html index 3bfd7d0b2..c4527c028 100644 --- a/docs/core-module/2-sq.html +++ b/docs/core-module/2-sq.html @@ -164,7 +164,7 @@ this as some kind of marginal will-never-happen case.

-

The function Problems::quote_kind is used in §4, 5/lp (§34.5, §34.6), 5/ins (§19.1), 5/nv (§7.1, §23, §25.2), 6/tur (§5), 9/tc (§5.4.2.6, §5.4.2.7, §5.4.2.8, §8.1), 9/ma (§3.3.39.1), 9/pk (§2.1, §4.4), 9/pd (§5.6.1, §7.1.3), 11/tc (§7.1), 11/tcp (§6.9, §6.10, §6.11, §10, §11, §11.3, §12), 12/ter (§5.1, §8.4), 12/qr (§5), 12/ca (§6.2), 13/kak (§7), 13/rsfk (§4.1, §4.2, §16.2, §28), 14/ds2 (§10.1.1.3.1, §11.8.1, §11.9.1.1.2.2.2, §11.9.1.1.3.1.1, §11.9.1.1.5.2, §11.9.1.2.3.3, §11.9.1.2.4, §15.4, §19.1, §19.2, §19.2.1, §19.5.3.2, §19.6.1.1, §19.6.2.1, §19.6.2.2), 15/vp (§5), 15/cp (§3), 15/tpr (§5), 15/spr2 (§9.1, §9.2), 15/pov (§4.1), 16/in (§14), 18/lc (§8.2.1), 19/tc (§6.1, §14.1, §15, §15.6), 19/tod (§6.2, §6.3.3), 20/eq (§41.4.1, §41.4.2, §47.3.2), 21/rl (§15, §18), 22/pu (§20.1.1.2), 25/ci (§3.1.1.2), 25/cii (§3.2.1.1, §3.1.1.4.7.1.2, §3.5.3, §3.5.4.3), 25/cp (§5.3.5).

+

The function Problems::quote_kind is used in §4, 5/lp (§34.5, §34.6), 5/ins (§19.1), 5/nv (§7.1, §23, §25.2), 6/tur (§5), 9/tc (§5.4.2.6, §5.4.2.7, §5.4.2.8, §8.1), 9/ma (§3.3.39.1), 9/pk (§2.1, §4.4), 9/pd (§5.6.1, §7.1.3), 11/tc (§7.1), 11/tcp (§6.9, §6.10, §6.11, §10, §11, §11.3, §12), 12/ter (§5.1, §8.4), 12/qr (§5), 12/ca (§6.2), 13/kak (§7), 13/rsfk (§4.1, §4.2, §16.2, §27), 14/ds2 (§10.1.1.3.1, §11.8.1, §11.9.1.1.2.2.2, §11.9.1.1.3.1.1, §11.9.1.1.5.2, §11.9.1.2.3.3, §11.9.1.2.4, §15.4, §19.1, §19.2, §19.2.1, §19.5.3.2, §19.6.1.1, §19.6.2.1, §19.6.2.2), 15/vp (§5), 15/cp (§3), 15/tpr (§5), 15/spr2 (§9.1, §9.2), 15/pov (§4.1), 16/in (§14), 18/lc (§8.2.1), 19/tc (§6.1, §14.1, §15, §15.6), 19/tod (§6.2, §6.3.3), 20/eq (§41.4.1, §41.4.2, §47.3.2), 21/rl (§15, §18), 22/pu (§20.1.1.2), 25/ci (§3.1.1.2), 25/cii (§3.2.1.1, §3.1.1.4.7.1.2, §3.5.3, §3.5.4.3), 25/cp (§5.3.5).

The function Problems::expand_kind appears nowhere else.

diff --git a/docs/core-module/24-lv.html b/docs/core-module/24-lv.html index 1bd71bd00..71943c127 100644 --- a/docs/core-module/24-lv.html +++ b/docs/core-module/24-lv.html @@ -460,13 +460,13 @@ scratch work-space which can be used in the compiled code.

The function LocalVariables::add_internal_local_as_symbol_noting is used in 12/cdp (§2.1.5).

-

The function LocalVariables::add_named_call is used in §47, 13/rsfk (§26.6.3), 21/rb (§23), 22/pav (§9.2).

+

The function LocalVariables::add_named_call is used in §47, 13/rsfk (§25.6.3), 21/rb (§23), 22/pav (§9.2).

-

The function LocalVariables::add_named_call_as_symbol is used in 4/am (§43), 5/lp (§27), 6/rlt (§15.2, §17, §29.1), 6/nv (§18.1, §18.2), 8/ef (§19), 12/cad (§5), 12/cdp (§2.1.5, §2.1.5.2), 13/rsfk (§16.3, §26.1, §26.2, §26.3, §26.5, §26.6.1, §26.6.2, §26.6.5, §26.6.6, §27), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 21/rl (§20), 21/rb (§24.1.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 24/ch (§7), 26/uo (§21.1, §21.2).

+

The function LocalVariables::add_named_call_as_symbol is used in 4/am (§43), 5/lp (§27), 6/rlt (§15.2, §17, §29.1), 6/nv (§18.1, §18.2), 8/ef (§19), 12/cad (§5), 12/cdp (§2.1.5, §2.1.5.2), 13/rsfk (§16.3, §25.1, §25.2, §25.3, §25.5, §25.6.1, §25.6.2, §25.6.5, §25.6.6, §26), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 21/rl (§20), 21/rb (§24.1.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 24/ch (§7), 26/uo (§21.1, §21.2).

The function LocalVariables::add_named_call_as_symbol_noting is used in 6/rlt (§15.2).

-

The function LocalVariables::add_internal_local_c is used in §12, §13, 13/rsfk (§26.6.2, §26.6.3, §26.6.4).

+

The function LocalVariables::add_internal_local_c is used in §12, §13, 13/rsfk (§25.6.2, §25.6.3, §25.6.4).

The function LocalVariables::add_internal_local_c_as_symbol is used in 6/rlt (§15), 21/rb (§24.1.1).

@@ -1648,9 +1648,9 @@ need in the compilation of any given routine:

The function LocalVariables::declare is used in 26/rt (§3, §4, §4.1.1).

-

The function LocalVariables::declare_this is used in §8, §10, §11, §27, §28, §29, §41, §43, §45, 4/am (§34.2), 11/tr (§10), 12/dtd (§9, §23, §25, §26, §27), 12/cad (§7), 13/rsfk (§26.6.2, §26.6.3, §26.6.4), 14/lv (§14.1, §14.5), 14/cn (§16.3), 20/eq (§48), 25/cii (§1.2.1, §3.5.1, §3.5.3), 25/cp (§5.3.5), 27/is (§31.9).

+

The function LocalVariables::declare_this is used in §8, §10, §11, §27, §28, §29, §41, §43, §45, 4/am (§34.2), 11/tr (§10), 12/dtd (§9, §23, §25, §26, §27), 12/cad (§7), 13/rsfk (§25.6.2, §25.6.3, §25.6.4), 14/lv (§14.1, §14.5), 14/cn (§16.3), 20/eq (§48), 25/cii (§1.2.1, §3.5.1, §3.5.3), 25/cp (§5.3.5), 27/is (§31.9).

-

The function LocalVariables::create_and_declare is used in 13/rsfk (§26.4.1, §26.4.2).

+

The function LocalVariables::create_and_declare is used in 13/rsfk (§25.4.1, §25.4.2).

§48. Note that a deallocated "let" variable retains its most recent name.

diff --git a/docs/core-module/26-ct.html b/docs/core-module/26-ct.html index a0a4014ff..b97eb7d6c 100644 --- a/docs/core-module/26-ct.html +++ b/docs/core-module/26-ct.html @@ -189,7 +189,7 @@ behave more like dictionary words and the

-

The function CompiledText::from_wide_string is used in §5, 5/lp (§27.3.1), 13/rsfk (§26.3), 17/tl (§14.1).

+

The function CompiledText::from_wide_string is used in §5, 5/lp (§27.3.1), 13/rsfk (§25.3), 17/tl (§14.1).

The function CompiledText::from_wide_string_for_emission is used in 25/cii (§3.5.8.1).

diff --git a/docs/core-module/26-rt.html b/docs/core-module/26-rt.html index d598238d7..b48e890ec 100644 --- a/docs/core-module/26-rt.html +++ b/docs/core-module/26-rt.html @@ -36,7 +36,7 @@ an I6 routine. Sometimes that's in order to define a phrase, but often not.

-

The function Routines::begin is used in 4/am (§34.2, §43), 5/lp (§27), 5/nv (§16), 6/bp (§33), 6/rlt (§15, §15.2, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§18.1, §18.2), 8/ef (§19), 12/cdp (§2.1), 13/rsfk (§16.3, §26.1, §26.2, §26.3, §26.4, §26.5, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 15/ma (§13), 17/tl (§14.2), 17/ts (§11), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§43), 21/rl (§20, §22.1), 21/rb (§23), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 22/pav (§9.2), 24/ch (§6, §7), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/ts (§10, §11).

+

The function Routines::begin is used in 4/am (§34.2, §43), 5/lp (§27), 5/nv (§16), 6/bp (§33), 6/rlt (§15, §15.2, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§18.1, §18.2), 8/ef (§19), 12/cdp (§2.1), 13/rsfk (§16.3, §25.1, §25.2, §25.3, §25.4, §25.5, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 15/ma (§13), 17/tl (§14.2), 17/ts (§11), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§43), 21/rl (§20, §22.1), 21/rb (§23), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 22/pav (§9.2), 24/ch (§6, §7), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/ts (§10, §11).

The function Routines::begin_in_current_package is used in 21/rb (§24.1.1).

@@ -134,9 +134,7 @@ create a new nonphrasal stack frame. kernel_name = InterNames::one_off(I"kernel", public_name->eventual_owner); Inter::Symbols::set_flag(InterNames::to_symbol(kernel_name), MAKE_NAME_UNIQUE); } else { - kernel_name = InterNames::new_in(KERNEL_ROUTINE_INAMEF, InterNames::to_module(public_name)); - LOG("PN is %n\n", public_name); - internal_error("Routine not in function"); + internal_error("routine not housed in function"); } Packaging::house_with(kernel_name, public_name); } @@ -162,7 +160,7 @@ create a new nonphrasal stack frame.

-

The function Routines::end is used in 4/am (§34.2, §43), 5/lp (§27), 5/nv (§16), 6/bp (§33), 6/rlt (§15, §15.2, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§18.1, §18.2), 8/ef (§19), 12/cdp (§2.1), 13/rsfk (§16.3, §26.1, §26.2, §26.3, §26.4, §26.5, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 15/ma (§13), 17/tl (§14.2), 17/ts (§11), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§43), 21/rl (§20, §22.1), 21/rb (§23), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 22/pav (§9.2), 24/ch (§6, §7), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/ts (§10, §11).

+

The function Routines::end is used in 4/am (§34.2, §43), 5/lp (§27), 5/nv (§16), 6/bp (§33), 6/rlt (§15, §15.2, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§18.1, §18.2), 8/ef (§19), 12/cdp (§2.1), 13/rsfk (§16.3, §25.1, §25.2, §25.3, §25.4, §25.5, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 15/ma (§13), 17/tl (§14.2), 17/ts (§11), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§43), 21/rl (§20, §22.1), 21/rb (§23), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 22/pav (§9.2), 24/ch (§6, §7), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/ts (§10, §11).

The function Routines::end_in_current_package is used in 21/rb (§24.1.5), 25/cp (§3).

diff --git a/docs/core-module/26-vm.html b/docs/core-module/26-vm.html index 07ea51bea..e9d8d828d 100644 --- a/docs/core-module/26-vm.html +++ b/docs/core-module/26-vm.html @@ -172,7 +172,7 @@ target VM are 16 or 32 bits wide:

-

The function VirtualMachines::is_16_bit is used in §9, §19, §21, 5/lp (§12.2, §18.3), 6/rlt (§14), 13/rsfk (§18.1, §21), 25/cii (§3.5.8.3).

+

The function VirtualMachines::is_16_bit is used in §9, §19, §21, 5/lp (§12.2, §18.3), 6/rlt (§14), 13/rsfk (§18.1, §20), 25/cii (§3.5.8.3).

§8. Fundamental constants are emitted about our choice of virtual machine.

@@ -358,7 +358,7 @@ at 15, but Glulx allows it to be set with an I6 memory setting.

-

The function VirtualMachines::supports is used in 13/rsfk (§28), 20/eq (§41).

+

The function VirtualMachines::supports is used in 13/rsfk (§27), 20/eq (§41).

§12. When releasing a blorbed story file, the file extension depends on the story file wrapped inside. (This is a dubious idea, in the opinion of diff --git a/docs/core-module/27-ei.html b/docs/core-module/27-ei.html index ed38aff81..57defd8f0 100644 --- a/docs/core-module/27-ei.html +++ b/docs/core-module/27-ei.html @@ -1025,8 +1025,7 @@ insert them into the Inter stream close to the top. inter_name *block_iname = NULL; if (Packaging::houseed_in_function(iname)) block_iname = Packaging::supply_iname(iname->eventual_owner, BLOCK_PR_COUNTER); - else - block_iname = InterNames::new_in(ROUTINE_BLOCK_INAMEF, InterNames::to_module(iname)); + else internal_error("routine outside function package"); Packaging::house_with(block_iname, iname); inter_symbol *rsymb = Emit::package(block_iname, code_packagetype, NULL); @@ -1201,7 +1200,7 @@ insert them into the Inter stream close to the top.

The function Emit::guard is used in §3, §5, 27/pc (§2, §8).

-

The function Emit::kind is used in 13/rsfk (§24, §26).

+

The function Emit::kind is used in 13/rsfk (§23, §25).

The function Emit::kind_inner is used in §3.

@@ -1231,7 +1230,7 @@ insert them into the Inter stream close to the top.

The function Emit::named_generic_constant is used in 21/rl (§9).

-

The function Emit::named_numeric_constant is used in 6/rlt (§20.3), 13/kak (§5), 13/rsfk (§26), 21/ac (§6), 22/cs (§8), 24/ch (§8), 26/vm (§8), 26/uo (§21), 26/pl (§12), 26/ts (§10), 27/hr (§4).

+

The function Emit::named_numeric_constant is used in 6/rlt (§20.3), 13/kak (§5), 13/rsfk (§25), 21/ac (§6), 22/cs (§8), 24/ch (§8), 26/vm (§8), 26/uo (§21), 26/pl (§12), 26/ts (§10), 27/hr (§4).

The function Emit::hold_numeric_constant appears nowhere else.

@@ -1241,7 +1240,7 @@ insert them into the Inter stream close to the top.

The function Emit::ds_named_pseudo_numeric_constant appears nowhere else.

-

The function Emit::named_late_array_begin is used in 13/rsfk (§19).

+

The function Emit::named_late_array_begin is used in 13/rsfk (§4), 17/tl (§16), 17/ts (§8.1), 18/lc (§11).

The function Emit::named_byte_array_begin is used in 6/rlt (§20.3), 19/rsft (§1.2), 21/ac (§14), 26/ts (§10).

@@ -1265,7 +1264,7 @@ insert them into the Inter stream close to the top.

The function Emit::array_null_entry is used in 6/rlt (§15.1, §16), 19/rsft (§1.1.1.1.1.3, §1.2), 21/rb (§24.1.5), 21/ac (§14).

-

The function Emit::array_MPN_entry is used in 13/rsfk (§21).

+

The function Emit::array_MPN_entry is used in 13/rsfk (§20).

The function Emit::array_generic_entry is used in 5/nv (§25), 13/rsfk (§4), 14/cfs (§9), 19/rsft (§1.1.1.1.1.4).

@@ -1277,13 +1276,13 @@ insert them into the Inter stream close to the top.

The function Emit::array_plural_dword_entry appears nowhere else.

-

The function Emit::array_numeric_entry is used in 6/rlt (§15.1, §15.1.3, §16, §19, §20.2, §20.3), 6/nv (§18), 13/rsfk (§4, §9, §16.1.1.1, §16.1.1.2, §21), 17/rs (§7.3, §7.3.1.1, §7.3.1.2), 18/lc (§11, §12.1, §13), 19/rsft (§1.1.1.1.1.3, §1.1.1.1.1.4, §1.2.3, §1.3), 21/rb (§24.1.1, §24.1.2), 21/rl2 (§14, §20), 21/ac (§8, §14), 22/tp2 (§4), 24/ch (§6), 26/jl (§6), 26/ts (§10).

+

The function Emit::array_numeric_entry is used in 6/rlt (§15.1, §15.1.3, §16, §19, §20.2, §20.3), 6/nv (§18), 13/rsfk (§4, §9, §16.1.1.1, §16.1.1.2, §20), 17/rs (§7.3, §7.3.1.1, §7.3.1.2), 18/lc (§11, §12.1, §13), 19/rsft (§1.1.1.1.1.3, §1.1.1.1.1.4, §1.2.3, §1.3), 21/rb (§24.1.1, §24.1.2), 21/rl2 (§14, §20), 21/ac (§8, §14), 22/tp2 (§4), 24/ch (§6), 26/jl (§6), 26/ts (§10).

The function Emit::array_divider appears nowhere else.

The function Emit::array_IRS appears nowhere else.

-

The function Emit::array_end is used in 6/rlt (§15.1, §15.1.2, §16, §20, §20.3), 6/nv (§18), 13/rsfk (§16.1, §19), 17/tl (§14.1), 17/ts (§11), 17/rs (§6.1, §7.3), 18/lc (§12.1, §13), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rb (§24.1.5), 21/rl2 (§14, §20), 21/ac (§8, §14), 22/pav (§8.1, §9.1), 22/tp2 (§4), 24/ch (§6), 26/lt (§4.1), 26/jl (§6), 26/ts (§10).

+

The function Emit::array_end is used in 6/rlt (§15.1, §15.1.2, §16, §20, §20.3), 6/nv (§18), 13/rsfk (§4, §16.1), 17/tl (§14.1, §16), 17/ts (§8.1, §11), 17/rs (§6.1, §7.3), 18/lc (§11, §12.1, §13), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rb (§24.1.5), 21/rl2 (§14, §20), 21/ac (§8, §14), 22/pav (§8.1, §9.1), 22/tp2 (§4), 24/ch (§6), 26/lt (§4.1), 26/jl (§6), 26/ts (§10).

The function Emit::nothing appears nowhere else.

@@ -1297,7 +1296,7 @@ insert them into the Inter stream close to the top.

The function Emit::early_comment appears nowhere else.

-

The function Emit::code_comment is used in 4/am (§34.2), 5/lp (§27, §29, §30), 6/nv (§18.2), 12/cdp (§1), 13/rsfk (§26.1), 20/eq (§47), 25/ci (§3.2.3), 25/cp (§5.1).

+

The function Emit::code_comment is used in 4/am (§34.2), 5/lp (§27, §29, §30), 6/nv (§18.2), 12/cdp (§1), 13/rsfk (§25.1), 20/eq (§47), 25/ci (§3.2.3), 25/cp (§5.1).

The function Emit::package is used in 27/pc (§6).

@@ -1313,9 +1312,9 @@ insert them into the Inter stream close to the top.

The function Emit::local is used in 24/lv (§47), 26/rt (§4.1.1).

-

The function Emit::inv_primitive is used in 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3, §27.3.1, §27.3.2, §27.3.3, §27.3.4), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25), 6/rlt (§15, §15.2, §15.2.4, §15.2.5, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§17, §18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/ca (§5.2), 12/dtd (§7.1, §7.1.1, §8, §9, §9.1, §15, §16, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1.2.2, §2.1.6.1.2.3.2, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.5, §2.1.6.1.2.2.2, §2.1.6.1.2.2.2.1, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7, §2.1.6.1.18), 13/kak (§2), 13/ca (§1.2, §1.3, §1.4, §1.10, §1.11, §1.12, §1.13), 13/rsfk (§16.3, §26.1, §26.2, §26.3, §26.4.1, §26.4.2, §26.5, §26.5.1, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 14/rv (§24.3), 14/lv (§14.3.2), 14/cn (§16.1, §16.2, §16.3), 15/ma (§13), 15/epv (§4), 17/tl (§14.2), 17/ts (§11.1), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 21/rl (§11, §11.2, §20, §20.1, §20.2, §22.1), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.5, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.2, §10.3, §10.4, §10.5, §10.1.1.1), 22/pav (§9.2), 23/abc (§1), 24/lv (§28, §29, §43), 24/pb (§17), 24/ch (§3, §3.1, §6, §7, §7.1, §7.2, §7.3, §7.4, §7.4.1, §7.5), 25/ci (§3, §3.2.3, §3.2.3.2, §3.2.3.1.1, §3.2.3.3.1.2, §3.2.3.4.1.1, §3.2.3.3.1.2.1, §3.2.3.3.1.3, §4.2), 25/ciac (§2), 25/cii (§1.2.1, §3.1.1.4.10, §3.5.3, §3.5.8.1, §3.5.8.2, §3.5.8.3, §3.5.9), 25/cp (§3.3.1, §5.2.1, §5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.3, §4.1.5), 26/ts (§10, §11, §12), 27/is (§31.4, §31.5, §31.6, §31.7, §31.8).

+

The function Emit::inv_primitive is used in 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3, §27.3.1, §27.3.2, §27.3.3, §27.3.4), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25), 6/rlt (§15, §15.2, §15.2.4, §15.2.5, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§17, §18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/ca (§5.2), 12/dtd (§7.1, §7.1.1, §8, §9, §9.1, §15, §16, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1.2.2, §2.1.6.1.2.3.2, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.5, §2.1.6.1.2.2.2, §2.1.6.1.2.2.2.1, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7, §2.1.6.1.18), 13/kak (§2), 13/ca (§1.2, §1.3, §1.4, §1.10, §1.11, §1.12, §1.13), 13/rsfk (§16.3, §25.1, §25.2, §25.3, §25.4.1, §25.4.2, §25.5, §25.5.1, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 14/rv (§24.3), 14/lv (§14.3.2), 14/cn (§16.1, §16.2, §16.3), 15/ma (§13), 15/epv (§4), 17/tl (§14.2), 17/ts (§11.1), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 21/rl (§11, §11.2, §20, §20.1, §20.2, §22.1), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.5, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.2, §10.3, §10.4, §10.5, §10.1.1.1), 22/pav (§9.2), 23/abc (§1), 24/lv (§28, §29, §43), 24/pb (§17), 24/ch (§3, §3.1, §6, §7, §7.1, §7.2, §7.3, §7.4, §7.4.1, §7.5), 25/ci (§3, §3.2.3, §3.2.3.2, §3.2.3.1.1, §3.2.3.3.1.2, §3.2.3.4.1.1, §3.2.3.3.1.2.1, §3.2.3.3.1.3, §4.2), 25/ciac (§2), 25/cii (§1.2.1, §3.1.1.4.10, §3.5.3, §3.5.8.1, §3.5.8.2, §3.5.8.3, §3.5.9), 25/cp (§3.3.1, §5.2.1, §5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.3, §4.1.5), 26/ts (§10, §11, §12), 27/is (§31.4, §31.5, §31.6, §31.7, §31.8).

-

The function Emit::inv_call is used in 4/am (§43), 5/lp (§19, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1), 5/nv (§12), 6/bp (§33), 6/rlt (§15, §15.2.1, §15.2.5.1, §15.2.6, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.5, §29.6), 6/nv (§17, §18.2), 12/dtd (§7.1.2, §11, §17, §27), 12/cdp (§2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§7, §20, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6), 14/lv (§14.3, §14.4, §14.5), 14/cfs (§7), 17/ts (§8), 17/rs (§6.1, §6.2, §7.2), 20/eq (§48), 21/rl (§11.2, §22.1), 21/rb (§24.1.3.1), 21/fao (§10), 21/sv (§3.2), 21/ac (§14), 22/prcd (§10, §10.1.1.1), 22/pav (§9.2), 24/lv (§41), 24/ch (§4), 25/ci (§3.2.3.6), 25/ciac (§2), 25/cii (§3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1), 25/cp (§6), 26/rt (§4.1.2, §4.1.3, §4.1.4), 26/ts (§10, §12), 27/is (§31.4).

+

The function Emit::inv_call is used in 4/am (§43), 5/lp (§19, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1), 5/nv (§12), 6/bp (§33), 6/rlt (§15, §15.2.1, §15.2.5.1, §15.2.6, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.5, §29.6), 6/nv (§17, §18.2), 12/dtd (§7.1.2, §11, §17, §27), 12/cdp (§2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§7, §19, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6), 14/lv (§14.3, §14.4, §14.5), 14/cfs (§7), 17/ts (§8), 17/rs (§6.1, §6.2, §7.2), 20/eq (§48), 21/rl (§11.2, §22.1), 21/rb (§24.1.3.1), 21/fao (§10), 21/sv (§3.2), 21/ac (§14), 22/prcd (§10, §10.1.1.1), 22/pav (§9.2), 24/lv (§41), 24/ch (§4), 25/ci (§3.2.3.6), 25/ciac (§2), 25/cii (§3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1), 25/cp (§6), 26/rt (§4.1.2, §4.1.3, §4.1.4), 26/ts (§10, §12), 27/is (§31.4).

The function Emit::inv_indirect_call appears nowhere else.

@@ -1323,9 +1322,9 @@ insert them into the Inter stream close to the top.

The function Emit::return appears nowhere else.

-

The function Emit::rtrue is used in 5/lp (§27, §27.3.4), 6/rlt (§15.2.2, §15.2.3, §15.2.4, §15.2.7, §15.2.9.1, §29.4, §29.5, §29.6), 6/nv (§18.1), 12/cdp (§2.1.6.1.2.2.1), 13/rsfk (§26.6.5), 15/ma (§13), 17/ts (§11.1), 19/rsft (§2), 21/rl (§20.2), 21/fao (§10), 24/ch (§6), 25/cp (§5.4.4), 26/uo (§21.1).

+

The function Emit::rtrue is used in 5/lp (§27, §27.3.4), 6/rlt (§15.2.2, §15.2.3, §15.2.4, §15.2.7, §15.2.9.1, §29.4, §29.5, §29.6), 6/nv (§18.1), 12/cdp (§2.1.6.1.2.2.1), 13/rsfk (§25.6.5), 15/ma (§13), 17/ts (§11.1), 19/rsft (§2), 21/rl (§20.2), 21/fao (§10), 24/ch (§6), 25/cp (§5.4.4), 26/uo (§21.1).

-

The function Emit::rfalse is used in 4/am (§34.2), 6/bp (§25), 6/rlt (§15.2, §15.2.2, §15.2.3, §15.2.4, §15.2.9.1, §29.4), 6/nv (§18.1), 12/cdp (§2.1.6.1.4), 13/rsfk (§26.6.5, §26.6.6), 15/ma (§13), 20/eq (§43), 21/rb (§23), 21/fao (§10), 24/ch (§6), 26/uo (§21.1), 26/lt (§4.1), 26/ts (§10).

+

The function Emit::rfalse is used in 4/am (§34.2), 6/bp (§25), 6/rlt (§15.2, §15.2.2, §15.2.3, §15.2.4, §15.2.9.1, §29.4), 6/nv (§18.1), 12/cdp (§2.1.6.1.4), 13/rsfk (§25.6.5, §25.6.6), 15/ma (§13), 20/eq (§43), 21/rb (§23), 21/fao (§10), 24/ch (§6), 26/uo (§21.1), 26/lt (§4.1), 26/ts (§10).

The function Emit::push is used in 26/rt (§4.1.2).

@@ -1684,19 +1683,19 @@ insert them into the Inter stream close to the top.

The function Emit::at is used in §4.

-

The function Emit::down is used in §4, 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3, §27.3.1, §27.3.2, §27.3.3, §27.3.4), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25, §33), 6/rlt (§15, §15.2, §15.2.1, §15.2.4, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§17, §18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/ca (§5.2), 12/dtd (§7.1, §7.1.1, §7.1.2, §8, §9, §9.1, §11, §15, §16, §17, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1.2.2, §2.1.6.1.2.3.2, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.5, §2.1.6.1.2.3.3.1, §2.1.6.1.2.2.2, §2.1.6.1.2.2.2.1, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7, §2.1.6.1.18), 13/kak (§2), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.10, §1.11, §1.12, §1.13), 13/rsfk (§7, §16.3, §20, §26.1, §26.2, §26.3, §26.4.1, §26.4.2, §26.5, §26.5.1, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 14/rv (§24.3), 14/lv (§14.3, §14.3.2, §14.4, §14.5), 14/cn (§16.1, §16.2, §16.3), 14/cfs (§7), 15/ma (§13), 15/epv (§4), 17/tl (§14.2), 17/ts (§8, §11.1), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§48), 21/rl (§11, §11.2, §20, §20.1, §20.2, §22.1), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.4, §24.1.5, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.2, §10.3, §10.4, §10.5, §10.1.1.1), 22/pav (§9.2), 23/abc (§1), 24/lv (§28, §29, §41, §43), 24/pb (§17), 24/ch (§3, §4, §6, §7, §7.1, §7.2, §7.3, §7.4, §7.4.1, §7.5), 25/ci (§3, §3.2.3, §3.2.3.2, §3.2.3.1.1, §3.2.3.3, §3.2.3.6, §3.2.3.3.1.2, §3.2.3.4.1.1, §3.2.3.3.1.2.1, §3.2.3.3.1.3, §4.2), 25/ciac (§2), 25/cii (§1.2.1, §3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1, §3.5.8.2, §3.5.8.3, §3.5.9), 25/cp (§3.3.1, §5.2.1, §5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.3, §4.1.4, §4.1.5), 26/iti (§9), 26/ts (§10, §11, §12), 27/is (§31.2, §31.3, §31.4, §31.5, §31.6, §31.7, §31.8, §31.9).

+

The function Emit::down is used in §4, 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3, §27.3.1, §27.3.2, §27.3.3, §27.3.4), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25, §33), 6/rlt (§15, §15.2, §15.2.1, §15.2.4, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§17, §18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/ca (§5.2), 12/dtd (§7.1, §7.1.1, §7.1.2, §8, §9, §9.1, §11, §15, §16, §17, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1.2.2, §2.1.6.1.2.3.2, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.5, §2.1.6.1.2.3.3.1, §2.1.6.1.2.2.2, §2.1.6.1.2.2.2.1, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7, §2.1.6.1.18), 13/kak (§2), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.10, §1.11, §1.12, §1.13), 13/rsfk (§7, §16.3, §19, §25.1, §25.2, §25.3, §25.4.1, §25.4.2, §25.5, §25.5.1, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 14/rv (§24.3), 14/lv (§14.3, §14.3.2, §14.4, §14.5), 14/cn (§16.1, §16.2, §16.3), 14/cfs (§7), 15/ma (§13), 15/epv (§4), 17/tl (§14.2), 17/ts (§8, §11.1), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§48), 21/rl (§11, §11.2, §20, §20.1, §20.2, §22.1), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.4, §24.1.5, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.2, §10.3, §10.4, §10.5, §10.1.1.1), 22/pav (§9.2), 23/abc (§1), 24/lv (§28, §29, §41, §43), 24/pb (§17), 24/ch (§3, §4, §6, §7, §7.1, §7.2, §7.3, §7.4, §7.4.1, §7.5), 25/ci (§3, §3.2.3, §3.2.3.2, §3.2.3.1.1, §3.2.3.3, §3.2.3.6, §3.2.3.3.1.2, §3.2.3.4.1.1, §3.2.3.3.1.2.1, §3.2.3.3.1.3, §4.2), 25/ciac (§2), 25/cii (§1.2.1, §3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1, §3.5.8.2, §3.5.8.3, §3.5.9), 25/cp (§3.3.1, §5.2.1, §5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.3, §4.1.4, §4.1.5), 26/iti (§9), 26/ts (§10, §11, §12), 27/is (§31.2, §31.3, §31.4, §31.5, §31.6, §31.7, §31.8, §31.9).

-

The function Emit::up is used in §4, 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3, §27.3.1, §27.3.2, §27.3.3, §27.3.4), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25, §33), 6/rlt (§15, §15.2, §15.2.1, §15.2.4, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§17, §18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/is (§8), 12/ca (§5.2), 12/dtd (§7.1, §7.1.2, §8, §9, §9.1, §11, §15, §16, §17, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1, §2.1.6.1.2.2, §2.1.6.1.2.3.3, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.5, §2.1.6.1.2.6, §2.1.6.1.2.2.2, §2.1.6.1.2.2.2.1, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7, §2.1.6.1.18), 13/kak (§2), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.10, §1.11, §1.12, §1.13), 13/rsfk (§16.3, §20, §26.1, §26.2, §26.3, §26.4.1, §26.4.2, §26.5, §26.5.1, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 14/rv (§24.3), 14/lv (§14.3, §14.3.2, §14.4, §14.5), 14/cn (§16.1, §16.2, §16.3), 14/cfs (§7, §8), 15/ma (§13), 15/epv (§4), 17/tl (§14.2), 17/ts (§8, §11.1), 17/rs (§6.1, §6.2, §7.2, §12.1.1), 19/tc (§8), 19/rsft (§2), 20/eq (§48), 21/rl (§11, §11.2, §20, §20.1, §20.2, §22.1), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.4, §24.1.5, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.3, §10.4, §10.1.1.1), 22/pav (§9.2), 23/abc (§1), 24/lv (§28, §29, §41, §43), 24/pb (§17), 24/ch (§3, §4, §6, §7, §7.1, §7.2, §7.3, §7.4, §7.4.1, §7.5), 25/ci (§3, §3.2.3, §3.2.3.2, §3.2.3.1.1, §3.2.3.3, §3.2.3.6, §3.2.3.4.1, §3.2.3.3.1.2.1, §3.2.3.3.1.3, §4.2), 25/ciac (§2), 25/cii (§1.2.1, §3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1, §3.5.8.2, §3.5.8.3, §3.5.9), 25/cp (§3.3.1, §5.2.1, §5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3, §5.4.5), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.3, §4.1.4, §4.1.5), 26/iti (§9), 26/ts (§10, §11, §12), 27/is (§31.2, §31.3, §31.4, §31.5, §31.6, §31.7, §31.8, §31.9).

+

The function Emit::up is used in §4, 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3, §27.3.1, §27.3.2, §27.3.3, §27.3.4), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25, §33), 6/rlt (§15, §15.2, §15.2.1, §15.2.4, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6, §30), 6/nv (§17, §18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/is (§8), 12/ca (§5.2), 12/dtd (§7.1, §7.1.2, §8, §9, §9.1, §11, §15, §16, §17, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1, §2.1.6.1.2.2, §2.1.6.1.2.3.3, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.5, §2.1.6.1.2.6, §2.1.6.1.2.2.2, §2.1.6.1.2.2.2.1, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7, §2.1.6.1.18), 13/kak (§2), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.10, §1.11, §1.12, §1.13), 13/rsfk (§16.3, §19, §25.1, §25.2, §25.3, §25.4.1, §25.4.2, §25.5, §25.5.1, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 14/rv (§24.3), 14/lv (§14.3, §14.3.2, §14.4, §14.5), 14/cn (§16.1, §16.2, §16.3), 14/cfs (§7, §8), 15/ma (§13), 15/epv (§4), 17/tl (§14.2), 17/ts (§8, §11.1), 17/rs (§6.1, §6.2, §7.2, §12.1.1), 19/tc (§8), 19/rsft (§2), 20/eq (§48), 21/rl (§11, §11.2, §20, §20.1, §20.2, §22.1), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.4, §24.1.5, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.3, §10.4, §10.1.1.1), 22/pav (§9.2), 23/abc (§1), 24/lv (§28, §29, §41, §43), 24/pb (§17), 24/ch (§3, §4, §6, §7, §7.1, §7.2, §7.3, §7.4, §7.4.1, §7.5), 25/ci (§3, §3.2.3, §3.2.3.2, §3.2.3.1.1, §3.2.3.3, §3.2.3.6, §3.2.3.4.1, §3.2.3.3.1.2.1, §3.2.3.3.1.3, §4.2), 25/ciac (§2), 25/cii (§1.2.1, §3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1, §3.5.8.2, §3.5.8.3, §3.5.9), 25/cp (§3.3.1, §5.2.1, §5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3, §5.4.5), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.3, §4.1.4, §4.1.5), 26/iti (§9), 26/ts (§10, §11, §12), 27/is (§31.2, §31.3, §31.4, §31.5, §31.6, §31.7, §31.8, §31.9).

The function Emit::pop_code_position is used in 17/ts (§11).

-

The function Emit::code is used in 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3.3, §27.3.4), 6/bp (§25), 6/rlt (§15.2, §15.2.4, §15.2.9, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6), 6/nv (§18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/dtd (§23, §27), 12/cdp (§2.1.6, §2.1.6.1.2.3.3.1, §2.1.6.1.2.2.3, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.17), 13/rsfk (§16.3, §26.3, §26.5, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 15/ma (§13), 17/ts (§11.1), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 21/rl (§11, §20, §20.2), 21/rb (§24.1.2, §24.1.3, §24.1.4, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 22/prcd (§10, §10.2, §10.3, §10.4, §10.5, §10.1.1.1), 24/ch (§6, §7, §7.4, §7.5), 25/ci (§3.2.3.3, §3.2.3.6, §3.2.3.3.1.2), 25/cii (§3.5.9), 25/cp (§5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/ts (§10), 27/is (§31.2).

+

The function Emit::code is used in 4/am (§35, §43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3.3, §27.3.4), 6/bp (§25), 6/rlt (§15.2, §15.2.4, §15.2.9, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6), 6/nv (§18.1, §18.2, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/dtd (§23, §27), 12/cdp (§2.1.6, §2.1.6.1.2.3.3.1, §2.1.6.1.2.2.3, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.17), 13/rsfk (§16.3, §25.3, §25.5, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 15/ma (§13), 17/ts (§11.1), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 21/rl (§11, §20, §20.2), 21/rb (§24.1.2, §24.1.3, §24.1.4, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 22/prcd (§10, §10.2, §10.3, §10.4, §10.5, §10.1.1.1), 24/ch (§6, §7, §7.4, §7.5), 25/ci (§3.2.3.3, §3.2.3.6, §3.2.3.3.1.2), 25/cii (§3.5.9), 25/cp (§5.3.4, §5.3.5, §5.3.5.1, §5.3.5.2, §5.3.5.3), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/ts (§10), 27/is (§31.2).

The function Emit::evaluation is used in 26/iti (§9), 27/is (§31.9).

The function Emit::reference is used in 13/ca (§1.10), 27/is (§31.6, §31.9).

-

The function Emit::val is used in §4, 4/am (§43), 5/lp (§19, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3.3, §27.3.4), 5/nv (§12), 6/rlt (§15, §15.2.1, §15.2.4, §15.2.6, §15.2.7, §15.2.8, §15.2.10, §15.2.11, §15.2.12, §15.2.12.1), 6/nv (§17, §18.1, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/is (§7.3), 12/dtd (§7, §8, §9, §9.1, §10, §15, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1.2.3.7, §2.1.6.1.2.5, §2.1.6.1.2.2.3, §2.1.6.1.10, §2.1.6.1.11, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.17), 13/rsfk (§9, §16.3, §20, §26.4.1, §26.4.2, §26.5, §26.5.1, §26.6.2, §26.6.3, §26.6.4), 14/vh (§3), 14/lv (§14.5), 14/cn (§16, §16.3), 15/epv (§4), 16/is (§29), 17/rs (§6.2, §7.2), 19/tc (§8), 21/rl (§11.1, §11.2, §20), 21/rb (§24.1.3, §24.1.5), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 21/ac (§14), 22/prcd (§10, §10.5, §10.1.1.1), 22/pav (§9.2), 24/lv (§28, §29, §43), 24/ch (§3, §4, §7.1, §7.2, §7.3, §7.4, §7.5), 25/ci (§3.2.3.1.1, §3.2.3.6, §3.2.3.3.1.3), 25/ciac (§2, §2.1), 25/cii (§3.1, §3.4.2, §3.1.1.4.10, §3.1.1.4.11, §3.6.1), 25/cp (§3.3.1, §5.2.1), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.4), 26/iti (§9), 26/ts (§10, §12), 27/is (§31.5, §31.9).

+

The function Emit::val is used in §4, 4/am (§43), 5/lp (§19, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3.3, §27.3.4), 5/nv (§12), 6/rlt (§15, §15.2.1, §15.2.4, §15.2.6, §15.2.7, §15.2.8, §15.2.10, §15.2.11, §15.2.12, §15.2.12.1), 6/nv (§17, §18.1, §18.1.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 12/is (§7.3), 12/dtd (§7, §8, §9, §9.1, §10, §15, §18, §19, §20, §22, §23, §25, §26, §27), 12/cdp (§2.1.6, §2.1.6.1.2.3.7, §2.1.6.1.2.5, §2.1.6.1.2.2.3, §2.1.6.1.10, §2.1.6.1.11, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.17), 13/rsfk (§9, §16.3, §19, §25.4.1, §25.4.2, §25.5, §25.5.1, §25.6.2, §25.6.3, §25.6.4), 14/vh (§3), 14/lv (§14.5), 14/cn (§16, §16.3), 15/epv (§4), 16/is (§29), 17/rs (§6.2, §7.2), 19/tc (§8), 21/rl (§11.1, §11.2, §20), 21/rb (§24.1.3, §24.1.5), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3), 21/ac (§14), 22/prcd (§10, §10.5, §10.1.1.1), 22/pav (§9.2), 24/lv (§28, §29, §43), 24/ch (§3, §4, §7.1, §7.2, §7.3, §7.4, §7.5), 25/ci (§3.2.3.1.1, §3.2.3.6, §3.2.3.3.1.3), 25/ciac (§2, §2.1), 25/cii (§3.1, §3.4.2, §3.1.1.4.10, §3.1.1.4.11, §3.6.1), 25/cp (§3.3.1, §5.2.1), 26/uo (§21.1, §21.2), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.4), 26/iti (§9), 26/ts (§10, §12), 27/is (§31.5, §31.9).

The function Emit::val_nothing is used in 4/am (§43), 6/rlt (§29.1, §29.2, §29.3), 12/cdp (§2.1.6.1.11, §2.1.6.1.18).

@@ -1704,11 +1703,11 @@ insert them into the Inter stream close to the top.

The function Emit::ref appears nowhere else.

-

The function Emit::val_iname is used in §4, 4/am (§30, §43), 5/lp (§19, §19.3.1, §19.3.2, §19.2.1), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25, §33), 6/rlt (§15, §15.2, §15.2.1, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.2, §29.3, §29.4, §29.5, §29.6), 6/nv (§17, §18.1, §18.2), 12/is (§8), 12/dtd (§9, §9.1, §13, §16, §18, §19, §22, §26), 12/cdp (§2.1.6.1.2.5, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.2.2.5, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1), 13/kak (§2), 13/rsfk (§16.3, §26.3, §26.5, §26.5.1, §26.6.3, §26.6.6, §27), 14/lv (§14.3, §14.4, §14.5), 15/epv (§4), 17/ts (§8, §11.1), 17/rs (§5, §6.1, §6.2, §7.2), 19/rsft (§2), 20/eq (§48), 21/rl (§20, §20.1, §20.2), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.3, §10.4, §10.1.1.1), 24/lv (§28, §29), 24/ch (§3, §7.1, §7.2, §7.3), 25/ci (§3, §3.2.3), 25/cii (§3.2.3, §3.2.4, §3.2.5, §3.2.6, §3.4.3, §3.1.1.4.7.1, §3.1.1.4.10, §3.5.8.3, §3.6.2, §3.6.3), 26/lt (§4.1), 26/iti (§9), 26/ts (§10, §11), 27/is (§31.8.1).

+

The function Emit::val_iname is used in §4, 4/am (§30, §43), 5/lp (§19, §19.3.1, §19.3.2, §19.2.1), 5/ins (§29), 5/nv (§12, §16), 6/bp (§25, §33), 6/rlt (§15, §15.2, §15.2.1, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.2, §29.3, §29.4, §29.5, §29.6), 6/nv (§17, §18.1, §18.2), 12/is (§8), 12/dtd (§9, §9.1, §13, §16, §18, §19, §22, §26), 12/cdp (§2.1.6.1.2.5, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.2.2.5, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1), 13/kak (§2), 13/rsfk (§16.3, §25.3, §25.5, §25.5.1, §25.6.3, §25.6.6, §26), 14/lv (§14.3, §14.4, §14.5), 15/epv (§4), 17/ts (§8, §11.1), 17/rs (§5, §6.1, §6.2, §7.2), 19/rsft (§2), 20/eq (§48), 21/rl (§20, §20.1, §20.2), 21/rb (§24.1.1, §24.1.2, §24.1.3, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3.1, §3.2), 21/ac (§14), 22/prcd (§10, §10.3, §10.4, §10.1.1.1), 24/lv (§28, §29), 24/ch (§3, §7.1, §7.2, §7.3), 25/ci (§3, §3.2.3), 25/cii (§3.2.3, §3.2.4, §3.2.5, §3.2.6, §3.4.3, §3.1.1.4.7.1, §3.1.1.4.10, §3.5.8.3, §3.6.2, §3.6.3), 26/lt (§4.1), 26/iti (§9), 26/ts (§10, §11), 27/is (§31.8.1).

-

The function Emit::val_symbol is used in 4/am (§43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3.3, §27.3.4), 5/ins (§29), 6/bp (§25), 6/rlt (§15.2, §15.2.1, §15.2.4, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6), 6/nv (§18.1, §18.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 11/tr (§10), 12/dtd (§23, §25, §26, §27), 12/cad (§7), 12/cdp (§2.1.6, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7), 13/kak (§2), 13/rsfk (§9, §12, §16.3, §26.1, §26.2, §26.3, §26.4.1, §26.4.2, §26.5, §26.5.1, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 14/lv (§14.1, §14.5), 14/cn (§16.3), 15/epv (§4), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§48), 21/rl (§20, §20.1, §20.2), 21/rb (§24.1.3, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 24/lv (§28, §41, §45), 24/ch (§7, §7.1, §7.2, §7.3, §7.4, §7.5), 25/cii (§3.5.1, §3.5.3, §3.6.2), 26/uo (§21.1, §21.2), 26/rt (§4.1.3, §4.1.5), 27/is (§31.9).

+

The function Emit::val_symbol is used in 4/am (§43), 5/lp (§19, §19.1, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27, §27.2, §27.3.3, §27.3.4), 5/ins (§29), 6/bp (§25), 6/rlt (§15.2, §15.2.1, §15.2.4, §15.2.5, §15.2.5.1, §15.2.6, §15.2.7, §15.2.8, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §17, §29.1, §29.2, §29.3, §29.4, §29.5, §29.6), 6/nv (§18.1, §18.2, §18.1.2.1, §18.1.2.2, §19), 8/ef (§19), 11/tr (§10), 12/dtd (§23, §25, §26, §27), 12/cad (§7), 12/cdp (§2.1.6, §2.1.6.1.7, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.13, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1, §2.1.6.1.15, §2.1.6.1.17, §2.1.6.1.2.2.7), 13/kak (§2), 13/rsfk (§9, §12, §16.3, §25.1, §25.2, §25.3, §25.4.1, §25.4.2, §25.5, §25.5.1, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 14/lv (§14.1, §14.5), 14/cn (§16.3), 15/epv (§4), 17/rs (§6.2, §7.2), 19/tc (§8), 19/rsft (§2), 20/eq (§48), 21/rl (§20, §20.1, §20.2), 21/rb (§24.1.3, §24.1.3.1), 21/rl2 (§14.1), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 24/lv (§28, §41, §45), 24/ch (§7, §7.1, §7.2, §7.3, §7.4, §7.5), 25/cii (§3.5.1, §3.5.3, §3.6.2), 26/uo (§21.1, §21.2), 26/rt (§4.1.3, §4.1.5), 27/is (§31.9).

-

The function Emit::val_text is used in 4/am (§43), 5/lp (§19, §27.3, §27.3.1, §27.3.2, §27.3.3), 6/rlt (§15), 6/nv (§18.2, §19), 8/ef (§19), 13/rsfk (§26.3, §27), 17/tl (§14.2), 17/ts (§11.1), 17/rs (§7.2), 19/rsft (§2), 21/rl (§20.1, §20.2), 21/fao (§10), 24/ch (§7.4), 25/ci (§4.2), 25/cii (§3.5.8.1), 26/uo (§21.2), 26/ts (§10, §11, §12), 27/is (§31.9).

+

The function Emit::val_text is used in 4/am (§43), 5/lp (§19, §27.3, §27.3.1, §27.3.2, §27.3.3), 6/rlt (§15), 6/nv (§18.2, §19), 8/ef (§19), 13/rsfk (§25.3, §26), 17/tl (§14.2), 17/ts (§11.1), 17/rs (§7.2), 19/rsft (§2), 21/rl (§20.1, §20.2), 21/fao (§10), 24/ch (§7.4), 25/ci (§4.2), 25/cii (§3.5.8.1), 26/uo (§21.2), 26/ts (§10, §11, §12), 27/is (§31.9).

The function Emit::val_char is used in 27/is (§31.9).

@@ -1720,9 +1719,9 @@ insert them into the Inter stream close to the top.

The function Emit::ref_iname is used in §4, 4/am (§43), 5/lp (§19, §19.1, §19.3.1, §19.3.2, §19.2.2), 6/nv (§17), 12/dtd (§19, §22), 14/lv (§14.3.2), 17/rs (§6.2), 21/rb (§24.1.3), 22/prcd (§10.3), 25/ci (§3, §3.2.3.1.1, §3.2.3.3.1.3), 25/cii (§3.1.1.4.10, §3.5.8.2, §3.5.8.3), 25/cp (§5.2.1), 26/lt (§4.1).

-

The function Emit::ref_symbol is used in 4/am (§43), 5/lp (§19, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27.3.3), 6/nv (§18.2), 12/dtd (§9, §23, §27), 12/cdp (§2.1.6, §2.1.6.1.2.2, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.2.2, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.17), 13/rsfk (§26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6), 17/rs (§6.2), 21/rb (§24.1.1, §24.1.3), 21/sv (§3.1, §3.2), 24/lv (§29, §43), 24/ch (§7.1, §7.2, §7.4, §7.4.1), 25/cii (§1.2.1, §3.5.1, §3.5.3), 25/cp (§5.3.5), 26/rt (§4.1.3).

+

The function Emit::ref_symbol is used in 4/am (§43), 5/lp (§19, §19.2, §19.3, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2, §27.3.3), 6/nv (§18.2), 12/dtd (§9, §23, §27), 12/cdp (§2.1.6, §2.1.6.1.2.2, §2.1.6.1.2.3.7, §2.1.6.1.2.4, §2.1.6.1.2.2.2, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.10, §2.1.6.1.2.2.4, §2.1.6.1.11, §2.1.6.1.2.2.5, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.17), 13/rsfk (§25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6), 17/rs (§6.2), 21/rb (§24.1.1, §24.1.3), 21/sv (§3.1, §3.2), 24/lv (§29, §43), 24/ch (§7.1, §7.2, §7.4, §7.4.1), 25/cii (§1.2.1, §3.5.1, §3.5.3), 25/cp (§5.3.5), 26/rt (§4.1.3).

-

The function Emit::cast is used in 13/rsfk (§26.4.1, §26.4.2).

+

The function Emit::cast is used in 13/rsfk (§25.4.1, §25.4.2).

The function Emit::end_block is used in 26/rt (§4, §4.1).

diff --git a/docs/core-module/27-hl.html b/docs/core-module/27-hl.html index ad7fa5062..6d3e755d5 100644 --- a/docs/core-module/27-hl.html +++ b/docs/core-module/27-hl.html @@ -18,6 +18,7 @@ struct package_request *this_mundane_package; int this_exotic_package; struct inter_symbol *any_package_of_this_type; + int any_enclosure; } location_requirement; location_requirement HierarchyLocations::blank(void) { @@ -26,6 +27,7 @@ req.this_mundane_package = NULL; req.this_exotic_package = -1; req.any_package_of_this_type = NULL; + req.any_enclosure = FALSE; return req; } @@ -53,6 +55,12 @@ return req; } + location_requirement HierarchyLocations::any_enclosure(void) { + location_requirement req = HierarchyLocations::blank(); + req.any_enclosure = TRUE; + return req; + } + location_requirement HierarchyLocations::this_package(package_request *P) { location_requirement req = HierarchyLocations::blank(); req.this_mundane_package = P; @@ -265,21 +273,23 @@

The function HierarchyLocations::synoptic_submodule is used in 27/hr (§1.2, §1.4, §1.6, §1.10, §1.12, §1.18, §1.22, §1.26, §1.28, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42).

-

The function HierarchyLocations::any_package_of_type is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44).

+

The function HierarchyLocations::any_package_of_type is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44, §1.46).

-

The function HierarchyLocations::this_package is used in 27/hr (§1.48, §5).

+

The function HierarchyLocations::any_enclosure is used in 27/hr (§1.46).

-

The function HierarchyLocations::this_exotic_package is used in 27/hr (§1.46).

+

The function HierarchyLocations::this_package is used in 27/hr (§1.50, §5).

+ +

The function HierarchyLocations::this_exotic_package is used in 27/hr (§1.48).

The function HierarchyLocations::new appears nowhere else.

-

The function HierarchyLocations::con is used in 27/hr (§1.2, §1.4, §1.6, §1.8, §1.10, §1.12, §1.14, §1.20, §1.22, §1.26, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44, §1.46, §1.48, §5).

+

The function HierarchyLocations::con is used in 27/hr (§1.2, §1.4, §1.6, §1.8, §1.10, §1.12, §1.14, §1.20, §1.22, §1.26, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44, §1.46, §1.48, §1.50, §5).

The function HierarchyLocations::package is used in 27/hr (§1.4, §1.6).

The function HierarchyLocations::make_as is used in 27/hr (§5).

-

The function HierarchyLocations::func is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.18, §1.22, §1.24, §1.26, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.46).

+

The function HierarchyLocations::func is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.18, §1.22, §1.24, §1.26, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.46, §1.48).

The function HierarchyLocations::datum is used in 27/hr (§1.10).

@@ -313,11 +323,8 @@ P, NULL); } else { - if (Str::len(nrl->access_name) == 0) { - LOG("********** %S\n", T); - iname = InterNames::one_off(T, P); - } else - iname = InterNames::one_off(nrl->access_name, P); + if (Str::len(nrl->access_name) == 0) iname = InterNames::one_off(T, P); + else iname = InterNames::one_off(nrl->access_name, P); } if (!Wordings::empty(W)) InterNames::attach_memo(iname, W); if ((Str::len(T) > 0) && (nrl->access_name)) InterNames::translate(iname, T); @@ -336,9 +343,17 @@ if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL)) internal_error("bad nrl ID"); named_resource_location *nrl = nrls_indexed_by_id[id]; - if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately"); - if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("subpackage in wrong superpackage"); + + if (P == NULL) internal_error("no superpackage"); if (nrl->package_type == NULL) internal_error("package_in_package used wrongly"); + if (nrl->requirements.any_package_of_this_type) { + if (P->eventual_type != nrl->requirements.any_package_of_this_type) + internal_error("subpackage in wrong superpackage"); + } else if (nrl->requirements.any_enclosure) { + if (Inter::Symbols::read_annotation(P->eventual_type, ENCLOSING_IANN) != 1) + internal_error("subpackage not in enclosing superpackage"); + } else internal_error("NRL accessed inappropriately"); + return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->package_type); }
@@ -412,7 +427,7 @@

The function HierarchyLocations::index_ap appears nowhere else.

-

The function HierarchyLocations::ap is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44).

+

The function HierarchyLocations::ap is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.34, §1.36, §1.38, §1.40, §1.42, §1.44, §1.46).

The function HierarchyLocations::attach_new_package is used in 27/hr (§5).

diff --git a/docs/core-module/27-hr.html b/docs/core-module/27-hr.html index 804f4cd0f..089d07c65 100644 --- a/docs/core-module/27-hr.html +++ b/docs/core-module/27-hr.html @@ -15,11 +15,7 @@
     enum BLOCK_CONSTANT_PR_COUNTER from 0
     enum BLOCK_PR_COUNTER
-    enum FORM_PR_COUNTER
     enum INLINE_PR_COUNTER
-    enum LITERAL_PR_COUNTER
-    enum MISC_PR_COUNTER
-    enum PROPOSITION_PR_COUNTER
     enum SUBSTITUTION_PR_COUNTER
     enum SUBSTITUTIONF_PR_COUNTER
 
@@ -63,9 +59,10 @@ <Establish rules 1.40>; <Establish tables 1.42>; <Establish variables 1.44>; - <The rest 1.46>; + <Establish enclosed matter 1.46>; + <The rest 1.48>; - <Establish template resources 1.48>; + <Establish template resources 1.50>; }
@@ -166,6 +163,7 @@
     enum MISTAKEACTION_HL
     enum ACTIONS_HAP
+    enum ACTION_BASE_NAME_HL
     enum CHECK_RB_HL
     enum CARRY_OUT_RB_HL
     enum REPORT_RB_HL
@@ -192,6 +190,7 @@
         location_requirement local_actions = HierarchyLocations::local_submodule(actions);
         HierarchyLocations::ap(ACTIONS_HAP, local_actions, I"action", I"_action");
             location_requirement in_action = HierarchyLocations::any_package_of_type(I"_action");
+            HierarchyLocations::con(ACTION_BASE_NAME_HL, NULL, Translation::generate(ACTION_BASE_INAMEF), in_action);
             HierarchyLocations::package(CHECK_RB_HL, I"check_rb", I"_rulebook", in_action);
             HierarchyLocations::package(CARRY_OUT_RB_HL, I"carry_out_rb", I"_rulebook", in_action);
             HierarchyLocations::package(REPORT_RB_HL, I"report_rb", I"_rulebook", in_action);
@@ -379,6 +378,8 @@
     enum MODAL_CONJUGATION_FN_HL
     enum VERBS_HAP
     enum NONMODAL_CONJUGATION_FN_HL
+    enum VERB_FORMS_HAP
+    enum FORM_FN_HL
     enum CONJUGATION_FN_HL
 

§1.14. @@ -402,6 +403,9 @@ HierarchyLocations::ap(VERBS_HAP, local_conjugations, I"verb", I"_verb"); location_requirement in_verb = HierarchyLocations::any_package_of_type(I"_verb"); HierarchyLocations::func(NONMODAL_CONJUGATION_FN_HL, I"conjugation_fn", Translation::generate(CONJUGATE_VERB_ROUTINE_INAMEF), in_verb); + HierarchyLocations::ap(VERB_FORMS_HAP, in_verb, I"form", I"_verb_form"); + location_requirement in_verb_form = HierarchyLocations::any_package_of_type(I"_verb_form"); + HierarchyLocations::func(FORM_FN_HL, I"form_fn", Translation::uniqued(), in_verb_form);

@@ -532,6 +536,7 @@ enum INTERNALTESTCASES_HL enum COMMAND_PR_COUNTER enum COMMANDS_HAP + enum VERB_DECLARATION_ARRAY_HL

§1.22. <Establish grammar 1.22> = @@ -596,6 +601,8 @@ HierarchyLocations::func(TESTSCRIPTSUB_HL, I"action_fn", Translation::to(I"TestScriptSub"), synoptic_grammar); HierarchyLocations::func(INTERNALTESTCASES_HL, I"run_tests_fn", Translation::to(I"InternalTestCases"), synoptic_grammar); HierarchyLocations::ap(COMMANDS_HAP, synoptic_grammar, I"command", I"_command"); + location_requirement in_command = HierarchyLocations::any_package_of_type(I"_command"); + HierarchyLocations::func(VERB_DECLARATION_ARRAY_HL, NULL, Translation::generate(VERB_DECLARATION_ARRAY_INAMEF), in_command);

@@ -691,6 +698,7 @@ enum K_TYPELESS_INT_HL enum K_TYPELESS_STRING_HL enum KIND_HAP + enum KIND_HL enum DEFAULT_VALUE_HL enum DECREMENT_FN_HL enum INCREMENT_FN_HL @@ -729,12 +737,13 @@ location_requirement local_kinds = HierarchyLocations::local_submodule(kinds); HierarchyLocations::ap(KIND_HAP, local_kinds, I"kind", I"_kind"); location_requirement in_kind = HierarchyLocations::any_package_of_type(I"_kind"); + HierarchyLocations::con(KIND_HL, NULL, Translation::generate(KIND_ID_INAMEF), in_kind); HierarchyLocations::con(DEFAULT_VALUE_HL, I"default_value", Translation::uniqued(), in_kind); - HierarchyLocations::con(DECREMENT_FN_HL, I"decrement_fn", Translation::uniqued(), in_kind); - HierarchyLocations::con(INCREMENT_FN_HL, I"increment_fn", Translation::uniqued(), in_kind); - HierarchyLocations::con(PRINT_FN_HL, I"print_fn", Translation::uniqued(), in_kind); - HierarchyLocations::con(PRINT_DASH_FN_HL, I"print_fn", Translation::generate(PRINTING_ROUTINE_INAMEF), in_kind); - HierarchyLocations::con(RANGER_FN_HL, I"ranger_fn", Translation::uniqued(), in_kind); + HierarchyLocations::func(DECREMENT_FN_HL, I"decrement_fn", Translation::uniqued(), in_kind); + HierarchyLocations::func(INCREMENT_FN_HL, I"increment_fn", Translation::uniqued(), in_kind); + HierarchyLocations::func(PRINT_FN_HL, I"print_fn", Translation::uniqued(), in_kind); + HierarchyLocations::func(PRINT_DASH_FN_HL, I"print_fn", Translation::generate(PRINTING_ROUTINE_INAMEF), in_kind); + HierarchyLocations::func(RANGER_FN_HL, I"ranger_fn", Translation::uniqued(), in_kind); HierarchyLocations::func(DEFAULT_CLOSURE_FN_HL, I"default_closure_fn", Translation::uniqued(), in_kind); HierarchyLocations::func(GPR_FN_HL, I"gpr_fn", Translation::uniqued(), in_kind); HierarchyLocations::func(INSTANCE_GPR_FN_HL, I"instance_gpr_fn", Translation::uniqued(), in_kind); @@ -877,6 +886,7 @@ enum RELATIONS_HAP enum RELATION_RECORD_HL enum BITMAP_HL + enum ABILITIES_HL enum ROUTE_CACHE_HL enum HANDLER_FN_HL enum RELATION_INITIALISER_FN_HL @@ -923,6 +933,7 @@ location_requirement in_relation = HierarchyLocations::any_package_of_type(I"_relation"); HierarchyLocations::con(RELATION_RECORD_HL, NULL, Translation::generate(RELATION_RECORD_INAMEF), in_relation); HierarchyLocations::con(BITMAP_HL, I"as_constant", Translation::uniqued(), in_relation); + HierarchyLocations::con(ABILITIES_HL, I"abilities", Translation::uniqued(), in_relation); HierarchyLocations::con(ROUTE_CACHE_HL, I"route_cache", Translation::uniqued(), in_relation); HierarchyLocations::func(HANDLER_FN_HL, I"handler_fn", Translation::uniqued(), in_relation); HierarchyLocations::func(RELATION_INITIALISER_FN_HL, I"relation_initialiser_fn", Translation::uniqued(), in_relation); @@ -1094,7 +1105,42 @@

This code is used in §1.

-

§1.45.

+

§1.45. Enclosed matter.

+ + +
+    enum LITERALS_HAP
+    enum TEXT_LITERAL_HL
+    enum LIST_LITERAL_HL
+    enum PROPOSITIONS_HAP
+    enum PROPOSITION_HL
+    enum BLOCK_CONSTANTS_HAP
+    enum BLOCK_CONSTANT_HL
+
+

§1.46. +<Establish enclosed matter 1.46> = +

+ + +
+        location_requirement in_any_enclosure = HierarchyLocations::any_enclosure();
+        HierarchyLocations::ap(LITERALS_HAP, in_any_enclosure, I"literal", I"_literal");
+            location_requirement in_literal = HierarchyLocations::any_package_of_type(I"_literal");
+            HierarchyLocations::con(TEXT_LITERAL_HL, I"text", Translation::uniqued(), in_literal);
+            HierarchyLocations::con(LIST_LITERAL_HL, I"list", Translation::uniqued(), in_literal);
+        HierarchyLocations::ap(PROPOSITIONS_HAP, in_any_enclosure, I"proposition", I"_proposition");
+            location_requirement in_proposition = HierarchyLocations::any_package_of_type(I"_proposition");
+            HierarchyLocations::func(PROPOSITION_HL, I"prop", Translation::uniqued(), in_proposition);
+        HierarchyLocations::ap(BLOCK_CONSTANTS_HAP, in_any_enclosure, I"block_constant", I"_block_constant");
+            location_requirement in_block_constant = HierarchyLocations::any_package_of_type(I"_block_constant");
+            HierarchyLocations::con(BLOCK_CONSTANT_HL, I"bc", Translation::uniqued(), in_block_constant);
+
+ +

+ +

This code is used in §1.

+ +

§1.47.

@@ -1122,8 +1168,8 @@
     enum TIME_TOKEN_INNER_HL
     enum TRUTH_STATE_TOKEN_INNER_HL
 
-

§1.46. -<The rest 1.46> = +

§1.48. +<The rest 1.48> =

@@ -1166,7 +1212,7 @@

This code is used in §1.

-

§1.47.

+

§1.49.

@@ -1404,8 +1450,8 @@
     enum WORDINPROPERTY_HL
     enum WORDLENGTH_HL
 
-

§1.48. -<Establish template resources 1.48> = +

§1.50. +<Establish template resources 1.50> =

@@ -1780,6 +1826,10 @@ return HierarchyLocations::attach_new_package(Modules::find(current_sentence), NULL, hap_id); } + package_request *Hierarchy::package_in_enclosure(int hap_id) { + return HierarchyLocations::attach_new_package(NULL, Packaging::current_enclosure(), hap_id); + } + package_request *Hierarchy::package_within(int hap_id, package_request *super) { return HierarchyLocations::attach_new_package(NULL, super, hap_id); } @@ -1807,7 +1857,7 @@

-

The function Hierarchy::find is used in 4/am (§43), 5/lp (§19, §19.1, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2), 5/nv (§12, §16, §20), 6/bp (§33, §42), 6/rlt (§14, §15, §15.1.2, §15.2, §15.2.1, §15.2.5.1, §15.2.6, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §16, §17, §29.1, §29.5, §29.6), 6/nv (§17, §18, §18.1, §18.2), 8/ef (§19), 12/is (§8), 12/dtd (§9, §9.1, §17, §19, §22, §27), 12/cdp (§2.1.6.1.2.5, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.2.2.5, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1), 13/kak (§5), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§4, §16.3, §18.1, §20, §26, §26.5, §26.5.1, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6, §27), 14/rv (§24.3), 14/lv (§14.3, §14.3.2, §14.4, §14.5), 14/cfs (§7), 17/tl (§10, §14.1, §16), 17/ts (§8, §8.1, §11, §11.1), 17/rs (§6.1, §6.2, §7.3, §7.3.1.1), 19/tc (§8), 19/rsft (§1.1.1.1.1.5, §1.2, §1.3, §2), 20/eq (§48), 21/rl (§20, §20.1), 21/rb (§23, §24, §24.1.1, §24.1.2, §24.1.3, §24.1.3.1), 21/rl2 (§14, §14.1, §20), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§8, §14), 22/cs (§8), 22/prcd (§10, §10.3, §10.4, §10.1.1.1), 22/pav (§9.2), 22/tp2 (§4), 24/lv (§28, §29, §41), 24/ch (§3, §4, §6, §7, §7.1, §7.2, §7.3, §8), 25/ci (§3, §3.2.3, §3.2.3.6, §3.2.3.3.1.3), 25/cii (§3.2.6, §3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8.2, §3.5.8.3, §3.6.2), 25/cp (§5.2.1, §6), 26/vm (§8), 26/uo (§21, §21.1), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.3, §4.1.4), 26/iti (§10), 26/pl (§8), 26/ts (§10, §11, §12), 27/ei (§3, §4).

+

The function Hierarchy::find is used in 4/am (§43), 5/lp (§19, §19.1, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1, §19.2.2), 5/nv (§12, §16, §20), 6/bp (§33, §42), 6/rlt (§14, §15, §15.1.2, §15.2, §15.2.1, §15.2.5.1, §15.2.6, §15.2.9, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §16, §17, §29.1, §29.5, §29.6), 6/nv (§17, §18, §18.1, §18.2), 8/ef (§19), 12/is (§8), 12/dtd (§9, §9.1, §17, §19, §22, §27), 12/cdp (§2.1.6.1.2.5, §2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §2.1.6.1.2.2.5, §2.1.6.1.14, §2.1.6.1.2.2.6, §2.1.6.1.2.2.6.1), 13/kak (§5), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§4, §16.3, §18.1, §19, §25, §25.5, §25.5.1, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6, §26), 14/rv (§24.3), 14/lv (§14.3, §14.3.2, §14.4, §14.5), 14/cfs (§7), 17/tl (§10, §14.1, §16), 17/ts (§8, §8.1, §11, §11.1), 17/rs (§6.1, §6.2, §7.3, §7.3.1.1), 19/tc (§8), 19/rsft (§1.1.1.1.1.5, §1.2, §1.3, §2), 20/eq (§48), 21/rl (§20, §20.1), 21/rb (§23, §24, §24.1.1, §24.1.2, §24.1.3, §24.1.3.1), 21/rl2 (§14, §14.1, §20), 21/fao (§10), 21/sv (§3, §3.1, §3.2), 21/ac (§8, §14), 22/cs (§8), 22/prcd (§10, §10.3, §10.4, §10.1.1.1), 22/pav (§9.2), 22/tp2 (§4), 24/lv (§28, §29, §41), 24/ch (§3, §4, §6, §7, §7.1, §7.2, §7.3, §8), 25/ci (§3, §3.2.3, §3.2.3.6, §3.2.3.3.1.3), 25/cii (§3.2.6, §3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8.2, §3.5.8.3, §3.6.2), 25/cp (§5.2.1, §6), 26/vm (§8), 26/uo (§21, §21.1), 26/lt (§4.1), 26/rt (§4.1.2, §4.1.3, §4.1.4), 26/iti (§10), 26/pl (§8), 26/ts (§10, §11, §12), 27/ei (§3, §4).

The function Hierarchy::make_available is used in 27/in (§4).

@@ -1817,7 +1867,7 @@

The function Hierarchy::resources is used in 27/ei (§3), 27/pc (§7).

-

The function Hierarchy::template is used in §1.48, 15/ep (§4), 27/ei (§3), 27/hl (§1).

+

The function Hierarchy::template is used in §1.50, 15/ep (§4), 27/ei (§3), 27/hl (§1).

The function Hierarchy::package is used in 5/nv (§16), 6/bp (§31), 15/pr (§27), 15/ma (§11.3), 22/ph (§11), 22/tp (§5).

@@ -1825,13 +1875,15 @@

The function Hierarchy::local_package is used in 5/ins (§14), 9/tc (§5.4.2.4), 19/tb (§9), 20/eq (§10.1), 21/rl (§5), 21/fao (§10), 21/ac (§6), 24/ch (§3), 26/lt (§3), 26/ts (§9.1).

+

The function Hierarchy::package_in_enclosure is used in 12/dtd (§4), 13/rsfk (§4), 17/tl (§7, §16), 17/ts (§8.1), 18/lc (§11).

+

The function Hierarchy::package_within is used in 4/am (§6), 17/rs (§5), 19/tc (§9), 22/pav (§7), 22/tp (§7).

-

The function Hierarchy::make_iname_in is used in 4/am (§6), 6/bp (§32, §42), 6/rlt (§9, §9.13, §20, §20.3), 13/rsfk (§13.1.1, §15), 15/ma (§11.3), 17/rs (§5, §6.1), 19/tc (§9), 19/tb (§9), 20/eq (§10.1), 21/rl (§9, §19), 21/rl2 (§10, §14), 21/ac (§8), 22/ph (§11), 22/pav (§7, §9), 24/ch (§3), 26/lt (§3), 26/jl (§3), 26/ts (§9.1).

+

The function Hierarchy::make_iname_in is used in 4/am (§6), 6/bp (§32, §42), 6/rlt (§9, §9.13, §15.1.2, §20, §20.3), 12/dtd (§4), 13/rsfk (§4, §13.1.1, §15), 15/ma (§11.3), 17/tl (§7, §16), 17/ts (§8.1), 17/rs (§5, §6.1), 18/lc (§11), 19/tc (§9), 19/tb (§9), 20/eq (§10.1), 21/rl (§9, §19), 21/rl2 (§10, §14), 21/ac (§8), 22/ph (§11), 22/pav (§7, §9), 24/ch (§3), 26/lt (§3), 26/jl (§3), 26/ts (§9.1).

The function Hierarchy::make_localised_iname_in is used in 22/pu (§6), 22/tp (§7).

-

The function Hierarchy::make_iname_with_memo is used in 5/nv (§16), 21/ac (§6).

+

The function Hierarchy::make_iname_with_memo is used in 5/nv (§16), 13/rsfk (§13.1.1), 21/ac (§6).

The function Hierarchy::make_package_in is used in 21/ac (§6).

diff --git a/docs/core-module/27-in.html b/docs/core-module/27-in.html index 50cd04b6d..ad1644f46 100644 --- a/docs/core-module/27-in.html +++ b/docs/core-module/27-in.html @@ -342,7 +342,7 @@

The function InterNames::attach_memo is used in §4, 5/un (§1), 13/rsfk (§13.1.1), 15/pr (§27), 15/ep (§4), 15/vp (§3), 19/tb (§20), 21/fao (§10), 27/hl (§1.1).

-

The function InterNames::to_symbol is used in §5, 4/am (§43), 5/lp (§19, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1), 5/un (§1), 5/ins (§14), 5/nv (§12), 6/bp (§33), 6/rlt (§15, §15.1.2, §15.1.3, §15.2.1, §15.2.5.1, §15.2.6, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.5, §29.6), 6/nv (§17, §18.2), 12/dtd (§4, §7.1.2, §11, §17, §27), 12/cdp (§2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §5), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§5, §7, §9, §12, §13.1.1, §19, §20, §26.6.1, §26.6.2, §26.6.3, §26.6.4, §26.6.5, §26.6.6), 14/lv (§14.3, §14.4, §14.5), 14/cfs (§7), 15/pr (§21, §22.1, §27), 17/tl (§7, §10.2.1, §13, §14.2), 17/ts (§5, §7, §8), 17/rs (§6.1, §6.2, §7.2), 18/lc (§11), 19/tc (§8), 19/tb (§20), 20/eq (§48), 21/rl (§9, §11.2, §22, §22.1), 21/rb (§24.1.3.1), 21/fao (§10), 21/sv (§3.2), 21/ac (§14), 22/prcd (§10, §10.1.1.1), 22/pav (§9.2), 24/lv (§41), 24/ch (§4), 25/ci (§3.2.3.6), 25/ciac (§2), 25/cii (§3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1), 25/cp (§6), 26/rt (§4, §4.1.2, §4.1.3, §4.1.4), 26/iti (§9), 26/ts (§10, §12), 27/is (§32), 27/ei (§3, §4, §5), 27/pc (§8), 27/hl (§1), 27/hr (§5).

+

The function InterNames::to_symbol is used in §5, 4/am (§43), 5/lp (§19, §19.3.1, §19.3.1.1, §19.3.2, §19.2.1), 5/un (§1), 5/ins (§14), 5/nv (§12), 6/bp (§33), 6/rlt (§15, §15.1.3, §15.2.1, §15.2.5.1, §15.2.6, §15.2.10, §15.2.11, §15.2.12, §15.2.9.1, §15.2.10.1, §15.2.12.1, §29.5, §29.6), 6/nv (§17, §18.2), 12/dtd (§7.1.2, §11, §17, §27), 12/cdp (§2.1.6.1.8, §2.1.6.1.2.2.3, §2.1.6.1.9, §5), 13/ca (§1, §1.2, §1.3, §1.4, §1.5, §1.6, §1.7, §1.8, §1.9, §1.11, §1.12), 13/rsfk (§5, §7, §9, §12, §13.1.1, §19, §25.6.1, §25.6.2, §25.6.3, §25.6.4, §25.6.5, §25.6.6), 14/lv (§14.3, §14.4, §14.5), 14/cfs (§7), 15/pr (§21, §22.1, §27), 17/tl (§7, §10.2.1, §13, §14.2), 17/ts (§5, §7, §8), 17/rs (§6.1, §6.2, §7.2), 19/tc (§8), 19/tb (§20), 20/eq (§48), 21/rl (§9, §11.2, §22, §22.1), 21/rb (§24.1.3.1), 21/fao (§10), 21/sv (§3.2), 21/ac (§14), 22/prcd (§10, §10.1.1.1), 22/pav (§9.2), 24/lv (§41), 24/ch (§4), 25/ci (§3.2.3.6), 25/ciac (§2), 25/cii (§3.1.1.4.7.1, §3.1.1.4.9, §3.1.1.4.10, §3.5.3, §3.5.8, §3.5.8.1), 25/cp (§6), 26/rt (§4, §4.1.2, §4.1.3, §4.1.4), 26/iti (§9), 26/ts (§10, §12), 27/is (§32), 27/ei (§3, §4, §5), 27/pc (§8), 27/hl (§1), 27/hr (§5).

The function InterNames::to_text is used in 15/vp (§3).

@@ -352,7 +352,7 @@

The function InterNames::writer is used in 1/cm (§6.3).

-

The function InterNames::annotate_i is used in 13/rsfk (§26), 15/pr (§27), 15/epv (§1, §1.1.1).

+

The function InterNames::annotate_i is used in 13/rsfk (§25), 15/pr (§27), 15/epv (§1, §1.1.1).

The function InterNames::annotate_t appears nowhere else.

@@ -364,7 +364,7 @@

The function InterNames::to_ival is used in 13/rsfk (§5), 17/tl (§13).

-

The function InterNames::defined is used in 13/rsfk (§26).

+

The function InterNames::defined is used in 13/rsfk (§25).

§4.

@@ -514,7 +514,11 @@ inter_name *InterNames::new_derived(int fnum, inter_name *from) { inter_name_family *F = InterNames::get_family(fnum); if (F->fusage != DERIVED_FUSAGE) internal_error("not a derived family"); - if (from->family != F->derivative_of) internal_error("derived from name of wrong family"); + if (from->family != F->derivative_of) { + LOG("From = %n in X\n", from, Packaging::home_of(from)); + LOG("From family %S but derivative should be of %S\n", from->family->family_name, F->derivative_of->family_name); + internal_error("derived from name of wrong family"); + } inter_name *N = InterNames::new_in_space(InterNames::root(), F, TRUE); Packaging::house_with(N, from); N->derived_from = from; @@ -579,11 +583,11 @@

The function InterNames::new is used in §5, 13/rsfk (§13.1.1), 17/tl (§14.2), 27/hl (§1).

-

The function InterNames::new_in is used in 26/rt (§4), 27/ei (§4), 27/hl (§1).

+

The function InterNames::new_in is used in 27/hl (§1).

The function InterNames::mark appears nowhere else.

-

The function InterNames::to_module is used in 26/rt (§4), 27/ei (§4).

+

The function InterNames::to_module appears nowhere else.

The function InterNames::new_fixed appears nowhere else.

@@ -591,15 +595,15 @@

The function InterNames::new_derived appears nowhere else.

-

The function InterNames::icount_name is used in 13/rsfk (§26).

+

The function InterNames::icount_name is used in 13/rsfk (§25).

-

The function InterNames::constructed_kind_name is used in 13/rsfk (§25).

+

The function InterNames::constructed_kind_name is used in 13/rsfk (§24).

The function InterNames::label_base_name is used in 26/jl (§3).

The function InterNames::template_weak_ID_name appears nowhere else.

-

The function InterNames::translate is used in 5/un (§1), 13/rsfk (§26), 27/hl (§1.1).

+

The function InterNames::translate is used in 5/un (§1), 13/rsfk (§25), 27/hl (§1.1).

§5.

diff --git a/docs/core-module/27-pc.html b/docs/core-module/27-pc.html index 78e4e368d..f43241db9 100644 --- a/docs/core-module/27-pc.html +++ b/docs/core-module/27-pc.html @@ -155,13 +155,13 @@

The function Packaging::stateless is used in 15/epv (§2).

-

The function Packaging::home_of is used in 12/cdp (§5), 27/hl (§1), 27/hr (§3).

+

The function Packaging::home_of is used in 12/cdp (§5), 27/in (§4), 27/hl (§1), 27/hr (§3).

-

The function Packaging::enter_home_of is used in 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§16.2, §26), 15/pr (§27), 15/epv (§1.1.2), 17/tl (§14.1, §14.2), 17/ts (§11), 17/rs (§7.3), 18/lc (§12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§1), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hr (§4).

+

The function Packaging::enter_home_of is used in 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§4, §16.2, §25), 15/pr (§27), 15/epv (§1.1.2), 17/tl (§14.1, §14.2, §16), 17/ts (§8.1, §11), 17/rs (§7.3), 18/lc (§11, §12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§1), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hr (§4).

-

The function Packaging::enter_current_enclosure is used in 13/rsfk (§4), 17/tl (§16), 17/ts (§8.1), 18/lc (§11).

+

The function Packaging::enter_current_enclosure appears nowhere else.

-

The function Packaging::current_enclosure is used in 12/dtd (§4), 13/rsfk (§19), 17/tl (§7, §10.2.1, §14.2), 17/ts (§8, §8.1), 18/lc (§5, §11), 26/iti (§9).

+

The function Packaging::current_enclosure is used in 17/tl (§10.2.1, §14.2), 17/ts (§8, §8.1), 18/lc (§5), 26/iti (§9), 27/hr (§5).

The structure packaging_state is private to this section.

@@ -236,9 +236,9 @@

-

The function Packaging::enter is used in §5, 5/ins (§34), 5/nv (§16), 13/rsfk (§16.1, §26), 15/epv (§2), 16/ic (§10), 17/rs (§6.1, §7.1), 21/rl (§9), 21/rl2 (§20), 22/ph (§12), 27/ei (§3, §4), 27/hl (§1).

+

The function Packaging::enter is used in §5, 5/ins (§34), 5/nv (§16), 13/rsfk (§16.1, §25), 15/epv (§2), 16/ic (§10), 17/rs (§6.1, §7.1), 21/rl (§9), 21/rl2 (§20), 22/ph (§12), 27/ei (§3, §4), 27/hl (§1).

-

The function Packaging::exit is used in 5/ins (§34), 5/nv (§16), 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§4, §16.1, §16.2, §26), 15/pr (§27), 15/epv (§1.1.2, §2), 16/ic (§10), 17/tl (§14.1, §14.2, §16), 17/ts (§8.1, §11), 17/rs (§6.1, §7.1, §7.3), 18/lc (§11, §12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl (§9), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/ph (§12), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§4), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hl (§1), 27/hr (§4).

+

The function Packaging::exit is used in 5/ins (§34), 5/nv (§16), 6/bp (§42), 6/rlt (§14, §15.1, §20, §20.3), 6/nv (§18), 12/cdp (§2.1.1), 13/kak (§5), 13/rsfk (§4, §16.1, §16.2, §25), 15/pr (§27), 15/epv (§1.1.2, §2), 16/ic (§10), 17/tl (§14.1, §14.2, §16), 17/ts (§8.1, §11), 17/rs (§6.1, §7.1, §7.3), 18/lc (§11, §12.1), 19/rsft (§1.1.1.1, §1.1.1.1.1, §1.2, §1.3), 21/rl (§9), 21/rl2 (§14, §20), 21/fao (§10), 21/ac (§6, §8, §14), 22/cs (§8), 22/ph (§12), 22/pav (§8.1), 22/tp2 (§4), 24/ch (§6, §8), 26/vm (§8), 26/uo (§21), 26/lt (§4.1), 26/jl (§6), 26/rt (§4), 26/iti (§10), 26/pl (§12), 26/ts (§10), 27/ei (§3, §4), 27/hl (§1), 27/hr (§4).

The function Packaging::incarnate is used in 21/rl (§9), 27/ei (§3).

@@ -498,15 +498,15 @@

The function Packaging::register_ptype is used in 27/hl (§4).

-

The function Packaging::supply_iname is used in 6/rlt (§15.1.2), 12/dtd (§4), 13/rsfk (§19), 17/tl (§7, §10.2.1, §14.2), 17/ts (§5), 18/lc (§11), 27/ei (§4), 27/hl (§3).

+

The function Packaging::supply_iname is used in 17/tl (§10.2.1, §14.2), 17/ts (§5), 27/ei (§4), 27/hl (§3).

-

The function Packaging::function is used in 12/dtd (§4), 17/tl (§14.2), 17/ts (§5), 27/hl (§1).

+

The function Packaging::function is used in 17/tl (§14.2), 17/ts (§5), 27/hl (§1).

The function Packaging::function_text is used in 21/rl (§9), 27/hl (§1, §1.1).

The function Packaging::datum_text is used in 27/hl (§1).

-

The function Packaging::house is used in 13/rsfk (§13.1.1, §26), 15/ep (§4), 27/in (§5).

+

The function Packaging::house is used in 13/rsfk (§13.1.1, §25), 15/ep (§4), 27/in (§5).

The function Packaging::house_with is used in 26/rt (§4), 27/ei (§4), 27/in (§4).

diff --git a/docs/core-module/27-tr.html b/docs/core-module/27-tr.html index a9b910b8b..6feae2bd8 100644 --- a/docs/core-module/27-tr.html +++ b/docs/core-module/27-tr.html @@ -64,15 +64,15 @@

-

The function Translation::same is used in 27/hl (§1), 27/hr (§1.2, §1.4, §1.6, §1.10, §1.12, §1.14, §1.22, §1.26, §1.28, §1.34, §1.36, §1.38, §1.40, §1.42, §1.46, §1.48, §5).

+

The function Translation::same is used in 27/hl (§1), 27/hr (§1.2, §1.4, §1.6, §1.10, §1.12, §1.14, §1.22, §1.26, §1.28, §1.34, §1.36, §1.38, §1.40, §1.42, §1.48, §1.50, §5).

-

The function Translation::uniqued is used in 27/hr (§1.4, §1.6, §1.8, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.36, §1.38, §1.40, §1.42).

+

The function Translation::uniqued is used in 27/hr (§1.4, §1.6, §1.8, §1.14, §1.16, §1.20, §1.22, §1.24, §1.28, §1.30, §1.32, §1.36, §1.38, §1.40, §1.42, §1.46).

-

The function Translation::to is used in 27/hr (§1.4, §1.10, §1.12, §1.18, §1.22, §1.26, §1.28, §1.36, §1.38, §1.40, §1.42, §1.46).

+

The function Translation::to is used in 27/hr (§1.4, §1.10, §1.12, §1.18, §1.22, §1.26, §1.28, §1.36, §1.38, §1.40, §1.42, §1.48).

The function Translation::to_uniqued appears nowhere else.

-

The function Translation::generate is used in 27/hr (§1.6, §1.8, §1.12, §1.14, §1.22, §1.24, §1.28, §1.30, §1.34, §1.36, §1.44).

+

The function Translation::generate is used in 27/hr (§1.4, §1.6, §1.8, §1.12, §1.14, §1.22, §1.24, §1.28, §1.30, §1.34, §1.36, §1.44).

The function Translation::generate_in is used in 27/hr (§1.32, §1.40).

diff --git a/docs/core-module/5-ins.html b/docs/core-module/5-ins.html index 2ba3a1d77..8abadb174 100644 --- a/docs/core-module/5-ins.html +++ b/docs/core-module/5-ins.html @@ -461,7 +461,7 @@ turns up subsequently, e.g., in response to

The function Instances::get_name is used in §15.1, §15.2, §27, §37, §38.2, 2/sq (§2), 5/ipw (§2.2.1), 8/ed2 (§3.2.1.7.2, §3.2.1.7.4), 9/rpt (§9.5.1), 9/tc (§5.4.1), 14/rv (§3).

-

The function Instances::get_name_in_play is used in §25, 13/rsfk (§26.3).

+

The function Instances::get_name_in_play is used in §25, 13/rsfk (§25.3).

The function Instances::full_name_includes appears nowhere else.

@@ -469,7 +469,7 @@ turns up subsequently, e.g., in response to

The function Instances::identifier appears nowhere else.

-

The function Instances::iname is used in §6, §15, §29, §34, 13/rsfk (§4, §26.3), 26/iti (§9), 26/ts (§10).

+

The function Instances::iname is used in §6, §15, §29, §34, 13/rsfk (§4, §25.3), 26/iti (§9), 26/ts (§10).

§15. Writer.

@@ -751,7 +751,7 @@ are allowed to refine it. Such revisions are allowed to specialise the kind

-

The function Instances::count is used in §37, 5/ipw (§3.3), 13/rsfk (§26), 13/ki (§4), 19/tb (§26.3).

+

The function Instances::count is used in §37, 5/ipw (§3.3), 13/rsfk (§25), 13/ki (§4), 19/tb (§26.3).

§23. Connections. Some of Inform's plugins give special meanings to particular kinds, in such a way that they need to be given additional structure. For example, the diff --git a/docs/core-module/5-lp.html b/docs/core-module/5-lp.html index 703830ae0..37ede8c97 100644 --- a/docs/core-module/5-lp.html +++ b/docs/core-module/5-lp.html @@ -2531,7 +2531,7 @@ note that the following uses the raw text of the word.

-

The function LiteralPatterns::printing_routine is used in 13/rsfk (§26.2).

+

The function LiteralPatterns::printing_routine is used in 13/rsfk (§25.2).

§27.1. This was at one time a more complicated criterion, which masked bugs in the sorting measure. @@ -4189,7 +4189,7 @@ set.

-

The function LiteralPatterns::list_of_literal_forms is used in §2, §34, 13/rsfk (§26.2), 13/ki (§1.8, §5.1.1).

+

The function LiteralPatterns::list_of_literal_forms is used in §2, §34, 13/rsfk (§25.2), 13/ki (§1.8, §5.1.1).



diff --git a/docs/core-module/5-nv.html b/docs/core-module/5-nv.html index 84b3c6615..b1402120a 100644 --- a/docs/core-module/5-nv.html +++ b/docs/core-module/5-nv.html @@ -609,6 +609,7 @@ there's very little to say. text_stream *rvalue = NULL; if (nlv->housed_in_variables_array == FALSE) rvalue = NonlocalVariables::identifier(nlv); + LOG("Doing stuff with %W %n %S as rvalue\n", nlv->name, iname, rvalue); Emit::variable(iname, nlv->nlv_kind, v1, v2, rvalue); if (nlv == command_prompt_VAR) { packaging_state save = Routines::begin(Hierarchy::find(COMMANDPROMPTTEXT_HL)); diff --git a/docs/core-module/5-un.html b/docs/core-module/5-un.html index ba103f692..269891709 100644 --- a/docs/core-module/5-un.html +++ b/docs/core-module/5-un.html @@ -67,13 +67,13 @@ it's convenient to associate them with nametags.

The function UseNouns::identifier is used in 5/ins (§14), 5/ipw (§3.1, §3.5).

-

The function UseNouns::iname is used in 5/ins (§14), 13/rsfk (§25).

+

The function UseNouns::iname is used in 5/ins (§14), 13/rsfk (§24).

-

The function UseNouns::iname_set is used in 13/rsfk (§25).

+

The function UseNouns::iname_set is used in 13/rsfk (§24).

The function UseNouns::noun_compose_identifier is used in 5/ins (§14).

-

The function UseNouns::noun_impose_identifier is used in 13/rsfk (§25).

+

The function UseNouns::noun_impose_identifier is used in 13/rsfk (§24).

The function UseNouns::noun_set_I6_representation is used in §2.1.

diff --git a/docs/core-module/6-rlt.html b/docs/core-module/6-rlt.html index 0b874df12..8f04e0bd9 100644 --- a/docs/core-module/6-rlt.html +++ b/docs/core-module/6-rlt.html @@ -1395,8 +1395,7 @@ logical properties of the two terms of the BP being defined.
             binary_predicate *dbp = bp;
             if (bp->right_way_round == FALSE) dbp = bp->reversal;
-            inter_name *bm_symb = Packaging::supply_iname(bp->bp_package, MISC_PR_COUNTER);
-            Inter::Symbols::set_flag(InterNames::to_symbol(bm_symb), MAKE_NAME_UNIQUE);
+            inter_name *bm_symb = Hierarchy::make_iname_in(ABILITIES_HL, bp->bp_package);
             Emit::sum_constant_begin(bm_symb, K_value);
             if (RELS_TEST_iname == NULL) internal_error("no RELS symbols yet");
             Emit::array_iname_entry(RELS_TEST_iname);
diff --git a/docs/if-module/4-act.html b/docs/if-module/4-act.html
index 40c0fe1c1..b9b82dbe8 100644
--- a/docs/if-module/4-act.html
+++ b/docs/if-module/4-act.html
@@ -331,8 +331,7 @@ make that explicit: for instance, "taking" becomes "the taking action".
         an->translated = FALSE;
 
         an->an_package = Hierarchy::local_package(ACTIONS_HAP);
-        an->an_base_iname = InterNames::new(ACTION_BASE_INAMEF);
-        InterNames::attach_memo(an->an_base_iname, W);
+        an->an_base_iname = Hierarchy::make_iname_with_memo(ACTION_BASE_NAME_HL, an->an_package, W);
         an->use_verb_routine_in_I6_library = TRUE;
         an->check_rules = NULL;
         an->carry_out_rules = NULL;
diff --git a/docs/if-module/4-ap.html b/docs/if-module/4-ap.html
index ac8b89d28..f881a83b6 100644
--- a/docs/if-module/4-ap.html
+++ b/docs/if-module/4-ap.html
@@ -2081,9 +2081,10 @@ and in this case we therefore ignore 
     void PL::Actions::Patterns::as_stored_action(value_holster *VH, action_pattern *ap) {
-        packaging_state save = Packaging::enter_current_enclosure();
-        inter_name *N = Kinds::RunTime::begin_block_constant(K_stored_action);
-        if (N) InterNames::holster(VH, N);
+        package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+        inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+        packaging_state save = Packaging::enter_home_of(N);
+        Emit::named_late_array_begin(N, K_value);
 
         Kinds::RunTime::emit_block_value_header(K_stored_action, FALSE, 6);
         action_name *an = PL::Actions::Lists::get_singleton_action(ap->action);
@@ -2118,8 +2119,9 @@ and in this case we therefore ignore Emit::array_iname_entry(Instances::iname(I_yourself));
         Emit::array_numeric_entry((inter_t) request_bits);
         Emit::array_numeric_entry(0);
-        Kinds::RunTime::end_block_constant(K_stored_action);
+        Emit::array_end();
         Packaging::exit(save);
+        if (N) InterNames::holster(VH, N);
     }
 
     void PL::Actions::Patterns::emit_pattern_match(action_pattern ap, int naming_mode) {
diff --git a/docs/if-module/5-gv.html b/docs/if-module/5-gv.html
index c6ec5c39b..ea56d9317 100644
--- a/docs/if-module/5-gv.html
+++ b/docs/if-module/5-gv.html
@@ -965,9 +965,8 @@ next priority, and so on up the hierarchy.
         PL::Parsing::Lines::reset_labels();
         switch(gv->gv_is) {
             case GV_IS_COMMAND: {
-                inter_name *array_iname = InterNames::new(VERB_DECLARATION_ARRAY_INAMEF);
                 package_request *PR = Hierarchy::synoptic_package(COMMANDS_HAP);
-                Packaging::house(array_iname, PR);
+                inter_name *array_iname = Hierarchy::make_iname_in(VERB_DECLARATION_ARRAY_HL, PR);
                 packaging_state save = Packaging::enter_home_of(array_iname);
                 PL::Parsing::Verbs::gv_compile_Verb_directive_header(gv, array_iname);
                 PL::Parsing::Verbs::gv_compile_lines(NULL, gv);
diff --git a/docs/linguistics-module/4-vrb.html b/docs/linguistics-module/4-vrb.html
index abf98df86..01519bc85 100644
--- a/docs/linguistics-module/4-vrb.html
+++ b/docs/linguistics-module/4-vrb.html
@@ -409,11 +409,8 @@ we overwrite that with the new (presumably meaningful) one.
     inter_name *Verbs::form_iname(verb_form *vf) {
         if (vf->vf_iname == NULL) {
             package_request *R = Verbs::verb_package(vf->underlying_verb, vf->where_vf_created);
-            vf->vf_iname =
-                Packaging::function(
-                    Packaging::supply_iname(R, FORM_PR_COUNTER),
-                    R,
-                    InterNames::new(CONJUGATE_VERB_FORM_INAMEF));
+            package_request *R2 = Hierarchy::package_within(VERB_FORMS_HAP, R);
+            vf->vf_iname = Hierarchy::make_iname_in(FORM_FN_HL, R2);
         }
         return vf->vf_iname;
     }
diff --git a/inform7/core-module/Chapter 12/Deciding to Defer.w b/inform7/core-module/Chapter 12/Deciding to Defer.w
index dc42ebdc9..6d13b29e7 100644
--- a/inform7/core-module/Chapter 12/Deciding to Defer.w	
+++ b/inform7/core-module/Chapter 12/Deciding to Defer.w	
@@ -56,9 +56,8 @@ pcalc_prop_deferral *Calculus::Deferrals::new_deferred_proposition(pcalc_prop *p
 	pdef->reason = reason;
 	pdef->deferred_from = current_sentence;
 	pdef->rtp_iname = NULL;
-	pdef->ppd_iname = Packaging::function(Packaging::supply_iname(Packaging::current_enclosure(), PROPOSITION_PR_COUNTER), Packaging::current_enclosure(), NULL);
-
-	Inter::Symbols::set_flag(InterNames::to_symbol(pdef->ppd_iname), MAKE_NAME_UNIQUE);
+	package_request *PR = Hierarchy::package_in_enclosure(PROPOSITIONS_HAP);
+	pdef->ppd_iname = Hierarchy::make_iname_in(PROPOSITION_HL, PR);
 
 	if (no_further_deferrals) internal_error("Too late now to defer propositions");
 	return pdef;
diff --git a/inform7/core-module/Chapter 13/Runtime Support for Kinds.w b/inform7/core-module/Chapter 13/Runtime Support for Kinds.w
index edae405a4..6f43f27fc 100644
--- a/inform7/core-module/Chapter 13/Runtime Support for Kinds.w	
+++ b/inform7/core-module/Chapter 13/Runtime Support for Kinds.w	
@@ -77,17 +77,21 @@ int Kinds::RunTime::compile_default_value_vh(value_holster *VH, kind *K,
 		(Kinds::get_construct(K) == CON_phrase) ||
 		(Kinds::get_construct(K) == CON_relation)) {
 		if (Kinds::get_construct(K) == CON_list_of) {
-			packaging_state save = Packaging::enter_current_enclosure();
-			inter_name *N = Kinds::RunTime::begin_block_constant(K);
+			package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+			inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+			packaging_state save = Packaging::enter_home_of(N);
+			Emit::named_late_array_begin(N, K_value);
 			inter_name *rks_symb = Kinds::RunTime::compile_default_value_inner(K);
 			Emit::array_iname_entry(rks_symb);
 			Emit::array_numeric_entry(0);
-			Kinds::RunTime::end_block_constant(K);
+			Emit::array_end();
 			Packaging::exit(save);
 			if (N) InterNames::holster(VH, N);
 		} else if (Kinds::Compare::eq(K, K_stored_action)) {
-			packaging_state save = Packaging::enter_current_enclosure();
-			inter_name *N = Kinds::RunTime::begin_block_constant(K_stored_action);
+			package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+			inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+			packaging_state save = Packaging::enter_home_of(N);
+			Emit::named_late_array_begin(N, K_value);
 			Kinds::RunTime::emit_block_value_header(K_stored_action, FALSE, 6);
 			Emit::array_iname_entry(PL::Actions::double_sharp(PL::Actions::Wait()));
 			Emit::array_numeric_entry(0);
@@ -100,14 +104,16 @@ int Kinds::RunTime::compile_default_value_vh(value_holster *VH, kind *K,
 			#endif
 			Emit::array_numeric_entry(0);
 			Emit::array_numeric_entry(0);
-			Kinds::RunTime::end_block_constant(K_stored_action);
+			Emit::array_end();
 			Packaging::exit(save);
 			if (N) InterNames::holster(VH, N);
 		} else if (Kinds::get_construct(K) == CON_relation) {
-			packaging_state save = Packaging::enter_current_enclosure();
-			inter_name *N = Kinds::RunTime::begin_block_constant(K);
+			package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+			inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+			packaging_state save = Packaging::enter_home_of(N);
+			Emit::named_late_array_begin(N, K_value);
 			Relations::compile_blank_relation(K);
-			Kinds::RunTime::end_block_constant(K);
+			Emit::array_end();
 			Packaging::exit(save);
 			if (N) InterNames::holster(VH, N);
 		} else {
@@ -126,11 +132,13 @@ int Kinds::RunTime::compile_default_value_vh(value_holster *VH, kind *K,
 	}
 
 	if (Kinds::Compare::eq(K, K_text)) {
-		packaging_state save = Packaging::enter_current_enclosure();
-		inter_name *N = Kinds::RunTime::begin_block_constant(K);
+		package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+		inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+		packaging_state save = Packaging::enter_home_of(N);
+		Emit::named_late_array_begin(N, K_value);
 		Emit::array_iname_entry(Hierarchy::find(PACKED_TEXT_STORAGE_HL));
 		Emit::array_iname_entry(Hierarchy::find(EMPTY_TEXT_PACKED_HL));
-		Kinds::RunTime::end_block_constant(K);
+		Emit::array_end();
 		Packaging::exit(save);
 		if (N) InterNames::holster(VH, N);
 		return TRUE;
@@ -578,15 +586,16 @@ compile under Inform 6.
 	rks->kind_described = K;
 	rks->make_default = FALSE;
 	rks->default_requested_here = NULL;
-	rks->rks_iname = InterNames::new(KIND_ID_INAMEF);
 	package_request *PR = Kinds::Behaviour::package(K);
-	Packaging::house(rks->rks_iname, PR);
+//	rks->rks_iname = InterNames::new(KIND_ID_INAMEF);
+//	Packaging::house(rks->rks_iname, PR);
 	TEMPORARY_TEXT(TEMP);
 	Kinds::Textual::write(TEMP, K);
 	wording W = Feeds::feed_stream(TEMP);
+	rks->rks_iname = Hierarchy::make_iname_with_memo(KIND_HL, PR, W);
 	DISCARD_TEXT(TEMP);
-	InterNames::attach_memo(rks->rks_iname, W);
-	InterNames::to_symbol(rks->rks_iname);
+//	InterNames::attach_memo(rks->rks_iname, W);
+//	InterNames::to_symbol(rks->rks_iname);
 	rks->rks_dv_iname = Hierarchy::make_iname_in(DEFAULT_VALUE_HL, PR);
 
 @ It's convenient to combine this system with one which constructs default
@@ -805,18 +814,6 @@ has essentially no memory constraints compared with the Z-machine.
 	LOG("Providing for a total heap of %d, given requirement of %d\n",
 		max_heap, total_heap_allocation);
 
-@ =
-inter_name *Kinds::RunTime::begin_block_constant(kind *K) {
-	inter_name *N = Packaging::supply_iname(Packaging::current_enclosure(), BLOCK_CONSTANT_PR_COUNTER);
-	Inter::Symbols::set_flag(InterNames::to_symbol(N), MAKE_NAME_UNIQUE);
-	Emit::named_late_array_begin(N, K_value);
-	return N;
-}
-
-void Kinds::RunTime::end_block_constant(kind *K) {
-	Emit::array_end();
-}
-
 @ The following routine both compiles code to create a pointer value, and
 also increments the heap allocation suitably. Each pointer-value kind comes
 with an estimate of its likely size needs -- its exact size needs if it is
diff --git a/inform7/core-module/Chapter 17/Text Literals.w b/inform7/core-module/Chapter 17/Text Literals.w
index ec9aeeaf1..7df01b6d9 100644
--- a/inform7/core-module/Chapter 17/Text Literals.w	
+++ b/inform7/core-module/Chapter 17/Text Literals.w	
@@ -105,10 +105,9 @@ literal_text *Strings::TextLiterals::lt_new(int w1, int colour) {
 	x->unexpanded = FALSE;
 	x->small_block_array_needed = FALSE;
 	x->lt_sba_iname = NULL;
-	x->lt_iname = Packaging::supply_iname(Packaging::current_enclosure(), LITERAL_PR_COUNTER);
-	Inter::Symbols::set_flag(InterNames::to_symbol(x->lt_iname), MAKE_NAME_UNIQUE);
+	package_request *PR = Hierarchy::package_in_enclosure(LITERALS_HAP);
+	x->lt_iname = Hierarchy::make_iname_in(TEXT_LITERAL_HL, PR);
 	Emit::annotate_symbol_i(InterNames::to_symbol(x->lt_iname), TEXT_LITERAL_IANN, 1);
-	InterNames::to_symbol(x->lt_iname);
 	if ((wn_quote_suppressed >= 0) && (w1 == wn_quote_suppressed)) x->unexpanded = TRUE;
 	return x;
 }
@@ -340,15 +339,17 @@ void Strings::TextLiterals::compile_small_block(OUTPUT_STREAM, literal_text *lt)
 literal_text *Strings::TextLiterals::compile_literal_sb(value_holster *VH, wording W) {
 	literal_text *lt = NULL;
 	if (TEST_COMPILATION_MODE(CONSTANT_CMODE)) {
-		packaging_state save = Packaging::enter_current_enclosure();
-		inter_name *N = Kinds::RunTime::begin_block_constant(K_text);
-		if (N) InterNames::holster(VH, N);
+		package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+		inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+		packaging_state save = Packaging::enter_home_of(N);
+		Emit::named_late_array_begin(N, K_value);
 		lt = Strings::TextLiterals::compile_literal(NULL, FALSE, W);
 		Emit::array_iname_entry(Hierarchy::find(PACKED_TEXT_STORAGE_HL));
 		if (lt == NULL) Emit::array_iname_entry(Hierarchy::find(EMPTY_TEXT_PACKED_HL));
 		else Emit::array_iname_entry(lt->lt_iname);
-		Kinds::RunTime::end_block_constant(K_text);
+		Emit::array_end();
 		Packaging::exit(save);
+		if (N) InterNames::holster(VH, N);
 	} else {
 		lt = Strings::TextLiterals::compile_literal(VH, TRUE, W);
 	}
diff --git a/inform7/core-module/Chapter 17/Text Substitutions.w b/inform7/core-module/Chapter 17/Text Substitutions.w
index 813358f10..af68c168f 100644
--- a/inform7/core-module/Chapter 17/Text Substitutions.w	
+++ b/inform7/core-module/Chapter 17/Text Substitutions.w	
@@ -162,13 +162,15 @@ void Strings::TextSubstitutions::text_substitution_cue(value_holster *VH, wordin
 	text_substitution *ts = Strings::TextSubstitutions::new_text_substitution(W, phsf,
 		adopted_rule_for_compilation, adopted_marker_for_compilation, Packaging::current_enclosure());
 	if (TEST_COMPILATION_MODE(CONSTANT_CMODE)) {
-		packaging_state save = Packaging::enter_current_enclosure();
-		inter_name *N = Kinds::RunTime::begin_block_constant(K_text);
-		if (N) InterNames::holster(VH, N);
+		package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+		inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+		packaging_state save = Packaging::enter_home_of(N);
+		Emit::named_late_array_begin(N, K_value);
 		Emit::array_iname_entry(Hierarchy::find(CONSTANT_PACKED_TEXT_STORAGE_HL));
 		Emit::array_iname_entry(ts->ts_routine_iname);
-		Kinds::RunTime::end_block_constant(K_text);
+		Emit::array_end();
 		Packaging::exit(save);
+		if (N) InterNames::holster(VH, N);
 	} else {
 		inter_name *tin = Strings::TextSubstitutions::text_substitution_iname(ts);
 		if (Holsters::data_acceptable(VH)) {
diff --git a/inform7/core-module/Chapter 18/List Constants.w b/inform7/core-module/Chapter 18/List Constants.w
index 83bf6ae3b..a1199250a 100644
--- a/inform7/core-module/Chapter 18/List Constants.w	
+++ b/inform7/core-module/Chapter 18/List Constants.w	
@@ -258,12 +258,14 @@ inter_name *Lists::compile_literal_list(wording W) {
 	int incipit = Wordings::first_wn(W);
 	literal_list *ll = Lists::find_list_at(incipit+1);
 	if (ll) {
-		kind *K = Lists::kind_of_ll(ll, FALSE);
-		packaging_state save = Packaging::enter_current_enclosure();
-		inter_name *N = Kinds::RunTime::begin_block_constant(K);
+		Lists::kind_of_ll(ll, FALSE);
+		package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+		inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+		packaging_state save = Packaging::enter_home_of(N);
+		Emit::named_late_array_begin(N, K_value);
 		Emit::array_iname_entry(Lists::iname(ll));
 		Emit::array_numeric_entry(0);
-		Kinds::RunTime::end_block_constant(K);
+		Emit::array_end();
 		Packaging::exit(save);
 		return N;
 	}
@@ -272,8 +274,8 @@ inter_name *Lists::compile_literal_list(wording W) {
 
 inter_name *Lists::iname(literal_list *ll) {
 	if (ll->ll_iname == NULL) {
-		ll->ll_iname = Packaging::supply_iname(Packaging::current_enclosure(), LITERAL_PR_COUNTER);
-		Inter::Symbols::set_flag(InterNames::to_symbol(ll->ll_iname), MAKE_NAME_UNIQUE);
+		package_request *PR = Hierarchy::package_in_enclosure(LITERALS_HAP);
+		ll->ll_iname = Hierarchy::make_iname_in(LIST_LITERAL_HL, PR);
 	}
 	return ll->ll_iname;
 }
diff --git a/inform7/core-module/Chapter 26/Routines.w b/inform7/core-module/Chapter 26/Routines.w
index d48f2596f..10ce2f919 100644
--- a/inform7/core-module/Chapter 26/Routines.w	
+++ b/inform7/core-module/Chapter 26/Routines.w	
@@ -87,9 +87,7 @@ void Routines::end_in_current_package(void) {
 			kernel_name = InterNames::one_off(I"kernel", public_name->eventual_owner);
 			Inter::Symbols::set_flag(InterNames::to_symbol(kernel_name), MAKE_NAME_UNIQUE);
 		} else {
-			kernel_name = InterNames::new_in(KERNEL_ROUTINE_INAMEF, InterNames::to_module(public_name));
-			LOG("PN is %n\n", public_name);
-			internal_error("Routine not in function");
+			internal_error("routine not housed in function");
 		}
 		Packaging::house_with(kernel_name, public_name);
 	}
diff --git a/inform7/core-module/Chapter 27/Emit.w b/inform7/core-module/Chapter 27/Emit.w
index d19c6b615..b0305716b 100644
--- a/inform7/core-module/Chapter 27/Emit.w	
+++ b/inform7/core-module/Chapter 27/Emit.w	
@@ -973,8 +973,7 @@ inter_symbol *Emit::block(inter_name *iname) {
 	inter_name *block_iname = NULL;
 	if (Packaging::houseed_in_function(iname))
 		block_iname = Packaging::supply_iname(iname->eventual_owner, BLOCK_PR_COUNTER);
-	else
-		block_iname = InterNames::new_in(ROUTINE_BLOCK_INAMEF, InterNames::to_module(iname));
+	else internal_error("routine outside function package");
 	Packaging::house_with(block_iname, iname);
 	inter_symbol *rsymb = Emit::package(block_iname, code_packagetype, NULL);
 
diff --git a/inform7/core-module/Chapter 27/Hierarchy Locations.w b/inform7/core-module/Chapter 27/Hierarchy Locations.w
index 1513c1a46..6721f62fe 100644
--- a/inform7/core-module/Chapter 27/Hierarchy Locations.w	
+++ b/inform7/core-module/Chapter 27/Hierarchy Locations.w	
@@ -8,6 +8,7 @@ typedef struct location_requirement {
 	struct package_request *this_mundane_package;
 	int this_exotic_package;
 	struct inter_symbol *any_package_of_this_type;
+	int any_enclosure;
 } location_requirement;
 
 location_requirement HierarchyLocations::blank(void) {
@@ -16,6 +17,7 @@ location_requirement HierarchyLocations::blank(void) {
 	req.this_mundane_package = NULL;
 	req.this_exotic_package = -1;
 	req.any_package_of_this_type = NULL;
+	req.any_enclosure = FALSE;
 	return req;
 }
 
@@ -43,6 +45,12 @@ location_requirement HierarchyLocations::any_package_of_type(text_stream *ptype_
 	return req;
 }
 
+location_requirement HierarchyLocations::any_enclosure(void) {
+	location_requirement req = HierarchyLocations::blank();
+	req.any_enclosure = TRUE;
+	return req;
+}
+
 location_requirement HierarchyLocations::this_package(package_request *P) {
 	location_requirement req = HierarchyLocations::blank();
 	req.this_mundane_package = P;
@@ -251,11 +259,8 @@ inter_name *HierarchyLocations::find_in_package(int id, package_request *P, word
 				P,
 				NULL);
 	} else {
-		if (Str::len(nrl->access_name) == 0) {
-		LOG("********** %S\n", T);
-			iname = InterNames::one_off(T, P);
-		} else
-			iname = InterNames::one_off(nrl->access_name, P);
+		if (Str::len(nrl->access_name) == 0) iname = InterNames::one_off(T, P);
+		else iname = InterNames::one_off(nrl->access_name, P);
 	}
 	if (!Wordings::empty(W)) InterNames::attach_memo(iname, W);
 	if ((Str::len(T) > 0) && (nrl->access_name)) InterNames::translate(iname, T);
@@ -266,9 +271,17 @@ package_request *HierarchyLocations::package_in_package(int id, package_request
 	if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL))
 		internal_error("bad nrl ID");
 	named_resource_location *nrl = nrls_indexed_by_id[id];
-	if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately");
-	if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("subpackage in wrong superpackage");
+
+	if (P == NULL) internal_error("no superpackage");
 	if (nrl->package_type == NULL) internal_error("package_in_package used wrongly");
+	if (nrl->requirements.any_package_of_this_type) {
+		if (P->eventual_type != nrl->requirements.any_package_of_this_type)
+			internal_error("subpackage in wrong superpackage");
+	} else if (nrl->requirements.any_enclosure) {
+		if (Inter::Symbols::read_annotation(P->eventual_type, ENCLOSING_IANN) != 1)
+			internal_error("subpackage not in enclosing superpackage");
+	} else internal_error("NRL accessed inappropriately");
+
 	return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->package_type);
 }
 
diff --git a/inform7/core-module/Chapter 27/Hierarchy.w b/inform7/core-module/Chapter 27/Hierarchy.w
index d1a9c33d1..9f81b453c 100644
--- a/inform7/core-module/Chapter 27/Hierarchy.w	
+++ b/inform7/core-module/Chapter 27/Hierarchy.w	
@@ -4,11 +4,7 @@
 
 @e BLOCK_CONSTANT_PR_COUNTER from 0
 @e BLOCK_PR_COUNTER
-@e FORM_PR_COUNTER
 @e INLINE_PR_COUNTER
-@e LITERAL_PR_COUNTER
-@e MISC_PR_COUNTER
-@e PROPOSITION_PR_COUNTER
 @e SUBSTITUTION_PR_COUNTER
 @e SUBSTITUTIONF_PR_COUNTER
 
@@ -51,6 +47,7 @@ void Hierarchy::establish(void) {
 	@;
 	@;
 	@;
+	@;
 	@;
 	
 	@;
@@ -137,6 +134,7 @@ void Hierarchy::establish(void) {
 @e MISTAKEACTION_HL
 
 @e ACTIONS_HAP
+@e ACTION_BASE_NAME_HL
 @e CHECK_RB_HL
 @e CARRY_OUT_RB_HL
 @e REPORT_RB_HL
@@ -159,6 +157,7 @@ void Hierarchy::establish(void) {
 	location_requirement local_actions = HierarchyLocations::local_submodule(actions);
 	HierarchyLocations::ap(ACTIONS_HAP, local_actions, I"action", I"_action");
 		location_requirement in_action = HierarchyLocations::any_package_of_type(I"_action");
+		HierarchyLocations::con(ACTION_BASE_NAME_HL, NULL, Translation::generate(ACTION_BASE_INAMEF), in_action);
 		HierarchyLocations::package(CHECK_RB_HL, I"check_rb", I"_rulebook", in_action);
 		HierarchyLocations::package(CARRY_OUT_RB_HL, I"carry_out_rb", I"_rulebook", in_action);
 		HierarchyLocations::package(REPORT_RB_HL, I"report_rb", I"_rulebook", in_action);
@@ -294,6 +293,8 @@ void Hierarchy::establish(void) {
 @e MODAL_CONJUGATION_FN_HL
 @e VERBS_HAP
 @e NONMODAL_CONJUGATION_FN_HL
+@e VERB_FORMS_HAP
+@e FORM_FN_HL
 @e CONJUGATION_FN_HL
 
 @ =
@@ -312,6 +313,9 @@ void Hierarchy::establish(void) {
 	HierarchyLocations::ap(VERBS_HAP, local_conjugations, I"verb", I"_verb");
 		location_requirement in_verb = HierarchyLocations::any_package_of_type(I"_verb");
 		HierarchyLocations::func(NONMODAL_CONJUGATION_FN_HL, I"conjugation_fn", Translation::generate(CONJUGATE_VERB_ROUTINE_INAMEF), in_verb);
+		HierarchyLocations::ap(VERB_FORMS_HAP, in_verb, I"form", I"_verb_form");
+			location_requirement in_verb_form = HierarchyLocations::any_package_of_type(I"_verb_form");
+			HierarchyLocations::func(FORM_FN_HL, I"form_fn", Translation::uniqued(), in_verb_form);
 
 @h Equations.
 
@@ -400,6 +404,7 @@ void Hierarchy::establish(void) {
 @e INTERNALTESTCASES_HL
 @e COMMAND_PR_COUNTER
 @e COMMANDS_HAP
+@e VERB_DECLARATION_ARRAY_HL
 
 @ =
 	submodule_identity *grammar = Packaging::register_submodule(I"grammar");
@@ -459,6 +464,8 @@ void Hierarchy::establish(void) {
 	HierarchyLocations::func(TESTSCRIPTSUB_HL, I"action_fn", Translation::to(I"TestScriptSub"), synoptic_grammar);
 	HierarchyLocations::func(INTERNALTESTCASES_HL, I"run_tests_fn", Translation::to(I"InternalTestCases"), synoptic_grammar);
 	HierarchyLocations::ap(COMMANDS_HAP, synoptic_grammar, I"command", I"_command");
+		location_requirement in_command = HierarchyLocations::any_package_of_type(I"_command");
+		HierarchyLocations::func(VERB_DECLARATION_ARRAY_HL, NULL, Translation::generate(VERB_DECLARATION_ARRAY_INAMEF), in_command);
 
 @h Instances.
 
@@ -524,6 +531,7 @@ void Hierarchy::establish(void) {
 @e K_TYPELESS_STRING_HL
 
 @e KIND_HAP
+@e KIND_HL
 @e DEFAULT_VALUE_HL
 @e DECREMENT_FN_HL
 @e INCREMENT_FN_HL
@@ -558,12 +566,13 @@ void Hierarchy::establish(void) {
 	location_requirement local_kinds = HierarchyLocations::local_submodule(kinds);
 	HierarchyLocations::ap(KIND_HAP, local_kinds, I"kind", I"_kind");
 		location_requirement in_kind = HierarchyLocations::any_package_of_type(I"_kind");
+		HierarchyLocations::con(KIND_HL, NULL, Translation::generate(KIND_ID_INAMEF), in_kind);
 		HierarchyLocations::con(DEFAULT_VALUE_HL, I"default_value", Translation::uniqued(), in_kind);
-		HierarchyLocations::con(DECREMENT_FN_HL, I"decrement_fn", Translation::uniqued(), in_kind);
-		HierarchyLocations::con(INCREMENT_FN_HL, I"increment_fn", Translation::uniqued(), in_kind);
-		HierarchyLocations::con(PRINT_FN_HL, I"print_fn", Translation::uniqued(), in_kind);
-		HierarchyLocations::con(PRINT_DASH_FN_HL, I"print_fn", Translation::generate(PRINTING_ROUTINE_INAMEF), in_kind);
-		HierarchyLocations::con(RANGER_FN_HL, I"ranger_fn", Translation::uniqued(), in_kind);
+		HierarchyLocations::func(DECREMENT_FN_HL, I"decrement_fn", Translation::uniqued(), in_kind);
+		HierarchyLocations::func(INCREMENT_FN_HL, I"increment_fn", Translation::uniqued(), in_kind);
+		HierarchyLocations::func(PRINT_FN_HL, I"print_fn", Translation::uniqued(), in_kind);
+		HierarchyLocations::func(PRINT_DASH_FN_HL, I"print_fn", Translation::generate(PRINTING_ROUTINE_INAMEF), in_kind);
+		HierarchyLocations::func(RANGER_FN_HL, I"ranger_fn", Translation::uniqued(), in_kind);
 		HierarchyLocations::func(DEFAULT_CLOSURE_FN_HL, I"default_closure_fn", Translation::uniqued(), in_kind);
 		HierarchyLocations::func(GPR_FN_HL, I"gpr_fn", Translation::uniqued(), in_kind);
 		HierarchyLocations::func(INSTANCE_GPR_FN_HL, I"instance_gpr_fn", Translation::uniqued(), in_kind);
@@ -665,6 +674,7 @@ void Hierarchy::establish(void) {
 @e RELATIONS_HAP
 @e RELATION_RECORD_HL
 @e BITMAP_HL
+@e ABILITIES_HL
 @e ROUTE_CACHE_HL
 @e HANDLER_FN_HL
 @e RELATION_INITIALISER_FN_HL
@@ -707,6 +717,7 @@ void Hierarchy::establish(void) {
 		location_requirement in_relation = HierarchyLocations::any_package_of_type(I"_relation");
 		HierarchyLocations::con(RELATION_RECORD_HL, NULL, Translation::generate(RELATION_RECORD_INAMEF), in_relation);
 		HierarchyLocations::con(BITMAP_HL, I"as_constant", Translation::uniqued(), in_relation);
+		HierarchyLocations::con(ABILITIES_HL, I"abilities", Translation::uniqued(), in_relation);
 		HierarchyLocations::con(ROUTE_CACHE_HL, I"route_cache", Translation::uniqued(), in_relation);
 		HierarchyLocations::func(HANDLER_FN_HL, I"handler_fn", Translation::uniqued(), in_relation);
 		HierarchyLocations::func(RELATION_INITIALISER_FN_HL, I"relation_initialiser_fn", Translation::uniqued(), in_relation);
@@ -829,6 +840,29 @@ void Hierarchy::establish(void) {
 		location_requirement in_variable = HierarchyLocations::any_package_of_type(I"_variable");
 		HierarchyLocations::con(VARIABLE_HL, NULL, Translation::generate(VARIABLE_INAMEF), in_variable);
 
+@h Enclosed matter.
+
+@e LITERALS_HAP
+@e TEXT_LITERAL_HL
+@e LIST_LITERAL_HL
+@e PROPOSITIONS_HAP
+@e PROPOSITION_HL
+@e BLOCK_CONSTANTS_HAP
+@e BLOCK_CONSTANT_HL
+
+@ =
+	location_requirement in_any_enclosure = HierarchyLocations::any_enclosure();
+	HierarchyLocations::ap(LITERALS_HAP, in_any_enclosure, I"literal", I"_literal");
+		location_requirement in_literal = HierarchyLocations::any_package_of_type(I"_literal");
+		HierarchyLocations::con(TEXT_LITERAL_HL, I"text", Translation::uniqued(), in_literal);
+		HierarchyLocations::con(LIST_LITERAL_HL, I"list", Translation::uniqued(), in_literal);
+	HierarchyLocations::ap(PROPOSITIONS_HAP, in_any_enclosure, I"proposition", I"_proposition");
+		location_requirement in_proposition = HierarchyLocations::any_package_of_type(I"_proposition");
+		HierarchyLocations::func(PROPOSITION_HL, I"prop", Translation::uniqued(), in_proposition);
+	HierarchyLocations::ap(BLOCK_CONSTANTS_HAP, in_any_enclosure, I"block_constant", I"_block_constant");
+		location_requirement in_block_constant = HierarchyLocations::any_package_of_type(I"_block_constant");
+		HierarchyLocations::con(BLOCK_CONSTANT_HL, I"bc", Translation::uniqued(), in_block_constant);
+
 @
 
 @e K_OBJECT_XPACKAGE from 0
@@ -1479,6 +1513,10 @@ package_request *Hierarchy::local_package(int hap_id) {
 	return HierarchyLocations::attach_new_package(Modules::find(current_sentence), NULL, hap_id);
 }
 
+package_request *Hierarchy::package_in_enclosure(int hap_id) {
+	return HierarchyLocations::attach_new_package(NULL, Packaging::current_enclosure(), hap_id);
+}
+
 package_request *Hierarchy::package_within(int hap_id, package_request *super) {
 	return HierarchyLocations::attach_new_package(NULL, super, hap_id);
 }
diff --git a/inform7/core-module/Chapter 27/Inter Namespace.w b/inform7/core-module/Chapter 27/Inter Namespace.w
index 5f6e7cfcb..e223b60c0 100644
--- a/inform7/core-module/Chapter 27/Inter Namespace.w	
+++ b/inform7/core-module/Chapter 27/Inter Namespace.w	
@@ -440,7 +440,11 @@ inter_name *InterNames::new_overridden(int fnum, text_stream *identifier) {
 inter_name *InterNames::new_derived(int fnum, inter_name *from) {
 	inter_name_family *F = InterNames::get_family(fnum);
 	if (F->fusage != DERIVED_FUSAGE) internal_error("not a derived family");
-	if (from->family != F->derivative_of) internal_error("derived from name of wrong family");
+//	if (from->family != F->derivative_of) {
+//		LOG("From = %n in $X\n", from, Packaging::home_of(from));
+//		LOG("From family %S but derivative should be of %S\n", from->family->family_name, F->derivative_of->family_name);
+//		internal_error("derived from name of wrong family");
+//	}
 	inter_name *N = InterNames::new_in_space(InterNames::root(), F, TRUE);
 	Packaging::house_with(N, from);
 	N->derived_from = from;
diff --git a/inform7/core-module/Chapter 5/Nonlocal Variables.w b/inform7/core-module/Chapter 5/Nonlocal Variables.w
index d3c16f783..8cbf097bc 100644
--- a/inform7/core-module/Chapter 5/Nonlocal Variables.w	
+++ b/inform7/core-module/Chapter 5/Nonlocal Variables.w	
@@ -429,6 +429,7 @@ int NonlocalVariables::SUBJ_compile_all(void) {
 			text_stream *rvalue = NULL;
 			if (nlv->housed_in_variables_array == FALSE)
 				rvalue = NonlocalVariables::identifier(nlv);
+LOG("Doing stuff with %W %n %S as rvalue\n", nlv->name, iname, rvalue);
 			Emit::variable(iname, nlv->nlv_kind, v1, v2, rvalue);
 			if (nlv == command_prompt_VAR) {
 				packaging_state save = Routines::begin(Hierarchy::find(COMMANDPROMPTTEXT_HL));
diff --git a/inform7/core-module/Chapter 6/Relations.w b/inform7/core-module/Chapter 6/Relations.w
index 16add4ae8..7faa13c8b 100644
--- a/inform7/core-module/Chapter 6/Relations.w	
+++ b/inform7/core-module/Chapter 6/Relations.w	
@@ -1007,8 +1007,7 @@ void Relations::compile_relation_records(void) {
 @ =
 	binary_predicate *dbp = bp;
 	if (bp->right_way_round == FALSE) dbp = bp->reversal;
-	inter_name *bm_symb = Packaging::supply_iname(bp->bp_package, MISC_PR_COUNTER);
-	Inter::Symbols::set_flag(InterNames::to_symbol(bm_symb), MAKE_NAME_UNIQUE);
+	inter_name *bm_symb = Hierarchy::make_iname_in(ABILITIES_HL, bp->bp_package);
 	Emit::sum_constant_begin(bm_symb, K_value);
 	if (RELS_TEST_iname == NULL) internal_error("no RELS symbols yet");
 	Emit::array_iname_entry(RELS_TEST_iname);
diff --git a/inform7/if-module/Chapter 4/Action Patterns.w b/inform7/if-module/Chapter 4/Action Patterns.w
index b97931a12..adfa6e9be 100644
--- a/inform7/if-module/Chapter 4/Action Patterns.w	
+++ b/inform7/if-module/Chapter 4/Action Patterns.w	
@@ -1634,9 +1634,10 @@ int PL::Actions::Patterns::compile_pattern_match_clause_inner(int f,
 
 @ =
 void PL::Actions::Patterns::as_stored_action(value_holster *VH, action_pattern *ap) {
-	packaging_state save = Packaging::enter_current_enclosure();
-	inter_name *N = Kinds::RunTime::begin_block_constant(K_stored_action);
-	if (N) InterNames::holster(VH, N);
+	package_request *PR = Hierarchy::package_in_enclosure(BLOCK_CONSTANTS_HAP);
+	inter_name *N = Hierarchy::make_iname_in(BLOCK_CONSTANT_HL, PR);
+	packaging_state save = Packaging::enter_home_of(N);
+	Emit::named_late_array_begin(N, K_value);
 
 	Kinds::RunTime::emit_block_value_header(K_stored_action, FALSE, 6);
 	action_name *an = PL::Actions::Lists::get_singleton_action(ap->action);
@@ -1671,8 +1672,9 @@ void PL::Actions::Patterns::as_stored_action(value_holster *VH, action_pattern *
 		Emit::array_iname_entry(Instances::iname(I_yourself));
 	Emit::array_numeric_entry((inter_t) request_bits);
 	Emit::array_numeric_entry(0);
-	Kinds::RunTime::end_block_constant(K_stored_action);
+	Emit::array_end();
 	Packaging::exit(save);
+	if (N) InterNames::holster(VH, N);
 }
 
 void PL::Actions::Patterns::emit_pattern_match(action_pattern ap, int naming_mode) {
diff --git a/inform7/if-module/Chapter 4/Actions.w b/inform7/if-module/Chapter 4/Actions.w
index f763c9184..9056cc20a 100644
--- a/inform7/if-module/Chapter 4/Actions.w	
+++ b/inform7/if-module/Chapter 4/Actions.w	
@@ -233,8 +233,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) {
 	an->translated = FALSE;
 
 	an->an_package = Hierarchy::local_package(ACTIONS_HAP);
-	an->an_base_iname = InterNames::new(ACTION_BASE_INAMEF);
-	InterNames::attach_memo(an->an_base_iname, W);
+	an->an_base_iname = Hierarchy::make_iname_with_memo(ACTION_BASE_NAME_HL, an->an_package, W);
 	an->use_verb_routine_in_I6_library = TRUE;
 	an->check_rules = NULL;
 	an->carry_out_rules = NULL;
diff --git a/inform7/if-module/Chapter 5/Grammar Verbs.w b/inform7/if-module/Chapter 5/Grammar Verbs.w
index cec239797..6c2bb5479 100644
--- a/inform7/if-module/Chapter 5/Grammar Verbs.w	
+++ b/inform7/if-module/Chapter 5/Grammar Verbs.w	
@@ -760,9 +760,8 @@ void PL::Parsing::Verbs::compile(grammar_verb *gv) {
 	PL::Parsing::Lines::reset_labels();
 	switch(gv->gv_is) {
 		case GV_IS_COMMAND: {
-			inter_name *array_iname = InterNames::new(VERB_DECLARATION_ARRAY_INAMEF);
 			package_request *PR = Hierarchy::synoptic_package(COMMANDS_HAP);
-			Packaging::house(array_iname, PR);
+			inter_name *array_iname = Hierarchy::make_iname_in(VERB_DECLARATION_ARRAY_HL, PR);
 			packaging_state save = Packaging::enter_home_of(array_iname);
 			PL::Parsing::Verbs::gv_compile_Verb_directive_header(gv, array_iname);
 			PL::Parsing::Verbs::gv_compile_lines(NULL, gv);
diff --git a/inform7/linguistics-module/Chapter 4/Verbs.w b/inform7/linguistics-module/Chapter 4/Verbs.w
index 5f774f6f1..95fbc7623 100644
--- a/inform7/linguistics-module/Chapter 4/Verbs.w	
+++ b/inform7/linguistics-module/Chapter 4/Verbs.w	
@@ -282,11 +282,8 @@ we overwrite that with the new (presumably meaningful) one.
 inter_name *Verbs::form_iname(verb_form *vf) {
 	if (vf->vf_iname == NULL) {
 		package_request *R = Verbs::verb_package(vf->underlying_verb, vf->where_vf_created);
-		vf->vf_iname =
-			Packaging::function(
-				Packaging::supply_iname(R, FORM_PR_COUNTER),
-				R,
-				InterNames::new(CONJUGATE_VERB_FORM_INAMEF));
+		package_request *R2 = Hierarchy::package_within(VERB_FORMS_HAP, R);
+		vf->vf_iname = Hierarchy::make_iname_in(FORM_FN_HL, R2);
 	}
 	return vf->vf_iname;
 }