From dfe3a4aaee0920b92751f08839d1badbbeb769ac Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Wed, 7 Apr 2021 23:58:07 +0100 Subject: [PATCH] Removed 2 more compilation modes --- docs/building-module/2-is.html | 6 +- docs/calculus-module/4-tcp.html | 1 - docs/calculus-module/4-trm.html | 4 +- docs/imperative-module/2-sf.html | 2 +- docs/imperative-module/3-cad.html | 2 +- docs/imperative-module/3-cdp.html | 2 +- docs/imperative-module/3-cfs.html | 122 ++++++------- docs/imperative-module/3-dtd.html | 24 +-- docs/imperative-module/3-efs.html | 41 +++-- docs/imperative-module/4-ca.html | 167 ++++++++++-------- docs/imperative-module/4-cbal.html | 6 +- docs/imperative-module/4-ci.html | 2 +- docs/imperative-module/4-ciac.html | 6 +- docs/imperative-module/4-cii.html | 26 +-- docs/imperative-module/4-cste.html | 8 +- docs/values-module/2-lvl.html | 59 +++++-- inform7/Figures/timings-diagnostics.txt | 32 ++-- .../Test Cases/_Results_Ideal/Calculus.txt | 3 +- .../Chapter 3/Compile Deferred Propositions.w | 2 +- .../Chapter 3/Compiling from Specifications.w | 50 +++--- .../Chapter 3/Emitting from Schemas.w | 37 ++-- .../Chapter 4/Compile Arithmetic.w | 14 ++ .../Chapter 4/Compile Invocations Inline.w | 4 +- inform7/values-module/Chapter 2/Lvalues.w | 57 ++++-- .../building-module/Chapter 2/Inter Schemas.w | 6 +- services/calculus-module/Chapter 4/Terms.w | 4 +- .../Chapter 4/Type Check Propositions.w | 1 - 27 files changed, 384 insertions(+), 304 deletions(-) diff --git a/docs/building-module/2-is.html b/docs/building-module/2-is.html index 68fbc1751..246335560 100644 --- a/docs/building-module/2-is.html +++ b/docs/building-module/2-is.html @@ -1174,7 +1174,7 @@ of modifiers are allowed. The full syntax follows: define ADOPT_LOCAL_STACK_FRAME_ISSBM 8 define CAST_TO_KIND_OF_OTHER_TERM_ISSBM 16 define BY_REFERENCE_ISSBM 32 -define STORAGE_AS_LVALUE_CMODE_ISSBM 64 +define LVALUE_CONTEXT_ISSBM 64 define STORAGE_AS_FUNCTION_CMODE_ISSBM 128

