Esempio n. 1
0
	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()
Esempio n. 2
0
    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()
Esempio n. 3
0
            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))
Esempio n. 4
0
def execute(code):
    import ir
    instr = ir.execute(code)
    return instr
Esempio n. 5
0
		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))
Esempio n. 6
0
	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()
Esempio n. 7
0
def execute(code):
	import ir
	instr = ir.execute(code)
	return instr