From 854b7ddeb522655f80f939506e4976ba7fab272d Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Mon, 9 Aug 2021 23:30:31 +0100 Subject: [PATCH] Moved C testing out of inter --- docs/BasicInformKit/S-gll.html | 2 +- docs/BasicInformKit/S-prg.html | 2 +- docs/BasicInformKit/S-rgx.html | 2 +- docs/codegen-module/4-cal.html | 2 +- docs/codegen-module/4-ft.html | 10 + docs/codegen-module/5-fi6.html | 39 ++- docs/codegen-module/5-fnc.html | 311 +++++++++++------- inform7/Figures/memory-diagnostics.txt | 12 +- inform7/Figures/timings-diagnostics.txt | 23 +- inter/Tests/C/CelloWorld.txt | 2 - .../Tests/General/_Results_Ideal/ObjKind.txt | 6 - inter/Tests/Toys/_I6_Results_Ideal/Arrays.txt | 2 +- inter/Tests/inter.intest | 61 ---- inter/codegen-module/Chapter 5/Final C.w | 52 +-- .../codegen-module/Chapter 5/Final Inform 6.w | 33 +- 15 files changed, 290 insertions(+), 269 deletions(-) delete mode 100644 inter/Tests/C/CelloWorld.txt diff --git a/docs/BasicInformKit/S-gll.html b/docs/BasicInformKit/S-gll.html index 472849517..51bc7c133 100644 --- a/docs/BasicInformKit/S-gll.html +++ b/docs/BasicInformKit/S-gll.html @@ -991,7 +991,7 @@ in case I7 extensions want to do interesting things with Glulx.

-#Stub HandleGlkEvent    2;
+#Stub HandleGlkEvent    3;
 #Stub IdentifyGlkObject 4;
 #Stub InitGlkWindow     1;
 
diff --git a/docs/BasicInformKit/S-prg.html b/docs/BasicInformKit/S-prg.html index fdc2b275d..5ca1d8d7c 100644 --- a/docs/BasicInformKit/S-prg.html +++ b/docs/BasicInformKit/S-prg.html @@ -294,7 +294,7 @@ below. say__p = 1; say__pc = say__pc | PARA_NORULEBOOKBREAKS; TEXT_TY_Say(matter); - DivideParagraphPoint(13); + DivideParagraphPoint(); say__pc = 0; ]; diff --git a/docs/BasicInformKit/S-rgx.html b/docs/BasicInformKit/S-rgx.html index 88eab244d..a2487b519 100644 --- a/docs/BasicInformKit/S-rgx.html +++ b/docs/BasicInformKit/S-rgx.html @@ -1020,7 +1020,7 @@ of the \0 root. if ((RE_PACKET_space-->RE_DOWN ~= NULL) && ((RE_PACKET_space-->RE_DOWN)-->RE_CCLASS == START_RE_CC) && (ipos>0)) { rv = -1; break; } - if (ipos > 0) TEXT_TY_RE_EraseConstraints(RE_PACKET_space, initial_mode); + if (ipos > 0) TEXT_TY_RE_EraseConstraints(RE_PACKET_space); TEXT_TY_RE_RewindCount = 0; rv = TEXT_TY_RE_ParseAtPosition(ftxt, txt, ipos, ilen, RE_PACKET_space, initial_mode); if (rv >= 0) break; diff --git a/docs/codegen-module/4-cal.html b/docs/codegen-module/4-cal.html index 6a6b916e8..88d6bb95e 100644 --- a/docs/codegen-module/4-cal.html +++ b/docs/codegen-module/4-cal.html @@ -123,7 +123,7 @@ is 20. We instead compile this as text_stream *fa = Str::duplicate(con_name->symbol_name); Str::delete_first_character(fa); Str::delete_first_character(fa); - WRITE("Fake_Action %S;\n", fa); + CodeGen::Targets::new_fake_action(gen, fa); return; } diff --git a/docs/codegen-module/4-ft.html b/docs/codegen-module/4-ft.html index 03fd4346f..ad8369b97 100644 --- a/docs/codegen-module/4-ft.html +++ b/docs/codegen-module/4-ft.html @@ -434,6 +434,16 @@ function togglePopup(material_id) { VOID_METHOD_CALL(gen->target, END_ARRAY_MTID, gen, format); } +

§19.

