if __name__ == "__main__": import sys, compiler import logging.config from p3declassify import P3Declassify from p3wrapper import P3Wrapper from p3uniquifyvars import P3UniquifyVars from gcflattener import GCFlattener from gcrefcount import GCRefCount if len(sys.argv) < 2: sys.exit(1) # configure logging logging.config.fileConfig('logging.cfg') testcases = sys.argv[1:] for testcase in testcases: varalloc = VariableAllocator() declassify = P3Declassify(varalloc) wrapper = P3Wrapper() gcflatten = GCFlattener(varalloc) uniquify = P3UniquifyVars() explicator = P3Explicate(varalloc, handleLambdas=False) gcrefcount = GCRefCount(varalloc) ast = compiler.parseFile(testcase) ast = declassify.transform(ast) ast = wrapper.transform(ast) ast = uniquify.transform(ast) ast = gcflatten.transform(ast) ast = gcrefcount.transform(ast) print prettyAST(explicator.transform(ast))
# # configure logging # logging.config.fileConfig('logging.cfg') logging.basicConfig(level=logging.ERROR) logging.disable(logging.ERROR) sys.setrecursionlimit(10000) testcases = sys.argv[1:] for testcase in testcases: logger.info("Working on test case '%s'" % testcase) # instantiate all classes needed for our pipeline varalloc = VariableAllocator() declassify = P3Declassify(varalloc) wrapper = P3Wrapper() uniquify = P3UniquifyVars() gcflattener = GCFlattener(varalloc) gcrefcount = GCRefCount(varalloc) explicator = P3Explicate(varalloc,handleLambdas=False) heap = P3Heapify(explicator) closer = P3ClosureConversion(explicator, varalloc) flattener = P3Flattener(varalloc) instruction_selector = P3InstructionSelector(varalloc) ifinsselector = P3IfInstructionSelector(varalloc,instruction_selector.labelalloc) generator = P3Generator(allowMem2Mem=True) # send the AST through the pipeline ast = compiler.parseFile(testcase) ast = declassify.transform(ast) ast = wrapper.transform(ast) ast = uniquify.transform(ast) ast = gcflattener.transform(ast)
from p3explicate import P3Explicate from p3heapify import P3Heapify from p3closureconvert import P3ClosureConversion from p3flattener import P3Flattener from p3insselector import P3InstructionSelector if len(sys.argv) < 2: sys.exit(1) # configure logging logging.config.fileConfig('logging.cfg') testcases = sys.argv[1:] for testcase in testcases: varalloc = VariableAllocator() declassify = P3Declassify(varalloc) unique = P3UniquifyVars() wrapper = P3Wrapper() gcflatten = GCFlattener(varalloc) gcrefcount = GCRefCount(varalloc) explicator = P3Explicate(varalloc, handleLambdas=False) heap = P3Heapify(explicator) closure = P3ClosureConversion(explicator, varalloc) flatten = P3Flattener(varalloc) insselector = P3InstructionSelector(varalloc) ast = compiler.parseFile(testcase) ast = declassify.transform(ast) ast = wrapper.transform(ast) ast = unique.transform(ast) ast = gcflatten.transform(ast) ast = gcrefcount.transform(ast) ast = explicator.explicate(ast) ast = heap.transform(ast)
def visit_Compare(self, node, *args, **kwargs): return node if __name__ == "__main__": import compiler, sys import logging.config if len(sys.argv) < 2: sys.exit(1) # configure logging logging.config.fileConfig('logging.cfg') testcases = sys.argv[1:] for testcase in testcases: varalloc = VariableAllocator() declassify = P3Declassify(varalloc) wrapper = P3Wrapper() unique = P3UniquifyVars() flatten = GCFlattener(varalloc,True) refcount = GCRefCount(varalloc) ast = compiler.parseFile(testcase) ast = declassify.transform(ast) ast = wrapper.transform(ast) ast = unique.transform(ast) ast = flatten.transform(ast) ast = refcount.transform(ast) print ast print prettyAST(ast)