Skip to content

Commit

Permalink
- Removed the SimCode helper that boxed constants in lists during cod…
Browse files Browse the repository at this point in the history
…egen (all expressions now contain boxed types, so this hack is no longer needed)

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@7559 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Dec 23, 2010
1 parent 04a4bd7 commit 74937e8
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 58 deletions.
4 changes: 2 additions & 2 deletions Compiler/FrontEnd/Types.mo
Expand Up @@ -4258,8 +4258,8 @@ algorithm
case (e as DAE.ARRAY(DAE.ET_ARRAY(ty = t),_,elist),(DAE.T_ARRAY(arrayType=t1),_),(DAE.T_LIST(t2),p2),printFailtrace)
equation
true = RTOpts.acceptMetaModelicaGrammar();
(elist_1, tys1) = matchTypeList(elist, t1, t2, printFailtrace);
(elist_1, t2) = listMatchSuperType(elist_1, tys1, printFailtrace);
t2 = boxIfUnboxedType(t2);
(elist_1, _) = matchTypeList(elist, t1, t2, printFailtrace);
t = elabType(t2);
e_1 = DAE.LIST(t,elist_1);
t2 = (DAE.T_LIST(t2),NONE());
Expand Down
61 changes: 5 additions & 56 deletions Compiler/susan_codegen/SimCode/SimCodeC.tpl
Expand Up @@ -3339,19 +3339,6 @@ template funArgUnbox(Variable var, Text &varDecls, Text &varBox)
::=
match var
case VARIABLE(__) then
/*match ty
case ET_COMPLEX(complexClassType = RECORD(__)) then
let varName = crefStr(varname)
unboxRecord(varName, ty, &varBox, &varDecls)
else
let shortType = mmcExpTypeShort(ty)
if shortType then
let type = 'mmc_unbox_<%shortType%>_rettype'
let tmpVar = tempDecl('mmc_unbox_<%shortType%>_rettype', &varDecls)
let &varBox += '<%tmpVar%> = mmc_unbox_<%shortType%>(<%crefStr(varname)%>);<%\n%>'
tmpVar
else
crefStr(varname)*/
let varName = contextCref(name,contextFunction)
unboxVariable(varName, ty, &varBox, &varDecls)
case FUNCTION_PTR(__) then // Function pointers don't need to be boxed.
Expand Down Expand Up @@ -5602,7 +5589,7 @@ template daeExpListToCons(list<Exp> listItems, Context context, Text &preExp /*B
match listItems
case {} then "MMC_REFSTRUCTLIT(mmc_nil)"
case e :: rest then
let expPart = daeExpMetaHelperConstant(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let expPart = daeExp(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let restList = daeExpListToCons(rest, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
<<
mmc_mk_cons(<%expPart%>, <%restList%>)
Expand All @@ -5617,7 +5604,7 @@ template daeExpCons(Exp exp, Context context, Text &preExp /*BUFP*/,
match exp
case CONS(__) then
let tmp = tempDecl("modelica_metatype", &varDecls /*BUFD*/)
let carExp = daeExpMetaHelperConstant(car, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let carExp = daeExp(car, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let cdrExp = daeExp(cdr, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let &preExp += '<%tmp%> = mmc_mk_cons(<%carExp%>, <%cdrExp%>);<%\n%>'
tmp
Expand All @@ -5631,8 +5618,7 @@ template daeExpMetaTuple(Exp exp, Context context, Text &preExp /*BUFP*/,
match exp
case META_TUPLE(__) then
let start = daeExpMetaHelperBoxStart(listLength(listExp))
let args = (listExp |> e =>
daeExpMetaHelperConstant(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let args = (listExp |> e => daeExp(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
;separator=", ")
let tmp = tempDecl("modelica_metatype", &varDecls /*BUFD*/)
let &preExp += '<%tmp%> = mmc_mk_box<%start%>0<%if args then ", "%><%args%>);<%\n%>'
Expand All @@ -5648,7 +5634,7 @@ template daeExpMetaOption(Exp exp, Context context, Text &preExp /*BUFP*/,
case META_OPTION(exp=NONE()) then
"mmc_mk_none()"
case META_OPTION(exp=SOME(e)) then
let expPart = daeExpMetaHelperConstant(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
let expPart = daeExp(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
'mmc_mk_some(<%expPart%>)'
end daeExpMetaOption;

Expand All @@ -5662,7 +5648,7 @@ case METARECORDCALL(__) then
let newIndex = incrementInt(index, 3)
let argsStr = if args then
', <%args |> exp =>
daeExpMetaHelperConstant(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
daeExp(exp, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
;separator=", "%>'
else
""
Expand All @@ -5672,43 +5658,6 @@ case METARECORDCALL(__) then
tmp
end daeExpMetarecordcall;


template daeExpMetaHelperConstant(Exp e, Context context, Text &preExp /*BUFP*/,
Text &varDecls /*BUFP*/)
"Generates a constant meta modelica value."
::=
let expPart = daeExp(e, context, &preExp /*BUFC*/, &varDecls /*BUFD*/)
daeExpMetaHelperConstantNameType(expPart, Expression.typeof(e),
&preExp /*BUFC*/, &varDecls /*BUFD*/)
end daeExpMetaHelperConstant;


template daeExpMetaHelperConstantNameType(Text varname, ExpType type,
Text &preExp /*BUFP*/,
Text &varDecls /*BUFP*/)
"Helper to daeExpMetaHelperConstant."
::=
match type
case ET_INT(__) then 'mmc_mk_icon(<%varname%>)'
case ET_BOOL(__) then 'mmc_mk_icon(<%varname%>)'
case ET_REAL(__) then 'mmc_mk_rcon(<%varname%>)'
case ET_STRING(__) then 'mmc_mk_scon(<%varname%>)'
case ET_ENUMERATION(__) then 'mmc_mk_icon(<%varname%>)'
case ET_COMPLEX(name=cname) then
let start = daeExpMetaHelperBoxStart(incrementInt(listLength(varLst), 1))
let args = if varLst then
', <%varLst |> v as COMPLEX_VAR(name=cvname) =>
let nameText = '<%varname%>.<%cvname%>'
daeExpMetaHelperConstantNameType(nameText, tp,
&preExp /*BUFC*/, &varDecls /*BUFD*/)
;separator=", "%>'
else
""
'mmc_mk_box<%start%>2, &<%underscorePath(cname)%>__desc<%args%>)'
else varname
end daeExpMetaHelperConstantNameType;


template daeExpMetaHelperBoxStart(Integer numVariables)
"Helper to determine how mmc_mk_box should be called."
::=
Expand Down

0 comments on commit 74937e8

Please sign in to comment.