Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
clean-compiler-and-rts
compiler
Commits
5c8aeef4
Commit
5c8aeef4
authored
Oct 05, 2001
by
Ronny Wichers Schreur
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bind special idents (such as abort, undef from StdMisc) to the correct identifiers
parent
60812627
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
156 additions
and
12 deletions
+156
-12
MacLibraries/CleanCompilerLib
MacLibraries/CleanCompilerLib
+0
-0
backend/Clean System Files/backend_library
backend/Clean System Files/backend_library
+2
-0
backend/backend.dcl
backend/backend.dcl
+14
-2
backend/backend.icl
backend/backend.icl
+22
-2
backend/backendconvert.icl
backend/backendconvert.icl
+46
-0
backendC/CleanCompilerSources/backend.c
backendC/CleanCompilerSources/backend.c
+51
-1
backendC/CleanCompilerSources/backend.h
backendC/CleanCompilerSources/backend.h
+20
-6
backendC/CleanCompilerSources/compiledefines.h
backendC/CleanCompilerSources/compiledefines.h
+1
-1
coclmaindll/backend.dll
coclmaindll/backend.dll
+0
-0
No files found.
MacLibraries/CleanCompilerLib
View file @
5c8aeef4
No preview for this file type
backend/Clean System Files/backend_library
View file @
5c8aeef4
...
...
@@ -4,6 +4,8 @@ BEInit
BEFree
BEArg
BEDeclareModules
BEBindSpecialModule
BEBindSpecialFunction
BESpecialArrayFunctionSymbol
BEDictionarySelectFunSymbol
BEDictionaryUpdateFunSymbol
...
...
backend/backend.dcl
View file @
5c8aeef4
...
...
@@ -37,6 +37,7 @@ from StdString import String;
::
BEArrayFunKind
:==
Int
;
::
BESelectorKind
:==
Int
;
::
BEUpdateKind
:==
Int
;
::
BESpecialIdentIndex
:==
Int
;
BEGetVersion
::
(!
Int
,!
Int
,!
Int
);
// void BEGetVersion (int* current,int* oldestDefinition,int* oldestImplementation);
BEInit
::
!
Int
!
UWorld
->
(!
BackEnd
,!
UWorld
);
...
...
@@ -47,6 +48,10 @@ BEArg :: !String !BackEnd -> BackEnd;
// void BEArg (CleanString arg);
BEDeclareModules
::
!
Int
!
BackEnd
->
BackEnd
;
// void BEDeclareModules (int nModules);
BEBindSpecialModule
::
!
BESpecialIdentIndex
!
Int
!
BackEnd
->
BackEnd
;
// void BEBindSpecialModule (BESpecialIdentIndex index,int moduleIndex);
BEBindSpecialFunction
::
!
BESpecialIdentIndex
!
Int
!
Int
!
BackEnd
->
BackEnd
;
// void BEBindSpecialFunction (BESpecialIdentIndex index,int functionIndex,int moduleIndex);
BESpecialArrayFunctionSymbol
::
!
BEArrayFunKind
!
Int
!
Int
!
BackEnd
->
(!
BESymbolP
,!
BackEnd
);
// BESymbolP BESpecialArrayFunctionSymbol (BEArrayFunKind arrayFunKind,int functionIndex,int moduleIndex);
BEDictionarySelectFunSymbol
::
!
BackEnd
->
(!
BESymbolP
,!
BackEnd
);
...
...
@@ -279,9 +284,9 @@ BEDeclareDynamicTypeSymbol :: !Int !Int !BackEnd -> BackEnd;
// void BEDeclareDynamicTypeSymbol (int typeIndex,int moduleIndex);
BEDynamicTempTypeSymbol
::
!
BackEnd
->
(!
BESymbolP
,!
BackEnd
);
// BESymbolP BEDynamicTempTypeSymbol ();
kBEVersionCurrent
:==
0x0200021
4
;
kBEVersionCurrent
:==
0x0200021
5
;
kBEVersionOldestDefinition
:==
0x02000213
;
kBEVersionOldestImplementation
:==
0x0200021
4
;
kBEVersionOldestImplementation
:==
0x0200021
5
;
kBEDebug
:==
1
;
kPredefinedModuleIndex
:==
1
;
BENoAnnot
:==
0
;
...
...
@@ -354,6 +359,13 @@ BESelector_N:==5;
BEUpdateDummy
:==
0
;
BEUpdate
:==
1
;
BEUpdate_U
:==
2
;
BESpecialIdentStdMisc
:==
0
;
BESpecialIdentAbort
:==
1
;
BESpecialIdentUndef
:==
2
;
BESpecialIdentStdBool
:==
3
;
BESpecialIdentAnd
:==
4
;
BESpecialIdentOr
:==
5
;
BESpecialIdentCount
:==
6
;
BELhsNodeId
:==
0
;
BERhsNodeId
:==
1
;
BEIsNotACaf
:==
0
;
...
...
backend/backend.icl
View file @
5c8aeef4
...
...
@@ -37,6 +37,7 @@ from StdString import String;
::
BEArrayFunKind
:==
Int
;
::
BESelectorKind
:==
Int
;
::
BEUpdateKind
:==
Int
;
::
BESpecialIdentIndex
:==
Int
;
BEGetVersion
::
(!
Int
,!
Int
,!
Int
);
BEGetVersion
=
code {
...
...
@@ -68,6 +69,18 @@ BEDeclareModules a0 a1 = code {
}
;
// void BEDeclareModules (int nModules);
BEBindSpecialModule
::
!
BESpecialIdentIndex
!
Int
!
BackEnd
->
BackEnd
;
BEBindSpecialModule
a0
a1
a2
=
code {
ccall
BEBindSpecialModule
"II:V:I"
}
;
// void BEBindSpecialModule (BESpecialIdentIndex index,int moduleIndex);
BEBindSpecialFunction
::
!
BESpecialIdentIndex
!
Int
!
Int
!
BackEnd
->
BackEnd
;
BEBindSpecialFunction
a0
a1
a2
a3
=
code {
ccall
BEBindSpecialFunction
"III:V:I"
}
;
// void BEBindSpecialFunction (BESpecialIdentIndex index,int functionIndex,int moduleIndex);
BESpecialArrayFunctionSymbol
::
!
BEArrayFunKind
!
Int
!
Int
!
BackEnd
->
(!
BESymbolP
,!
BackEnd
);
BESpecialArrayFunctionSymbol
a0
a1
a2
a3
=
code {
ccall
BESpecialArrayFunctionSymbol
"III:I:I"
...
...
@@ -763,9 +776,9 @@ BEDynamicTempTypeSymbol a0 = code {
ccall
BEDynamicTempTypeSymbol
":I:I"
}
;
// BESymbolP BEDynamicTempTypeSymbol ();
kBEVersionCurrent
:==
0x0200021
4
;
kBEVersionCurrent
:==
0x0200021
5
;
kBEVersionOldestDefinition
:==
0x02000213
;
kBEVersionOldestImplementation
:==
0x0200021
4
;
kBEVersionOldestImplementation
:==
0x0200021
5
;
kBEDebug
:==
1
;
kPredefinedModuleIndex
:==
1
;
BENoAnnot
:==
0
;
...
...
@@ -838,6 +851,13 @@ BESelector_N:==5;
BEUpdateDummy
:==
0
;
BEUpdate
:==
1
;
BEUpdate_U
:==
2
;
BESpecialIdentStdMisc
:==
0
;
BESpecialIdentAbort
:==
1
;
BESpecialIdentUndef
:==
2
;
BESpecialIdentStdBool
:==
3
;
BESpecialIdentAnd
:==
4
;
BESpecialIdentOr
:==
5
;
BESpecialIdentCount
:==
6
;
BELhsNodeId
:==
0
;
BERhsNodeId
:==
1
;
BEIsNotACaf
:==
0
;
...
...
backend/backendconvert.icl
View file @
5c8aeef4
...
...
@@ -363,6 +363,10 @@ beNoUniVarEquations
:==
beFunction0
BENoUniVarEquations
beUniVarEquationsList
:==
beFunction2
BEUniVarEquationsList
beBindSpecialModule
specialIdentIndex
moduleIndex
:==
beApFunction0
(
BEBindSpecialModule
specialIdentIndex
moduleIndex
)
beBindSpecialFunction
specialIdentIndex
functionIndex
moduleIndex
:==
beApFunction0
(
BEBindSpecialFunction
specialIdentIndex
functionIndex
moduleIndex
)
// temporary hack
beDynamicTempTypeSymbol
...
...
@@ -483,6 +487,7 @@ backEndConvertModulesH predefs {fe_icl =
with
dcl_common
=
currentDcl
.
dcl_common
#
backEnd
=
bindSpecialIdents
predefs
icl_used_module_numbers
backEnd
#!
backEnd
=
removeExpandedTypesFromDclModules
fe_dcls
icl_used_module_numbers
backEnd
=
(
backEnd
-*->
"backend done"
)
where
...
...
@@ -1076,6 +1081,47 @@ predefineSymbols {dcl_common} predefs
// ... sanity check
=
appBackEnd
(
BEPredefineConstructorSymbol
arity
predefs
.[
index
].
pds_def
cPredefinedModuleIndex
symbolKind
)
bindSpecialIdents
::
PredefinedSymbols
NumberSet
->
BackEnder
bindSpecialIdents
predefs
usedModules
=
foldState
(
bindSpecialModule
predefs
usedModules
)
specialModules
where
bindSpecialModule
::
PredefinedSymbols
NumberSet
(
Int
,
BESpecialIdentIndex
,
[(
Int
,
BESpecialIdentIndex
)])
->
BackEnder
bindSpecialModule
predefs
usedModules
(
predefIndex
,
specialIdentIndex
,
specialFunctions
)
|
moduleIndex
==
NoIndex
||
not
(
inNumberSet
moduleIndex
usedModules
)
=
identity
// otherwise
=
beBindSpecialModule
specialIdentIndex
moduleIndex
o`
foldState
(
bindSpecialFunction
predefs
)
specialFunctions
where
predef
=
predefs
.[
predefIndex
]
moduleIndex
=
predef
.
pds_def
bindSpecialFunction
::
PredefinedSymbols
(
Int
,
BESpecialIdentIndex
)
->
BackEnder
bindSpecialFunction
predefs
(
predefIndex
,
specialIdentIndex
)
|
predef
.
pds_def
==
NoIndex
=
identity
// otherwise
=
beBindSpecialFunction
specialIdentIndex
predef
.
pds_def
predef
.
pds_module
where
predef
=
predefs
.[
predefIndex
]
specialModules
=
[
(
PD_StdMisc
,
BESpecialIdentStdMisc
,
[
(
PD_abort
,
BESpecialIdentAbort
)
,
(
PD_undef
,
BESpecialIdentUndef
)
]
)
,
(
PD_StdBool
,
BESpecialIdentStdBool
,
[
(
PD_AndOp
,
BESpecialIdentAnd
)
,
(
PD_OrOp
,
BESpecialIdentOr
)
]
)
]
adjustStrictListFunctions
::
[
Int
]
[
Int
]
{#
PredefinedSymbol
}
{#
DclModule
}
NumberSet
Int
*
BackEndState
->
*
BackEndState
;
adjustStrictListFunctions
list_first_instance_indices
tail_strict_list_first_instance_indices
predefs
dcls
used_module_numbers
main_dcl_module_n
backEnd
|
std_strict_list_module_index
==
NoIndex
||
not
(
inNumberSet
std_strict_list_module_index
used_module_numbers
)
...
...
backendC/CleanCompilerSources/backend.c
View file @
5c8aeef4
...
...
@@ -170,6 +170,9 @@ static SymbolP gTupleSelectSymbols [MaxNodeArity];
static
int
number_of_node_ids
=
0
;
typedef
IdentP
*
IdentH
;
static
IdentH
gSpecialIdents
[
BESpecialIdentCount
];
static
IdentP
Identifier
(
char
*
name
)
{
...
...
@@ -536,6 +539,37 @@ GetArrayFunctionType (SymbDefP sdef, TypeNode *elementTypeP, TypeNode *arrayType
}
}
/* GetArrayFunctionType */
void
BEBindSpecialModule
(
BESpecialIdentIndex
index
,
int
moduleIndex
)
{
BEModuleP
module
;
Assert
(
index
>=
0
&&
index
<
BESpecialIdentCount
);
Assert
((
unsigned
int
)
moduleIndex
<
gBEState
.
be_nModules
);
module
=
&
gBEState
.
be_modules
[
moduleIndex
];
(
*
gSpecialIdents
[
index
])
->
ident_name
=
module
->
bem_name
;
}
/* BEBindSpecialModule */
void
BEBindSpecialFunction
(
BESpecialIdentIndex
index
,
int
functionIndex
,
int
moduleIndex
)
{
SymbolP
functionSymbol
;
BEModuleP
module
;
Assert
(
index
>=
0
&&
index
<
BESpecialIdentCount
);
Assert
((
unsigned
int
)
moduleIndex
<
gBEState
.
be_nModules
);
module
=
&
gBEState
.
be_modules
[
moduleIndex
];
Assert
((
unsigned
int
)
functionIndex
<
module
->
bem_nFunctions
);
functionSymbol
=
&
module
->
bem_functions
[
functionIndex
];
if
(
functionSymbol
->
symb_kind
==
definition
)
*
gSpecialIdents
[
index
]
=
functionSymbol
->
symb_def
->
sdef_ident
;
}
/* BEBindSpecialFunction */
BESymbolP
BESpecialArrayFunctionSymbol
(
BEArrayFunKind
arrayFunKind
,
int
functionIndex
,
int
moduleIndex
)
{
...
...
@@ -3522,7 +3556,6 @@ BEInit (int argc)
/* +++ remove symbol table from backend */
ScanInitIdentStringTable
();
InitScanner
();
/* for inlining */
DeltaBId
=
Identifier
(
"StdBool"
);
ApplyId
=
Identifier
(
"AP"
);
ListId
=
Identifier
(
"List"
);
TupleId
=
Identifier
(
"Tuple"
);
...
...
@@ -3535,6 +3568,23 @@ BEInit (int argc)
DynamicId
=
Identifier
(
"Dynamic"
);
#endif
#if SA_RECOGNIZES_ABORT_AND_UNDEF
StdMiscId
=
Identifier
(
"StdMisc"
);
abort_id
=
NULL
;
undef_id
=
NULL
;
gSpecialIdents
[
BESpecialIdentStdMisc
]
=
&
StdMiscId
;
gSpecialIdents
[
BESpecialIdentAbort
]
=
&
abort_id
;
gSpecialIdents
[
BESpecialIdentUndef
]
=
&
undef_id
;
#endif
DeltaBId
=
Identifier
(
"StdBool"
);
AndId
=
NULL
;
OrId
=
NULL
;
gSpecialIdents
[
BESpecialIdentStdBool
]
=
&
DeltaBId
;
gSpecialIdents
[
BESpecialIdentAnd
]
=
&
AndId
;
gSpecialIdents
[
BESpecialIdentOr
]
=
&
OrId
;
UserDefinedArrayFunctions
=
NULL
;
#if STRICT_LISTS
unboxed_record_cons_list
=
NULL
;
...
...
backendC/CleanCompilerSources/backend.h
View file @
5c8aeef4
/* version info */
// increment this for every release
# define kBEVersionCurrent 0x0200021
4
# define kBEVersionCurrent 0x0200021
5
// change this to the same value as kBEVersionCurrent if the new release is
not
// upward compatible (for example when a function is added)
// change this to the same value as kBEVersionCurrent if the new release is
//
not
upward compatible (for example when a function is added)
# define kBEVersionOldestDefinition 0x02000213
// change this to the same value as kBEVersionCurrent if the new release is
not
// downward compatible (for example when a function is removed)
# define kBEVersionOldestImplementation 0x0200021
4
// change this to the same value as kBEVersionCurrent if the new release is
//
not
downward compatible (for example when a function is removed)
# define kBEVersionOldestImplementation 0x0200021
5
# define kBEDebug 1
...
...
@@ -161,7 +161,15 @@ enum {
BEUpdateDummy
,
BEUpdate
,
BEUpdate_U
};
typedef
int
BESpecialIdentIndex
;
Clean
(
::
BESpecialIdentIndex
:==
Int
)
enum
{
/* StdMisc */
BESpecialIdentStdMisc
,
BESpecialIdentAbort
,
BESpecialIdentUndef
,
BESpecialIdentStdBool
,
BESpecialIdentAnd
,
BESpecialIdentOr
,
BESpecialIdentCount
};
/* functions */
void
BEGetVersion
(
int
*
current
,
int
*
oldestDefinition
,
int
*
oldestImplementation
);
...
...
@@ -179,6 +187,12 @@ Clean (BEArg :: String BackEnd -> BackEnd)
void
BEDeclareModules
(
int
nModules
);
Clean
(
BEDeclareModules
::
Int
BackEnd
->
BackEnd
)
void
BEBindSpecialModule
(
BESpecialIdentIndex
index
,
int
moduleIndex
);
Clean
(
BEBindSpecialModule
::
BESpecialIdentIndex
Int
BackEnd
->
BackEnd
)
void
BEBindSpecialFunction
(
BESpecialIdentIndex
index
,
int
functionIndex
,
int
moduleIndex
);
Clean
(
BEBindSpecialFunction
::
BESpecialIdentIndex
Int
Int
BackEnd
->
BackEnd
)
BESymbolP
BESpecialArrayFunctionSymbol
(
BEArrayFunKind
arrayFunKind
,
int
functionIndex
,
int
moduleIndex
);
Clean
(
BESpecialArrayFunctionSymbol
::
BEArrayFunKind
Int
Int
BackEnd
->
(
BESymbolP
,
BackEnd
))
...
...
backendC/CleanCompilerSources/compiledefines.h
View file @
5c8aeef4
...
...
@@ -18,7 +18,7 @@
#define WRITE_DCL_MODIFICATION_TIME 1
#define SA_RECOGNIZES_ABORT_AND_UNDEF
0
#define SA_RECOGNIZES_ABORT_AND_UNDEF
1
#define STRICT_LISTS 1
...
...
coclmaindll/backend.dll
View file @
5c8aeef4
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment