def compile(self, path, module_name, output=None, allow_caching=True): if output == None: output = module_name output_path = os.path.join(self.destdir, output + '.bc') print 'M', module_name if allow_caching: try: output_modified = os.path.getmtime(output_path) input_modified = os.path.getmtime(path) if input_modified <= output_modified: return except (OSError, IOError): pass data = open(path, 'r').read() compiled = ir.execute(data) self.scan_imports(module_name, compiled) serialized = serialize.serialize(compiled, filename=path) output = open(output_path, 'w') output.write(serialized) output.close()
def compile(self, path, module_name, output=None, allow_caching=True): if output == None: output = module_name output_path = os.path.join(self.destdir, output + ".bc") print "M", module_name if allow_caching: try: output_modified = os.path.getmtime(output_path) input_modified = os.path.getmtime(path) if input_modified <= output_modified: return except (OSError, IOError): pass data = open(path, "r").read() compiled = ir.execute(data) self.scan_imports(module_name, compiled) serialized = serialize.serialize(compiled, filename=path) output = open(output_path, "w") output.write(serialized) output.close()
self.pack_uint(len(name)) self.write(name) self.serialize(code, filename=fn) def serialize(obj, filename=None): serializer = Serializer() serializer.serialize(obj, filename) return serializer.out.getvalue() def _serialize_uint(u): serializer = Serializer() serializer.pack_uint(u) return serializer.out.getvalue() def test(obj): import os data = serialize(obj) w = os.popen('cd ..; java pyjvm.Main', 'w') w.write(data) w.close() if __name__ == '__main__': import ir, sys val = ir.execute(sys.stdin.read()) fn = sys.argv[1] if sys.argv[1:] else '' sys.stdout.write(serialize(val, filename=fn))
def execute(code): import ir instr = ir.execute(code) return instr
self.write('D') self.pack_uint(len(archive)) for name, code, fn in archive: self.pack_uint(len(name)) self.write(name) self.serialize(code, filename=fn) def serialize(obj, filename=None): serializer = Serializer() serializer.serialize(obj, filename) return serializer.out.getvalue() def _serialize_uint(u): serializer = Serializer() serializer.pack_uint(u) return serializer.out.getvalue() def test(obj): import os data = serialize(obj) w = os.popen('cd ..; java pyjvm.Main', 'w') w.write(data) w.close() if __name__ == '__main__': import ir, sys val = ir.execute(sys.stdin.read()) fn = sys.argv[1] if sys.argv[1:] else '' sys.stdout.write(serialize(val, filename=fn))
for instr in main_instr.sibiligs(): instr.eliminate_setlocal() main_instr.fix_setlocal() while main_instr.is_nop() and len(main_instr.next) == 1 and main_instr.next[0]: main_instr, = main_instr.next if argcount is not None: while len(load_args) < argcount: load_args.append(main_instr.varcount + len(load_args)) if argcount is not None: return Function(argcount=argcount, body=main_instr, varcount=main_instr.varcount, loadargs=load_args) else: return main_instr def execute(code): import transformer v = transformer.execute(code) instr = cmdlist_to_instr(v.cmds) return instr def executeOnFile(name): return execute(open(name).read()) if __name__ == '__main__': import ir ir.execute(sys.stdin.read()).dump()