+ +
enum NEW_FAKE_ACTION_MTID
+
+
+VOID_METHOD_TYPE(NEW_FAKE_ACTION_MTID, code_generation_target *cgt, code_generation *gen, text_stream *name)
+void CodeGen::Targets::new_fake_action(code_generation *gen, text_stream *name) {
+    VOID_METHOD_CALL(gen->target, NEW_FAKE_ACTION_MTID, gen, name);
+}
+
diff --git a/docs/codegen-module/5-fi6.html b/docs/codegen-module/5-fi6.html index 3588f7ae4..ed5deedc5 100644 --- a/docs/codegen-module/5-fi6.html +++ b/docs/codegen-module/5-fi6.html @@ -120,6 +120,7 @@ function togglePopup(material_id) { METHOD_ADD(cgt, END_ARRAY_MTID, CodeGen::I6::end_array); METHOD_ADD(cgt, OFFER_PRAGMA_MTID, CodeGen::I6::offer_pragma) METHOD_ADD(cgt, END_GENERATION_MTID, CodeGen::I6::end_generation); + METHOD_ADD(cgt, NEW_FAKE_ACTION_MTID, CodeGen::I6::new_fake_action); inform6_target = cgt; } @@ -168,6 +169,7 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on. enum property_offset_creator_I7CGS
+int I6_property_offsets_made = 0;
 int CodeGen::I6::begin_generation(code_generation_target *cgt, code_generation *gen) {
     gen->segments[pragmatic_matter_I7CGS] = CodeGen::new_segment();
     gen->segments[compiler_versioning_matter_I7CGS] = CodeGen::new_segment();
@@ -196,30 +198,25 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on.
     gen->segments[stubs_at_eof_I7CGS] = CodeGen::new_segment();
     gen->segments[property_offset_creator_I7CGS] = CodeGen::new_segment();
 
+    I6_property_offsets_made = 0;
+
     generated_segment *saved = CodeGen::select(gen, compiler_versioning_matter_I7CGS);
     text_stream *OUT = CodeGen::current(gen);
     WRITE("Constant Grammar__Version 2;\n");
     WRITE("Global debug_flag;\n");
     CodeGen::deselect(gen, saved);
 
-    saved = CodeGen::select(gen, property_offset_creator_I7CGS);
-    OUT = CodeGen::current(gen);
-    WRITE("[ CreatePropertyOffsets i;\n"); INDENT;
-    WRITE("for (i=0: i<attributed_property_offsets_SIZE: i++)"); INDENT;
-    WRITE("attributed_property_offsets-->i = -1;\n"); OUTDENT;
-    WRITE("for (i=0: i<valued_property_offsets_SIZE: i++)"); INDENT;
-    WRITE("valued_property_offsets-->i = -1;\n"); OUTDENT;
-    CodeGen::deselect(gen, saved);
-
     return FALSE;
 }
 
 int CodeGen::I6::end_generation(code_generation_target *cgt, code_generation *gen) {
-    generated_segment *saved = CodeGen::select(gen, property_offset_creator_I7CGS);
-    text_stream *OUT = CodeGen::current(gen);
-    OUTDENT;
-    WRITE("];\n");
-    CodeGen::deselect(gen, saved);
+    if (I6_property_offsets_made > 0) {
+        generated_segment *saved = CodeGen::select(gen, property_offset_creator_I7CGS);
+        text_stream *OUT = CodeGen::current(gen);
+        OUTDENT;
+        WRITE("];\n");
+        CodeGen::deselect(gen, saved);
+    }
     return FALSE;
 }
 
@@ -752,6 +749,13 @@ trick called "stubbing", these being "stub definitions".)
 void CodeGen::I6::property_offset(code_generation_target *cgt, code_generation *gen, text_stream *prop, int pos, int as_attr) {
     generated_segment *saved = CodeGen::select(gen, property_offset_creator_I7CGS);
     text_stream *OUT = CodeGen::current(gen);
+    if (I6_property_offsets_made++ == 0) {
+        WRITE("[ CreatePropertyOffsets i;\n"); INDENT;
+        WRITE("for (i=0: i<attributed_property_offsets_SIZE: i++)\n"); INDENT;
+        WRITE("attributed_property_offsets-->i = -1;\n"); OUTDENT;
+        WRITE("for (i=0: i<valued_property_offsets_SIZE: i++)\n"); INDENT;
+        WRITE("valued_property_offsets-->i = -1;\n"); OUTDENT;
+    }
     if (as_attr) WRITE("attributed_property_offsets");
     else WRITE("valued_property_offsets");
     WRITE("-->%S = %d;\n", prop, pos);
@@ -870,7 +874,7 @@ trick called "stubbing", these being "stub definitions".)
 void CodeGen::I6::end_function(code_generation_target *cgt, int pass, code_generation *gen, inter_symbol *fn) {
     if (pass == 2) {
         text_stream *OUT = CodeGen::current(gen);
-        WRITE("];");
+        WRITE("];\n");
     }
 }
 
@@ -924,6 +928,11 @@ trick called "stubbing", these being "stub definitions".)
     text_stream *OUT = CodeGen::current(gen);
     WRITE(";\n");
 }
+
+void CodeGen::I6::new_fake_action(code_generation_target *cgt, code_generation *gen, text_stream *name) {
+    text_stream *OUT = CodeGen::current(gen);
+    WRITE("Fake_Action %S;\n", name);
+}