aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorronny2003-06-17 12:05:44 +0000
committerronny2003-06-17 12:05:44 +0000
commit89373e1f1a068d4d0fd9dc2ab849339cde3c6ae9 (patch)
treef24e5fd9531d3c7d0390d55973ec8a1790096086 /backend
parentremoved unused functions (diff)
removed unused functions
updated version (necessary because previous commit introduced incompatibilities) git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@1349 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'backend')
-rw-r--r--backend/Windows/Clean System Files/backend_library1
-rw-r--r--backend/backend.dcl78
-rw-r--r--backend/backend.icl52
-rw-r--r--backend/backendconvert.icl48
4 files changed, 74 insertions, 105 deletions
diff --git a/backend/Windows/Clean System Files/backend_library b/backend/Windows/Clean System Files/backend_library
index 6eb2ebe..36f4371 100644
--- a/backend/Windows/Clean System Files/backend_library
+++ b/backend/Windows/Clean System Files/backend_library
@@ -115,7 +115,6 @@ BEDeclarePredefinedModule
BEDefineRules
BEGenerateCode
BEExportType
-BESwapTypes
BEExportConstructor
BEExportField
BEExportFunction
diff --git a/backend/backend.dcl b/backend/backend.dcl
index 695d76c..e396d98 100644
--- a/backend/backend.dcl
+++ b/backend/backend.dcl
@@ -6,31 +6,31 @@ from StdString import String;
:: CPtr :== Int;
:: *UWorld :== Int;
-:: *BackEnd :== Int;
-:: BESymbolP :== CPtr;
-:: BETypeNodeP :== CPtr;
-:: BETypeArgP :== CPtr;
-:: BETypeAltP :== CPtr;
-:: BENodeP :== CPtr;
-:: BEArgP :== CPtr;
-:: BERuleAltP :== CPtr;
-:: BEImpRuleP :== CPtr;
-:: BETypeP :== CPtr;
-:: BEFlatTypeP :== CPtr;
-:: BETypeVarP :== CPtr;
-:: BETypeVarListP :== CPtr;
-:: BEConstructorListP :== CPtr;
-:: BEFieldListP :== CPtr;
-:: BENodeIdP :== CPtr;
-:: BENodeDefP :== CPtr;
-:: BEStrictNodeIdP :== CPtr;
-:: BECodeParameterP :== CPtr;
-:: BECodeBlockP :== CPtr;
-:: BEStringListP :== CPtr;
-:: BENodeIdListP :== CPtr;
-:: BENodeIdRefCountListP :== CPtr;
-:: BEUniVarEquations :== CPtr;
-:: BEAttributeKindList :== CPtr;
+:: *BackEnd; // :== CPtr;
+:: BESymbolP; // :== CPtr;
+:: BETypeNodeP; // :== CPtr;
+:: BETypeArgP; // :== CPtr;
+:: BETypeAltP; // :== CPtr;
+:: BENodeP; // :== CPtr;
+:: BEArgP; // :== CPtr;
+:: BERuleAltP; // :== CPtr;
+:: BEImpRuleP; // :== CPtr;
+:: BETypeP; // :== CPtr;
+:: BEFlatTypeP; // :== CPtr;
+:: BETypeVarP; // :== CPtr;
+:: BETypeVarListP; // :== CPtr;
+:: BEConstructorListP; // :== CPtr;
+:: BEFieldListP; // :== CPtr;
+:: BENodeIdP; // :== CPtr;
+:: BENodeDefP; // :== CPtr;
+:: BEStrictNodeIdP; // :== CPtr;
+:: BECodeParameterP; // :== CPtr;
+:: BECodeBlockP; // :== CPtr;
+:: BEStringListP; // :== CPtr;
+:: BENodeIdListP; // :== CPtr;
+:: BENodeIdRefCountListP; // :== CPtr;
+:: BEUniVarEquations; // :== CPtr;
+:: BEAttributeKindList; // :== CPtr;
:: BEAnnotation :== Int;
:: BEAttribution :== Int;
:: BESymbKind :== Int;
@@ -206,14 +206,10 @@ BENoTypes :: !BackEnd -> (!BETypeP,!BackEnd);
// BETypeP BENoTypes ();
BEFlatType :: !BESymbolP !BETypeVarListP !BackEnd -> (!BEFlatTypeP,!BackEnd);
// BEFlatTypeP BEFlatType (BESymbolP symbol,BETypeVarListP arguments);
-//BEFlatTypeX :: !BESymbolP !BEAttribution !BETypeVarListP !BackEnd -> (!BEFlatTypeP,!BackEnd);
-// BEFlatTypeP BEFlatTypeX (BESymbolP symbol,BEAttribution attribute,BETypeVarListP arguments);
BEAlgebraicType :: !BEFlatTypeP !BEConstructorListP !BackEnd -> BackEnd;
// void BEAlgebraicType (BEFlatTypeP lhs,BEConstructorListP constructors);
BERecordType :: !Int !BEFlatTypeP !BETypeNodeP !BEFieldListP !BackEnd -> BackEnd;
// void BERecordType (int moduleIndex,BEFlatTypeP lhs,BETypeNodeP constructorType,BEFieldListP fields);
-//BERecordTypeX :: !Int !BEFlatTypeP !BETypeNodeP !Int !BEFieldListP !BackEnd -> BackEnd;
-// void BERecordType (int moduleIndex,BEFlatTypeP lhs,BETypeNodeP constructorType,int is_boxoed_record,BEFieldListP fields);
BEAbsType :: !BEFlatTypeP !BackEnd -> BackEnd;
// void BEAbsType (BEFlatTypeP lhs);
BEConstructors :: !BEConstructorListP !BEConstructorListP !BackEnd -> (!BEConstructorListP,!BackEnd);
@@ -272,16 +268,14 @@ BEDefineRules :: !BEImpRuleP !BackEnd -> BackEnd;
// void BEDefineRules (BEImpRuleP rules);
BEGenerateCode :: !String !BackEnd -> (!Bool,!BackEnd);
// int BEGenerateCode (CleanString outputFile);
-BEExportType :: !Int !Int !BackEnd -> BackEnd;
-// void BEExportType (int dclTypeIndex,int iclTypeIndex);
-BESwapTypes :: !Int !Int !BackEnd -> BackEnd;
-// void BESwapTypes (int frm,int to);
-BEExportConstructor :: !Int !Int !BackEnd -> BackEnd;
-// void BEExportConstructor (int dclConstructorIndex,int iclConstructorIndex);
-BEExportField :: !Int !Int !BackEnd -> BackEnd;
-// void BEExportField (int dclTypeIndex,int iclTypeIndex);
-BEExportFunction :: !Int !Int !BackEnd -> BackEnd;
-// void BEExportFunction (int dclFunctionIndex,int iclFunctionIndex);
+BEExportType :: !Bool !Int !BackEnd -> BackEnd;
+// void BEExportType (int isDictionary,int typeIndex);
+BEExportConstructor :: !Int !BackEnd -> BackEnd;
+// void BEExportConstructor (int constructorIndex);
+BEExportField :: !Bool !Int !BackEnd -> BackEnd;
+// void BEExportField (int isDictionaryField,int fieldIndex);
+BEExportFunction :: !Int !BackEnd -> BackEnd;
+// void BEExportFunction (int functionIndex);
BEDefineImportedObjsAndLibs :: !BEStringListP !BEStringListP !BackEnd -> BackEnd;
// void BEDefineImportedObjsAndLibs (BEStringListP objs,BEStringListP libs);
BESetMainDclModuleN :: !Int !BackEnd -> BackEnd;
@@ -294,9 +288,9 @@ BEDeclareDynamicTypeSymbol :: !Int !Int !BackEnd -> BackEnd;
// void BEDeclareDynamicTypeSymbol (int typeIndex,int moduleIndex);
BEDynamicTempTypeSymbol :: !BackEnd -> (!BESymbolP,!BackEnd);
// BESymbolP BEDynamicTempTypeSymbol ();
-kBEVersionCurrent:==0x02010801;
-kBEVersionOldestDefinition:==0x02000213;
-kBEVersionOldestImplementation:==0x02010801;
+kBEVersionCurrent:==0x02030407;
+kBEVersionOldestDefinition:==0x02030407;
+kBEVersionOldestImplementation:==0x02030407;
kBEDebug:==1;
kPredefinedModuleIndex:==1;
BENoAnnot:==0;
diff --git a/backend/backend.icl b/backend/backend.icl
index bf10159..74fc177 100644
--- a/backend/backend.icl
+++ b/backend/backend.icl
@@ -6,7 +6,7 @@ from StdString import String;
:: CPtr :== Int;
:: *UWorld :== Int;
-:: *BackEnd :== Int;
+:: *BackEnd :== CPtr;
:: BESymbolP :== CPtr;
:: BETypeNodeP :== CPtr;
:: BETypeArgP :== CPtr;
@@ -542,13 +542,6 @@ BEFlatType a0 a1 a2 = code {
ccall BEFlatType "II:I:I"
}
// BEFlatTypeP BEFlatType (BESymbolP symbol,BETypeVarListP arguments);
-/*
-BEFlatTypeX :: !BESymbolP !BEAttribution !BETypeVarListP !BackEnd -> (!BEFlatTypeP,!BackEnd);
-BEFlatTypeX a0 a1 a2 a3 = code {
- ccall BEFlatTypeX "III:I:I"
-}
-*/
-// BEFlatTypeP BEFlatTypeX (BESymbolP symbol,BETypeVarListP arguments,BEAttribution attribute);
BEAlgebraicType :: !BEFlatTypeP !BEConstructorListP !BackEnd -> BackEnd;
BEAlgebraicType a0 a1 a2 = code {
@@ -561,13 +554,6 @@ BERecordType a0 a1 a2 a3 a4 = code {
ccall BERecordType "IIII:V:I"
}
// void BERecordType (int moduleIndex,BEFlatTypeP lhs,BETypeNodeP constructorType,BEFieldListP fields);
-/*
-BERecordTypeX :: !Int !BEFlatTypeP !BETypeNodeP !Int !BEFieldListP !BackEnd -> BackEnd;
-BERecordTypeX a0 a1 a2 a3 a4 a5 = code {
- ccall BERecordTypeX "IIIII:V:I"
-}
-*/
-// void BERecordTypeX (int moduleIndex,BEFlatTypeP lhs,BETypeNodeP constructorType,int is_boxed_record,BEFieldListP fields);
BEAbsType :: !BEFlatTypeP !BackEnd -> BackEnd;
BEAbsType a0 a1 = code {
@@ -743,35 +729,29 @@ BEGenerateCode a0 a1 = code {
}
// int BEGenerateCode (CleanString outputFile);
-BEExportType :: !Int !Int !BackEnd -> BackEnd;
+BEExportType :: !Bool !Int !BackEnd -> BackEnd;
BEExportType a0 a1 a2 = code {
ccall BEExportType "II:V:I"
}
-// void BEExportType (int dclTypeIndex,int iclTypeIndex);
-
-BESwapTypes :: !Int !Int !BackEnd -> BackEnd;
-BESwapTypes a0 a1 a2 = code {
- ccall BESwapTypes "II:V:I"
-}
-// void BESwapTypes (int frm,int to);
+// void BEExportType (int isDictionary,int typeIndex);
-BEExportConstructor :: !Int !Int !BackEnd -> BackEnd;
-BEExportConstructor a0 a1 a2 = code {
- ccall BEExportConstructor "II:V:I"
+BEExportConstructor :: !Int !BackEnd -> BackEnd;
+BEExportConstructor a0 a1 = code {
+ ccall BEExportConstructor "I:V:I"
}
-// void BEExportConstructor (int dclConstructorIndex,int iclConstructorIndex);
+// void BEExportConstructor (int constructorIndex);
-BEExportField :: !Int !Int !BackEnd -> BackEnd;
+BEExportField :: !Bool !Int !BackEnd -> BackEnd;
BEExportField a0 a1 a2 = code {
ccall BEExportField "II:V:I"
}
-// void BEExportField (int dclTypeIndex,int iclTypeIndex);
+// void BEExportField (int isDictionaryField,int fieldIndex);
-BEExportFunction :: !Int !Int !BackEnd -> BackEnd;
-BEExportFunction a0 a1 a2 = code {
- ccall BEExportFunction "II:V:I"
+BEExportFunction :: !Int !BackEnd -> BackEnd;
+BEExportFunction a0 a1 = code {
+ ccall BEExportFunction "I:V:I"
}
-// void BEExportFunction (int dclFunctionIndex,int iclFunctionIndex);
+// void BEExportFunction (int functionIndex);
BEDefineImportedObjsAndLibs :: !BEStringListP !BEStringListP !BackEnd -> BackEnd;
BEDefineImportedObjsAndLibs a0 a1 a2 = code {
@@ -808,9 +788,9 @@ BEDynamicTempTypeSymbol a0 = code {
ccall BEDynamicTempTypeSymbol ":I:I"
}
// BESymbolP BEDynamicTempTypeSymbol ();
-kBEVersionCurrent:==0x02010801;
-kBEVersionOldestDefinition:==0x02000213;
-kBEVersionOldestImplementation:==0x02010801;
+kBEVersionCurrent:==0x02030407;
+kBEVersionOldestDefinition:==0x02030407;
+kBEVersionOldestImplementation:==0x02030407;
kBEDebug:==1;
kPredefinedModuleIndex:==1;
BENoAnnot:==0;
diff --git a/backend/backendconvert.icl b/backend/backendconvert.icl
index 3eebf1c..a6fab56 100644
--- a/backend/backendconvert.icl
+++ b/backend/backendconvert.icl
@@ -309,8 +309,6 @@ beAdjustArrayFunction backendId functionIndex moduleIndex
:== beApFunction0 (BEAdjustArrayFunction backendId functionIndex moduleIndex)
beFlatType
:== beFunction2 BEFlatType
-//beFlatTypeX
-// :== beFunction3 BEFlatTypeX
beNoTypeVars
:== beFunction0 BENoTypeVars
beTypeVars
@@ -319,14 +317,14 @@ beTypeVar name
:== beFunction0 (BETypeVar name)
beTypeVarListElem
:== beFunction2 BETypeVarListElem
-beExportType dclTypeIndex iclTypeIndex
- :== beApFunction0 (BEExportType dclTypeIndex iclTypeIndex)
-beExportConstructor dclConstructorIndex iclConstructorIndex
- :== beApFunction0 (BEExportConstructor dclConstructorIndex iclConstructorIndex)
-beExportField dclFieldIndex iclFieldIndex
- :== beApFunction0 (BEExportField dclFieldIndex iclFieldIndex)
-beExportFunction dclIndexFunctionIndex iclFunctionIndex
- :== beApFunction0 (BEExportFunction dclIndexFunctionIndex iclFunctionIndex)
+beExportType isDictionary typeIndex
+ :== beApFunction0 (BEExportType isDictionary typeIndex)
+beExportConstructor constructorIndex
+ :== beApFunction0 (BEExportConstructor constructorIndex)
+beExportField isDictionaryField fieldIndex
+ :== beApFunction0 (BEExportField isDictionaryField fieldIndex)
+beExportFunction functionIndex
+ :== beApFunction0 (BEExportFunction functionIndex)
beTupleSelectNode arity index
:== beFunction1 (BETupleSelectNode arity index)
beMatchNode arity
@@ -2105,38 +2103,36 @@ getVariableSequenceNumber varInfoPtr be
VI_AliasSequenceNumber {var_info_ptr}
-> getVariableSequenceNumber var_info_ptr be
-foldStateWithIndexTwice function n
+foldStateWithIndex function n
:== foldStateWithIndexTwice 0
where
foldStateWithIndexTwice index
| index == n
= identity
// otherwise
- = function index index
+ = function index
o` foldStateWithIndexTwice (index+1)
markExports :: DclModule {#ClassDef} {#CheckedTypeDef} {#ClassDef} {#CheckedTypeDef} -> BackEnder
markExports {dcl_functions,dcl_common={com_type_defs,com_cons_defs,com_selector_defs,com_class_defs}} dclClasses dclTypes iclClasses iclTypes
- = foldStateWithIndexTwice beExportType (size com_type_defs)
- o foldStateWithIndexTwice beExportConstructor (size com_cons_defs)
- o foldStateWithIndexTwice beExportField (size com_selector_defs)
- o foldStateWithIndexTwice (exportDictionary iclClasses iclTypes) (size com_class_defs)
- o foldStateWithIndexTwice beExportFunction (size dcl_functions)
+ = foldStateWithIndex (beExportType False) (size com_type_defs)
+ o foldStateWithIndex beExportConstructor (size com_cons_defs)
+ o foldStateWithIndex (beExportField False) (size com_selector_defs)
+ o foldStateWithIndex (exportDictionary iclClasses iclTypes) (size com_class_defs)
+ o foldStateWithIndex beExportFunction (size dcl_functions)
where
- exportDictionary :: {#ClassDef} {#CheckedTypeDef} Index Index -> BackEnder
- exportDictionary iclClasses iclTypes dclClassIndex iclClassIndex
- = beExportType (-1) iclTypeIndex // remove -1 hack
+ exportDictionary :: {#ClassDef} {#CheckedTypeDef} Index -> BackEnder
+ exportDictionary iclClasses iclTypes classIndex
+ = beExportType True classIndex
o foldStateA exportDictionaryField rt_fields
where
- dclTypeIndex
- = dclClasses.[dclClassIndex].class_dictionary.ds_index
iclTypeIndex
- = iclClasses.[iclClassIndex].class_dictionary.ds_index
+ = iclClasses.[classIndex].class_dictionary.ds_index
+ dclTypeIndex
+ = dclClasses.[classIndex].class_dictionary.ds_index
{td_rhs = RecordType {rt_fields}}
= iclTypes.[iclTypeIndex]
exportDictionaryField :: FieldSymbol -> BackEnder
exportDictionaryField {fs_index}
- = beExportField (-1) fs_index // remove -1 hack
-markExports _ _ _ _ _
- = identity
+ = beExportField True fs_index