import org.simantics.scl.compiler.types.TVar;
import org.simantics.scl.compiler.types.Type;
import org.simantics.scl.compiler.types.Types;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public final class SSAFunction extends SSAClosure {
+ private static final Logger LOGGER = LoggerFactory.getLogger(SSAFunction.class);
+
TVar[] typeParameters;
Type effect;
SSABlock firstBlock;
// Add valid variables and continuations
context.validContinuations.add(returnCont);
- for(SSABlock block = firstBlock; block != null; block = block.next) {
+ for(SSABlock block = firstBlock; block != null; block = block.next) {
context.validContinuations.add(block);
for(BoundVar parameter : block.parameters)
context.validBoundVariables.add(parameter);
}
public void mergeBlocks(SSAFunction function) {
+ if(this == function)
+ throw new InternalCompilerError();
SSABlock block = function.firstBlock;
while(block != null) {
SSABlock next = block.next;
block.forValRefs(visitor);
}
+ @Override
+ public void cleanup() {
+ for(SSABlock block = firstBlock; block != null; block = block.next)
+ block.cleanup();
+ }
}