Look for a possible abbreviated command20.2.5 = @@ -1186,12 +1186,12 @@ of modifiers are allowed. The full syntax follows: int iss_bitmap = 0; switch (c) { case '!': internal_error("the '*!' schema notation has been abolished"); break; - case '%': iss_bitmap = iss_bitmap | STORAGE_AS_LVALUE_CMODE_ISSBM; c = Str::get_at(from, ++at); break; + case '%': iss_bitmap = iss_bitmap | LVALUE_CONTEXT_ISSBM; c = Str::get_at(from, ++at); break; case '$': iss_bitmap = iss_bitmap | STORAGE_AS_FUNCTION_CMODE_ISSBM; c = Str::get_at(from, ++at); break; case '#': iss_bitmap = iss_bitmap | GIVE_KIND_ID_ISSBM; c = Str::get_at(from, ++at); break; case '_': iss_bitmap = iss_bitmap | GIVE_COMPARISON_ROUTINE_ISSBM; c = Str::get_at(from, ++at); break; case '+': iss_bitmap = iss_bitmap | DEREFERENCE_PROPERTY_ISSBM; c = Str::get_at(from, ++at); break; - case '|': iss_bitmap = iss_bitmap | (DEREFERENCE_PROPERTY_ISSBM + STORAGE_AS_LVALUE_CMODE_ISSBM); c = Str::get_at(from, ++at); break; + case '|': iss_bitmap = iss_bitmap | (DEREFERENCE_PROPERTY_ISSBM + LVALUE_CONTEXT_ISSBM); c = Str::get_at(from, ++at); break; case '?': iss_bitmap = iss_bitmap | ADOPT_LOCAL_STACK_FRAME_ISSBM; c = Str::get_at(from, ++at); break; case '<': iss_bitmap = iss_bitmap | CAST_TO_KIND_OF_OTHER_TERM_ISSBM; c = Str::get_at(from, ++at); break; case '^': iss_bitmap = iss_bitmap | (ADOPT_LOCAL_STACK_FRAME_ISSBM + BY_REFERENCE_ISSBM); c = Str::get_at(from, ++at); break; diff --git a/docs/calculus-module/4-tcp.html b/docs/calculus-module/4-tcp.html index d35e1a989..f887bd457 100644 --- a/docs/calculus-module/4-tcp.html +++ b/docs/calculus-module/4-tcp.html @@ -501,7 +501,6 @@ like "is" — are polymorphic. Here goes: int result = BinaryPredicateFamilies::typecheck(bp, kinds_of_terms, kinds_required, tck); if (result == NEVER_MATCH_SAYING_WHY_NOT) { kind *kinds_dereferencing_properties[2]; - LOG("0 = %u. 1 = %u\n", kinds_of_terms[0], kinds_of_terms[1]); kinds_dereferencing_properties[0] = Kinds::dereference_properties(kinds_of_terms[0]); kinds_dereferencing_properties[1] = kinds_of_terms[1]; int r2 = BinaryPredicateFamilies::typecheck(bp, kinds_dereferencing_properties, kinds_required, tck); diff --git a/docs/calculus-module/4-trm.html b/docs/calculus-module/4-trm.html index bf6c62287..ae9144966 100644 --- a/docs/calculus-module/4-trm.html +++ b/docs/calculus-module/4-trm.html @@ -321,7 +321,7 @@ value, because this might not yet have been checked otherwise.

 #ifdef CORE_MODULE
-void Terms::emit(pcalc_term pt) {
+void Terms::emit(pcalc_term pt, kind *K) {
     if (pt.variable >= 0) {
         local_variable *lvar = LocalVariables::find_pcalc_var(pt.variable);
         if (lvar == NULL) {
@@ -338,7 +338,7 @@ value, because this might not yet have been checked otherwise.
         } else {
             if (Specifications::is_phrasal(pt.constant))
                 Dash::check_value(pt.constant, NULL);
-            CompileSpecifications::to_code_val(K_value, pt.constant);
+            CompileSpecifications::to_code_val_of_kind(pt.constant, K);
         }
         return;
     }
diff --git a/docs/imperative-module/2-sf.html b/docs/imperative-module/2-sf.html
index f471dc96e..3a7993c86 100644
--- a/docs/imperative-module/2-sf.html
+++ b/docs/imperative-module/2-sf.html
@@ -499,7 +499,7 @@ following, without having to worry about how any of this works:
 

-void Frames::emit_new_local_value(kind *K) {
+void Frames::emit_new_local_value(kind *K) {
     local_block_value *bv = Frames::allocate_local_block_value(K);
     EmitSchemas::emit_expand_from_terms(bv->to_refer, NULL, NULL, FALSE);
 }
diff --git a/docs/imperative-module/3-cad.html b/docs/imperative-module/3-cad.html
index e7c06ce2f..4eca75656 100644
--- a/docs/imperative-module/3-cad.html
+++ b/docs/imperative-module/3-cad.html
@@ -186,7 +186,7 @@ return the number of cinders made.
     if (pt->constant) {
         if (Calculus::Deferrals::Cinders::spec_needs_to_be_cindered(pt->constant)) {
             pt->cinder = cinder_number++;
-            CompileSpecifications::to_code_val(K_value, pt->constant);
+            CompileSpecifications::to_code_val(K_value, pt->constant);
             current_pdef->cinder_kinds[pt->cinder] =
                 Specifications::to_kind(pt->constant);
             *started = TRUE;
diff --git a/docs/imperative-module/3-cdp.html b/docs/imperative-module/3-cdp.html
index d97b6585b..244ff36de 100644
--- a/docs/imperative-module/3-cdp.html
+++ b/docs/imperative-module/3-cdp.html
@@ -1090,7 +1090,7 @@ quantifier.
             Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEFERRED_CALLING_LIST_HL));
             Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) C_stack_index[C_sp]);
         Produce::up(Emit::tree());
-        Terms::emit(C_stack_term[C_sp]);
+        Terms::emit(C_stack_term[C_sp], K_value);
     Produce::up(Emit::tree());
 
diff --git a/docs/imperative-module/3-cfs.html b/docs/imperative-module/3-cfs.html index 9cdfb8bfc..bb543fdb3 100644 --- a/docs/imperative-module/3-cfs.html +++ b/docs/imperative-module/3-cfs.html @@ -12,6 +12,11 @@ + + + +