artiq_compile: make print() write to core log, not an invalid op.

Fixes #710.
This commit is contained in:
whitequark 2017-04-11 03:16:34 +00:00
parent f314f8b8f5
commit 1bd4d13391
3 changed files with 8 additions and 5 deletions

View File

@ -699,7 +699,7 @@ class TypedtreeHasher(algorithm.Visitor):
return hash(tuple(freeze(getattr(node, field_name)) for field_name in fields)) return hash(tuple(freeze(getattr(node, field_name)) for field_name in fields))
class Stitcher: class Stitcher:
def __init__(self, core, dmgr, engine=None): def __init__(self, core, dmgr, engine=None, print_as_rpc=True):
self.core = core self.core = core
self.dmgr = dmgr self.dmgr = dmgr
if engine is None: if engine is None:
@ -715,6 +715,7 @@ class Stitcher:
# We don't want some things from the prelude as they are provided in # We don't want some things from the prelude as they are provided in
# the host Python namespace and gain special meaning when quoted. # the host Python namespace and gain special meaning when quoted.
self.prelude = prelude.globals() self.prelude = prelude.globals()
if print_as_rpc:
self.prelude.pop("print") self.prelude.pop("print")
self.prelude.pop("array") self.prelude.pop("array")

View File

@ -82,11 +82,13 @@ class Core:
self.core = self self.core = self
self.comm.core = self self.comm.core = self
def compile(self, function, args, kwargs, set_result=None, attribute_writeback=True): def compile(self, function, args, kwargs, set_result=None,
attribute_writeback=True, print_as_rpc=True):
try: try:
engine = _DiagnosticEngine(all_errors_are_fatal=True) engine = _DiagnosticEngine(all_errors_are_fatal=True)
stitcher = Stitcher(engine=engine, core=self, dmgr=self.dmgr) stitcher = Stitcher(engine=engine, core=self, dmgr=self.dmgr,
print_as_rpc=print_as_rpc)
stitcher.stitch_call(function, args, kwargs, set_result) stitcher.stitch_call(function, args, kwargs, set_result)
stitcher.finalize() stitcher.finalize()

View File

@ -55,7 +55,7 @@ def main():
object_map, kernel_library, _, _ = \ object_map, kernel_library, _, _ = \
core.compile(exp.run, [exp_inst], {}, core.compile(exp.run, [exp_inst], {},
attribute_writeback=False) attribute_writeback=False, print_as_rpc=False)
except CompileError as error: except CompileError as error:
return return
finally: finally: