+ // TODO this is quite heavy way for inlining constants\r
+ for(int i=0;i<parameters.length;++i) {\r
+ ValRef parameter = parameters[i];\r
+ Val value = parameter.getBinding();\r
+ if(!(value instanceof SCLConstant))\r
+ continue;\r
+ SCLConstant constant = (SCLConstant)value;\r
+ if(constant.inlineArity != 0)\r
+ continue;\r
+ SSAFunction definition = constant.definition;\r
+ SSABlock block = definition.getFirstBlock();\r
+ if(block.getFirstStatement() != null || !(block.getExit() instanceof Jump))\r
+ continue;\r
+ Jump jump = (Jump)block.getExit();\r
+ if(jump.getTarget().getBinding() != definition.getReturnCont())\r
+ continue;\r
+ if(jump.getParameter(0).getTypeParameters().length > 0)\r
+ continue;\r
+ parameter.replaceBy(jump.getParameter(0).getBinding());\r
+ }\r