[SCM] Lisaac compiler branch, master, updated. lisaac-0.12-692-g766c008
ontologiae
ontologiae at gmail.com
Wed Jan 19 09:13:07 UTC 2011
The following commit has been merged in the master branch:
commit 984a809562cf3b426d6f90aef5269b2c0fd6bf85
Author: ontologiae <ontologiae at gmail.com>
Date: Tue Jan 18 08:32:06 2011 +0100
Tracking nativearray bug
diff --git a/src/CompteRenduInvestigationBugNativeArray.txt b/src/CompteRenduInvestigationBugNativeArray.txt
new file mode 100644
index 0000000..b880eba
--- /dev/null
+++ b/src/CompteRenduInvestigationBugNativeArray.txt
@@ -0,0 +1,6 @@
+Compte rendu investigations sur bug NativeArray :
+
+- Le bug survient lors d'un appel sur reset_last_write dans le proto VARIABLE L 193. Celui ci est défini comme deferred.
+- VARIABLE est le père de LOCAL et SLOT_DATA. Dans ces deux proto fils de VARIABLE, le slot reset_last_write est correctement défini
+- La création de ce VARIABLE dans le graphe de code survient dans TYPE_GENERIC Line #245 Column #52 code : native_array_variable := VARIABLE.create (proto.position) name intern_name type (gen.first);
+
diff --git a/src/HACKING b/src/HACKING
index 860aee6..17228ca 100644
--- a/src/HACKING
+++ b/src/HACKING
@@ -428,3 +428,248 @@ The parser
Common things for command lines. This is used by `LISAAC` and `SHORTER` to
display help and compiler version.
+
+
+# General TREE #
+
+- ANY_OPTION (compiler_any
+shorter_any)
+ - ANY
+ - ALIASER_LOCAL
+ - CASE (code_life)
+ - COMMON
+ - ITM_OBJECT (item)
+ - INSTR (code_life)
+ - CALL_SLOT (code_life)
+ - COP_LOCK (code_life)
+ - COP_UNLOCK (code_life)
+ - COV_INSTR (code_life)
+ - EXPR (code_life)
+ - CAST (code_life)
+ - EXPR_MULTIPLE (code_life)
+ - READ (code_life)
+ - READ_GLOBAL (code_life)
+ - READ_LOCAL (code_life)
+ - READ_SLOT (code_life)
+
+ - RESULT (code_life)
+ - CONSTANT (constant)
+ - CHARACTER_CST (constant)
+ - INTEGER_CST (constant)
+ - NATIVE_ARRAY_CHARACTER_CST (constant)
+ - PROTOTYPE_CST (constant)
+ - REAL_CST (constant)
+ - STRING_CST (constant)
+
+ - EXPR_BINARY (external/arithmetic)
+ - EXPR_ADD (external/arithmetic)
+ - EXPR_AND (external/arithmetic)
+ - EXPR_DIV (external/arithmetic)
+ - EXPR_MOD (external/arithmetic)
+ - EXPR_MUL (external/arithmetic)
+ - EXPR_OR (external/arithmetic)
+ - EXPR_SHIFT_L (external/arithmetic)
+ - EXPR_SHIFT_R (external/arithmetic)
+ - EXPR_SUB (external/arithmetic)
+ - EXPR_XOR (external/arithmetic)
+
+ - EXPR_UNARY (external/arithmetic)
+ - EXPR_NEG (external/arithmetic)
+ - EXPR_NOT (external/arithmetic)
+
+ - EXPR_BINARY_CMP (external/comparison)
+ - EXPR_EQUAL (external/comparison)
+ - EXPR_INF (external/comparison)
+ - EXPR_INF_EQ (external/comparison)
+ - EXPR_NOT_EQUAL (external/comparison)
+ - EXPR_SUP (external/comparison)
+ - EXPR_SUP_EQ (external/comparison)
+
+ - EXTERNAL_C (external)
+ - GET_TYPE_ID (external)
+ - IS_EXPANDED (external)
+ - ITEM (external)
+ - EXPR_BINARY_LOGIC (external/logic)
+ - EXPR_AND_LOGIC (external/logic)
+ - EXPR_AND_AND_LOGIC (external/logic)
+
+ - EXPR_OR_LOGIC (external/logic)
+ - EXPR_OR_OR_LOGIC (external/logic)
+
+
+ - EXPR_UNARY_LOGIC (external/logic)
+ - EXPR_NOT_LOGIC (external/logic)
+
+ - SIZE_OF (external)
+
+ - LIST (code_life)
+ - LOOP (code_life)
+ - LOOP_END (code_life)
+ - NOP (code_life)
+ - PUSH (code_life)
+ - SWITCH (code_life)
+ - WRITE (code_life)
+ - WRITE_GLOBAL (code_life)
+ - WRITE_LOCAL (code_life)
+ - WRITE_SLOT (code_life)
+ - PUT_TO (external)
+
+ - NODE (dispatcher)
+ - NODE_STYLE (dispatcher)
+ - NODE_TYPE (dispatcher)
+
+ - CALL_NULL (external)
+ - FORALL_DATA (external)
+ - PUT_TO (external)
+
+ - DTA (dispatcher)
+ - DTA_CAST (dispatcher)
+ - DTA_RD (dispatcher)
+ - DTA_RD_ARGS (dispatcher)
+ - DTA_BLOCK (dispatcher)
+
+
+ - DTA_WR_CODE (dispatcher)
+ - DTA_WR_VALUE (dispatcher)
+
+ - ITM_ARGUMENT (item)
+ - ITM_ARG (item)
+ - ITM_ARGS (item)
+
+ - ITM_CODE (item)
+ - ITM_BINARY (item)
+ - ITM_BLOCK (item)
+ - ITM_CONSTANT (item)
+ - ITM_CHARACTER (item)
+ - ITM_NUMBER (item)
+ - ITM_PROTOTYPE (item)
+ - ITM_REAL (item)
+ - ITM_STRING (item)
+
+ - ITM_EXPRESSION (item)
+ - ITM_EXTERN (item)
+ - ITM_EXTERNAL (item)
+ - ITM_EXTERNAL_TYPE (item)
+
+ - ITM_LDOTS (item)
+ - ITM_LIST (item)
+ - ITM_LIST_IDF (item)
+ - ITM_OLD (item)
+ - ITM_OPERATOR (item)
+ - ITM_READ (item)
+ - ITM_READ_ARG1 (item)
+ - ITM_READ_ARG2 (item)
+ - ITM_READ_ARGS (item)
+
+ - ITM_RESULT (item)
+ - ITM_WRITE (item)
+ - ITM_WRITE_CAST (item)
+ - ITM_WRITE_CODE (item)
+ - ITM_WRITE_VALUE (item)
+
+
+ - ITM_LOCAL (item)
+ - LIP_CODE (lip)
+ - LIP_AFFECT (lip)
+ - LIP_BINARY (lip)
+ - LIP_CALL (lip)
+ - LIP_IF (lip)
+ - LIP_LIST (lip)
+ - LIP_SLOT_CODE (lip)
+ - LIP_SLOT_DATA (lip)
+ - LIP_UNARY (lip)
+ - LIP_VALUE (lip)
+
+ - ARGUMENT (variable)
+ - NAMED (variable)
+ - ITM_SLOT (item)
+ - ITM_SLOT_OPERATOR (item)
+ - SLOT (variable)
+ - SLOT_CODE (variable)
+ - SLOT_CODE (variable)
+ - SLOT_DATA (variable)
+ - SLOT_DATA (variable)
+
+
+ - PROTOTYPE (type)
+ - VARIABLE (variable)
+ - LOCAL (variable)
+ - SLOT_DATA (variable)
+
+
+
+ - ITM_TYPE (item)
+ - ITM_TYPE_MONO (item)
+ - ITM_TYPE_BLOCK (item)
+ - ITM_TYPE_GENERIC_ELT (item)
+ - ITM_TYPE_SIMPLE (item)
+ - ITM_TYPE_PARAMETER (item)
+ - ITM_TYPE_STYLE (item)
+ - ITM_TYPE_GENERIC (item)
+
+
+
+ - ITM_TYPE_MULTI (item)
+
+ - LIP_CONSTANT (lip)
+ - LIP_BOOLEAN (lip)
+ - LIP_INTEGER (lip)
+ - LIP_STRING (lip)
+
+ - LISAAC
+ - PARSER
+ - PROFIL
+ - PROFIL_BLOCK
+ - PROFIL_SLOT
+
+ - PROFIL_LIST
+ - SHORTER
+ - ALIAS_ARRAY (tools)
+ - ALIAS_STR (tools)
+ - BACKEND (tools)
+ - BACKEND_C (tools)
+ - BACKEND_JAVA (tools)
+
+ - COUPLE (tools)
+ - COUPLED (tools)
+ - POSITION (tools)
+ - TYPES (tools)
+ - TYPES_TMP (tools)
+
+ - TYPE (type)
+ - PROFIL_BLOCK
+ - TYPE_BLOCK (type)
+ - TYPE_CONTEXT (type)
+ - TYPE_GENERIC (type)
+ - TYPE_ID (type)
+ - TYPE_NULL (type)
+ - TYPE_VOID (type)
+
+ - TYPE_FULL (type)
+ - LOCAL_SEQ (variable)
+ - SECTION_ (variable)
+
+
+- PARAMETER_TO_TYPE
+ - DTA_RD (dispatcher)
+ - DTA_RD_ARGS (dispatcher)
+ - DTA_BLOCK (dispatcher)
+
+
+ - PROFIL
+ - PROFIL_BLOCK
+ - PROFIL_SLOT
+
+ - TYPE (type)
+ - PROFIL_BLOCK
+ - TYPE_BLOCK (type)
+ - TYPE_CONTEXT (type)
+ - TYPE_GENERIC (type)
+ - TYPE_ID (type)
+ - TYPE_NULL (type)
+ - TYPE_VOID (type)
+
+
+- SLIM_ARRAY (tools)
+- TABLE (tools)
+
diff --git a/src/type/type_generic.li b/src/type/type_generic.li
index 4b486ff..4b44743 100644
--- a/src/type/type_generic.li
+++ b/src/type/type_generic.li
@@ -234,14 +234,14 @@ Section Public
string_tmp.replace_all ' ' with '_';
string_tmp.replace_all '.' with '_';
intern_name := ALIAS_STR.get_intern string_tmp;
- // "[debug Put_to error on native_array] Nom du type : '".print;itm_typ.name.print;"'\n".print; // BUG
+ "[debug Put_to error on native_array] Nom du type : '".print;itm_typ.name.print;"'\n".print; // BUG
(
(itm_typ.name = ALIAS_STR.prototype_native_array) ||
{itm_typ.name = ALIAS_STR.prototype_native_array_volatile}
).if {
- /* proto.position.put_error warning text "put to error in type_generic ; Affectation variable native_array_variable ";
+ proto.position.put_error warning text "put to error in type_generic ; Affectation variable native_array_variable ";
proto.position.put_position;
- proto.position.send_error;*/ // BUG tracking
+ proto.position.send_error; // BUG tracking
native_array_variable := VARIABLE.create (proto.position) name intern_name type (gen.first);
paper_list.add_last Self;
};
diff --git a/src/variable/variable.li b/src/variable/variable.li
index 5034c06..e0bf9a1 100644
--- a/src/variable/variable.li
+++ b/src/variable/variable.li
@@ -43,6 +43,11 @@ Section Public
- create p:POSITION name n:STRING_CONSTANT type t:TYPE_FULL :SELF <-
( + result:SELF;
+
+ (Self.same_dynamic_type VARIABLE).if { print_runtime_stack;"Création d'un VARIABLE !!".print;'\n'.print;crash_with_message "Création d'une variable : pas bon\n";};
+ (Self.same_dynamic_type LOCAL).if { print_runtime_stack;"Création d'un LOCAL !!".print;'\n'.print;};
+ (Self.same_dynamic_type SLOT_DATA).if { print_runtime_stack;"Création d'un SLOT_DATA !!".print;'\n'.print;};
+
result := clone;
result.make p name n type t;
result
@@ -50,6 +55,7 @@ Section Public
- make p:POSITION name n:STRING_CONSTANT type t:TYPE_FULL <-
( + tmp:TYPES_TMP;
+
position := p;
name := n;
intern_name := ALIAS_STR.get_intern n;
--
Lisaac compiler
More information about the Lisaac-commits
mailing list