Skip to content

Commit

Permalink
compiler.embedding.Stitcher: refactor.
Browse files Browse the repository at this point in the history
  • Loading branch information
whitequark committed Aug 10, 2015
1 parent 4647651 commit 62e6f8a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
17 changes: 15 additions & 2 deletions artiq/compiler/embedding.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ def _map(self, obj):
self.inverse_rpc_map[obj_id] = self.next_rpc
return self.next_rpc

def _iterate(self):
def finalize(self):
inferencer = Inferencer(engine=self.engine)

# Iterate inference to fixed point.
Expand Down Expand Up @@ -414,4 +414,17 @@ def stitch_call(self, function, args, kwargs):
synthesizer.finalize()
self.typedtree.append(call_node)

self._iterate()
def finalize(self):
inferencer = Inferencer(engine=self.engine)

# Iterate inference to fixed point.
self.inference_finished = False
while not self.inference_finished:
self.inference_finished = True
inferencer.visit(self.typedtree)

# After we have found all functions, synthesize a module to hold them.
source_buffer = source.Buffer("", "<synthesized>")
self.typedtree = asttyped.ModuleT(
typing_env=self.globals, globals_in_scope=set(),
body=self.typedtree, loc=source.Range(source_buffer, 0, 0))
1 change: 1 addition & 0 deletions artiq/coredevice/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def compile(self, function, args, kwargs, with_attr_writeback=True):

stitcher = Stitcher(engine=engine)
stitcher.stitch_call(function, args, kwargs)
stitcher.finalize()

module = Module(stitcher)
target = OR1KTarget()
Expand Down

0 comments on commit 62e6f8a

Please sign in to comment.