aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/backendconvert.icl20
-rw-r--r--backendC/CleanCompilerSources/backend.dcl8
-rw-r--r--backendC/CleanCompilerSources/backend.h11
-rw-r--r--backendC/backend.link4
-rw-r--r--coclmaindll/backend.dllbin1409444 -> 1409468 bytes
5 files changed, 37 insertions, 6 deletions
diff --git a/backend/backendconvert.icl b/backend/backendconvert.icl
index ecca95b..bef3523 100644
--- a/backend/backendconvert.icl
+++ b/backend/backendconvert.icl
@@ -304,6 +304,9 @@ beDefineImportedObjsAndLibs
:== beApFunction2 BEDefineImportedObjsAndLibs
beAbsType
:== beApFunction1 BEAbsType
+// temporary hack
+beDynamicTempTypeSymbol
+ :== beFunction0 BEDynamicTempTypeSymbol
notYetImplementedExpr :: Expression
notYetImplementedExpr
@@ -370,6 +373,11 @@ backEndConvertModulesH predefs {fe_icl = fe_icl =: {icl_name, icl_functions, icl
= declareCurrentDclModule fe_icl fe_dcls.[main_dcl_module_n] main_dcl_module_n (backEnd -*-> "declareCurrentDclModule")
#! backEnd
= declareOtherDclModules fe_dcls main_dcl_module_n icl_used_module_numbers (backEnd -*-> "declareOtherDclModules")
+
+// tempory hack
+ #! backEnd
+ = declareDynamicTemp predefs (backEnd -*-> "declareDynamicTemp")
+
#! backEnd
= defineDclModule varHeap main_dcl_module_n fe_dcls.[main_dcl_module_n] (backEnd -*-> "defineDclModule(cIclMoIndex)")
#! backEnd
@@ -834,6 +842,10 @@ convertSelector moduleIndex selectorDefs varHeap {fs_index}
_
-> (selectorDef.sd_type,be))
+declareDynamicTemp :: PredefinedSymbols -> BackEnder
+declareDynamicTemp predefs
+ = appBackEnd (BEDeclareDynamicTypeSymbol predefs.[PD_StdDynamics].pds_def predefs.[PD_DynamicTemp].pds_def)
+
predefineSymbols :: DclModule PredefinedSymbols -> BackEnder
predefineSymbols {dcl_common} predefs
= appBackEnd (BEDeclarePredefinedModule (size dcl_common.com_type_defs) (size dcl_common.com_cons_defs))
@@ -1044,7 +1056,8 @@ convertBasicTypeKind BT_File
convertBasicTypeKind BT_World
= BEWorldType
convertBasicTypeKind BT_Dynamic
- = BEDynamicType
+ = undef <<- "convertBasicTypeKind (BT_Dynamic) shouldn't occur"
+// = BEDynamicType
convertBasicTypeKind (BT_String _)
= undef <<- "convertBasicTypeKind (BT_String _) shouldn't occur"
@@ -1080,6 +1093,11 @@ convertAnnotTypeNode {at_type, at_annotation, at_attribute}
convertTypeNode :: Type -> BEMonad BETypeNodeP
convertTypeNode (TB (BT_String type))
= convertTypeNode type
+// tempory hack
+convertTypeNode (TB BT_Dynamic)
+ = beNormalTypeNode beDynamicTempTypeSymbol beNoTypeArgs
+convertTypeNode (TB basicType)
+ = beNormalTypeNode (beBasicSymbol (convertBasicTypeKind basicType)) beNoTypeArgs
convertTypeNode (TB basicType)
= beNormalTypeNode (beBasicSymbol (convertBasicTypeKind basicType)) beNoTypeArgs
convertTypeNode (TA typeSymbolIdent typeArgs)
diff --git a/backendC/CleanCompilerSources/backend.dcl b/backendC/CleanCompilerSources/backend.dcl
index c346245..af49d08 100644
--- a/backendC/CleanCompilerSources/backend.dcl
+++ b/backendC/CleanCompilerSources/backend.dcl
@@ -220,9 +220,13 @@ BEDefineImportedObjsAndLibs :: !BEStringListP !BEStringListP !BackEnd -> BackEnd
// void BEDefineImportedObjsAndLibs(BEStringListP objs,BEStringListP libs);
BESetMainDclModuleN :: !Int !BackEnd -> BackEnd;
// void BESetMainDclModuleN(int main_dcl_module_n_parameter);
-kBEVersionCurrent:==0x02000204;
+BEDeclareDynamicTypeSymbol :: !Int !Int !BackEnd -> BackEnd;
+// void BEDeclareDynamicTypeSymbol(int typeIndex,int moduleIndex);
+BEDynamicTempTypeSymbol :: !BackEnd -> (!BESymbolP,!BackEnd);
+// BESymbolP BEDynamicTempTypeSymbol();
+kBEVersionCurrent:==0x02000206;
kBEVersionOldestDefinition:==0x02000204;
-kBEVersionOldestImplementation:==0x02000204;
+kBEVersionOldestImplementation:==0x02000206;
kBEDebug:==1;
kPredefinedModuleIndex:==1;
BENoAnnot:==0;
diff --git a/backendC/CleanCompilerSources/backend.h b/backendC/CleanCompilerSources/backend.h
index 5756288..23d7b8c 100644
--- a/backendC/CleanCompilerSources/backend.h
+++ b/backendC/CleanCompilerSources/backend.h
@@ -1,8 +1,8 @@
/* version info */
-# define kBEVersionCurrent 0x02000205
+# define kBEVersionCurrent 0x02000206
# define kBEVersionOldestDefinition 0x02000204
-# define kBEVersionOldestImplementation 0x02000204
+# define kBEVersionOldestImplementation 0x02000206
# define kBEDebug 1
@@ -427,3 +427,10 @@ Clean (BEDefineImportedObjsAndLibs :: BEStringListP BEStringListP BackEnd -> Bac
void BESetMainDclModuleN (int main_dcl_module_n_parameter);
Clean (BESetMainDclModuleN :: Int BackEnd -> BackEnd)
+
+// temporary hack
+void BEDeclareDynamicTypeSymbol (int typeIndex, int moduleIndex);
+Clean (BEDeclareDynamicTypeSymbol :: Int Int BackEnd -> BackEnd)
+
+BESymbolP BEDynamicTempTypeSymbol (void);
+Clean (BEDynamicTempTypeSymbol :: BackEnd -> (BESymbolP, BackEnd))
diff --git a/backendC/backend.link b/backendC/backend.link
index c94da1b..5bb5d44 100644
--- a/backendC/backend.link
+++ b/backendC/backend.link
@@ -90,4 +90,6 @@
/EXPORT: BEGetVersion
/EXPORT: BEAbsType
/EXPORT: BESwapTypes
-/EXPORT: BESetMainDclModuleN \ No newline at end of file
+/EXPORT: BESetMainDclModuleN
+/EXPORT: BEDeclareDynamicTypeSymbol
+/EXPORT: BEDynamicTempTypeSymbol
diff --git a/coclmaindll/backend.dll b/coclmaindll/backend.dll
index e638682..308a796 100644
--- a/coclmaindll/backend.dll
+++ b/coclmaindll/backend.dll
Binary files differ