[SCM] Lisaac compiler branch, mildred-coverage-rebase, updated. lisaac-0.12-612-ge5a5887

Mildred Ki'Lya silkensedai at online.fr
Sat Mar 6 18:55:31 UTC 2010


The following commit has been merged in the mildred-coverage-rebase branch:
commit e5a5887a531e8c2d431f96fcc41efea7c9c29c7e
Author: Mildred Ki'Lya <silkensedai at online.fr>
Date:   Sat Mar 6 19:55:28 2010 +0100

    Coverage generation complete

diff --git a/src/any.li b/src/any.li
index 38cd413..bc593a1 100644
--- a/src/any.li
+++ b/src/any.li
@@ -230,6 +230,7 @@ Section Public
   - output_decl:STRING := STRING.create 60000;
   - output_glob:STRING := STRING.create 10000;
   - output_code:STRING := STRING.create 4_000_000;
+  - output_coverage:STRING := [ -? { is_coverage }; ] NULL;
 
   - title txt:STRING_CONSTANT in buf:STRING <-
   (
diff --git a/src/item/itm_list.li b/src/item/itm_list.li
index e5d1035..3662544 100644
--- a/src/item/itm_list.li
+++ b/src/item/itm_list.li
@@ -126,6 +126,13 @@ Section Public
       lst.add_first ( // TODO: Mildred: optimize (ALIAS_ARRAY)
         ITM_EXTERNAL.create position text (ALIAS_STR.get string_tmp)
       );
+      output_coverage.append "CODE:";
+      position     .line  .append_in output_coverage; output_coverage.add_last ':';
+      position     .column.append_in output_coverage; output_coverage.add_last ':';
+      last_position.line  .append_in output_coverage; output_coverage.add_last ':';
+      last_position.column.append_in output_coverage; output_coverage.add_last ':';
+      output_coverage.append (position.prototype.filename);
+      output_coverage.add_last '\n';
     };
   );
 
diff --git a/src/lisaac.li b/src/lisaac.li
index 6d49d5d..d35b931 100644
--- a/src/lisaac.li
+++ b/src/lisaac.li
@@ -509,7 +509,7 @@ Section Private
       buf.append
       "static void lisaac_coverage_hook(unsigned long start, unsigned long stop)\n\
       \{\n\
-      \  fprintf (lisaac_coverage_file, \"%d:%d:%d:%d:%s\\n\",\n\
+      \  fprintf (lisaac_coverage_file, \"COV:%d:%d:%d:%d:%s\\n\",\n\
       \          start >> 17, (start >> 9) & 0xFF,\n\
       \          stop  >> 17, (stop  >> 9) & 0xFF,\n\
       \          __Lisaac_proto_file_names[start & 0x1FF]);\n\
@@ -620,6 +620,10 @@ Section Public
     // Load Environment.
     //
     read_options;
+    is_coverage.if {
+      output_coverage := STRING.create_from_string
+        "# CODE:BEGIN_LINE:COL:END_LINE:COL:FILENAME\n";
+    };
     is_verbose.if {
       string_tmp.copy "\ninput  file: ";
       string_tmp.append input_name;
@@ -740,8 +744,9 @@ Section Public
     output_code.append "{\n";
     is_coverage.if {
       output_code.append "lisaac_coverage_file = fopen(\"";
-      output_code.append (type_input.prototype.filename);
+      output_code.append output_name;
       output_code.append ".cov\", \"a\");\n";
+      output_code.append "  fprintf (lisaac_coverage_file, \"# COV:BEGIN_LINE:COL:END_LINE:COL:FILENAME\\n\");\n";
     };
     indent.append "  ";
 
@@ -798,7 +803,21 @@ Section Public
     };
     FS_MIN.write file_output with output_code size (output_code.count);
     FS_MIN.close file_output;
-    //
+
+    is_coverage.if {
+      string_tmp.copy output_name;
+      string_tmp.append ".cov";
+      (! FS_MIN.make_file string_tmp).if {
+        STD_ERROR.put_string "Error: File ";
+        STD_ERROR.put_string string_tmp;
+        STD_ERROR.put_string " is not created !\n";
+        die_with_code exit_failure_code;
+      };
+      f := FS_MIN.open_write string_tmp;
+      FS_MIN.write f with output_coverage size (output_coverage.count);
+      FS_MIN.close f;
+    };
+
     (is_graph).if {
       + p:PROFIL;
       (PROFIL_LIST.profil_list.lower).to (PROFIL_LIST.profil_list.upper) do { j:INTEGER;

-- 
Lisaac compiler



More information about the Lisaac-commits mailing list