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 committed by Sebastien Bourdeauducq
parent 49baba26e3
commit 90e2e22765
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))
class Stitcher:
def __init__(self, core, dmgr, engine=None):
def __init__(self, core, dmgr, engine=None, print_as_rpc=True):
self.core = core
self.dmgr = dmgr
if engine is None:
@ -715,7 +715,8 @@ class Stitcher:
# We don't want some things from the prelude as they are provided in
# the host Python namespace and gain special meaning when quoted.
self.prelude = prelude.globals()
self.prelude.pop("print")
if print_as_rpc:
self.prelude.pop("print")
self.prelude.pop("array")
self.functions = {}

View File

@ -81,11 +81,13 @@ class Core:
self.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:
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.finalize()

View File

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