|
@@ -29,7 +29,6 @@ class ModelverseKernel(object):
|
|
|
#
|
|
|
self.request_handlers = {}
|
|
|
self.allow_compiled = True
|
|
|
- #self.allow_compiled = False
|
|
|
|
|
|
# `self.jit` handles most JIT-related functionality.
|
|
|
self.jit = jit.ModelverseJit()
|
|
@@ -194,15 +193,12 @@ class ModelverseKernel(object):
|
|
|
" " * (nested_indent + 1) + "val, = yield [('RD', [_inputs, 'value'])]\n" + \
|
|
|
" " * (nested_indent + 1) + "if val is not None:\n" + \
|
|
|
" " * (nested_indent + 2) + "val_e, = yield [('RDE', [_inputs, 'value'])]\n" + \
|
|
|
- " " * (nested_indent + 2) + "yield [('DE', [val_e])]\n" + \
|
|
|
- " " * (nested_indent + 2) + "val_e, = yield [('RDE', [_root, 'input'])]\n" + \
|
|
|
- " " * (nested_indent + 2) + "yield [('DE', [val_e])]\n" + \
|
|
|
- " " * (nested_indent + 2) + "nxt, = yield [('RD', [_inputs, 'next'])]\n" + \
|
|
|
+ " " * (nested_indent + 2) + "_, val_e = yield [('DE', [val_e]), ('RDE', [_root, 'input'])]\n" + \
|
|
|
+ " " * (nested_indent + 2) + "_, nxt = yield [('DE', [val_e]), ('RD', [_inputs, 'next'])]\n" + \
|
|
|
" " * (nested_indent + 2) + "yield [('CD', [_root, 'input', nxt])]\n" + \
|
|
|
" " * (nested_indent + 2) + "_result = val\n" + \
|
|
|
" " * (nested_indent + 2) + "break\n" + \
|
|
|
" " * (nested_indent + 1) + "else:\n" + \
|
|
|
- " " * (nested_indent + 2) + "print('WAIT FOR INPUT...')\n" + \
|
|
|
" " * (nested_indent + 2) + "yield None\n"
|
|
|
instruction = "_result"
|
|
|
|
|
@@ -210,13 +206,9 @@ class ModelverseKernel(object):
|
|
|
value, = yield [("RD", [inst, "value"])]
|
|
|
(prev, inst), = yield [("CALL_ARGS", [self.print_instruction, (value, 0, indent)])]
|
|
|
instruction = prev + \
|
|
|
- " " * indent + "_outputs, = yield [('RD', [_root, 'last_output'])]\n" + \
|
|
|
- " " * indent + "_outputs_e, = yield [('RDE', [_root, 'last_output'])]\n" + \
|
|
|
- " " * indent + "yield [('CD', [_outputs, 'value', %s])]\n" % inst + \
|
|
|
- " " * indent + "_new, = yield [('CN', [])]\n" + \
|
|
|
- " " * indent + "yield [('CD', [_outputs, 'next', _new])]\n" + \
|
|
|
- " " * indent + "yield [('DE', [_outputs_e])]\n" + \
|
|
|
- " " * indent + "yield [('CD', [_root, 'last_output', _new])]\n"
|
|
|
+ " " * indent + "_outputs, _outputs_e = yield [('RD', [_root, 'last_output']), ('RDE', [_root, 'last_output'])]\n" + \
|
|
|
+ " " * indent + "_, _new = yield [('CD', [_outputs, 'value', %s]), ('CN', [])]\n" % inst+ \
|
|
|
+ " " * indent + "yield [('CD', [_outputs, 'next', _new]), ('DE', [_outputs_e]), ('CD', [_root, 'last_output', _new])]\n"
|
|
|
|
|
|
elif inst_type["value"] == "resolve":
|
|
|
value, = yield [("RD", [inst, "var"])]
|
|
@@ -224,12 +216,8 @@ class ModelverseKernel(object):
|
|
|
if str_value:
|
|
|
# Is a global
|
|
|
prev = \
|
|
|
- " " * nested_indent + "if '%s' not in _cache:\n" % str_value + \
|
|
|
- " " * (nested_indent + 1) + "%s, = yield [('RD', [_globs, '%s'])]\n" % (str_value, str_value) + \
|
|
|
- " " * (nested_indent + 1) + "%s, = yield [('RD', [%s, 'value'])]\n" % (str_value, str_value) + \
|
|
|
- " " * (nested_indent + 1) + "_cache['%s'] = %s\n" % (str_value, str_value) + \
|
|
|
- " " * nested_indent + "else:\n" + \
|
|
|
- " " * (nested_indent + 1) + "%s = _cache['%s']\n" % (str_value, str_value)
|
|
|
+ " " * nested_indent + "%s, = yield [('RD', [_globs, '%s'])]\n" % (str_value, str_value) + \
|
|
|
+ " " * nested_indent + "%s, = yield [('RD', [%s, 'value'])]\n" % (str_value, str_value)
|
|
|
instruction = str_value
|
|
|
|
|
|
if self.jit.get_global_body_id(str_value) is None:
|
|
@@ -262,8 +250,7 @@ class ModelverseKernel(object):
|
|
|
" " * (nested_indent + 1) + "_var, = yield [('CN', [])]\n" + \
|
|
|
" " * (nested_indent + 1) + "yield [('CD', [_globs, '%s', _var])]\n" % instruction_var + \
|
|
|
" " * nested_indent + "_old_edge, = yield [('RDE', [_var, 'value'])]\n" + \
|
|
|
- " " * nested_indent + "yield [('CD', [_var, 'value', %s])]\n" % instruction_var + \
|
|
|
- " " * nested_indent + "yield [('DE', [_old_edge])]\n" + \
|
|
|
+ " " * nested_indent + "yield [('CD', [_var, 'value', %s]), ('DE', [_old_edge])]\n" % instruction_var + \
|
|
|
" " * nested_indent + "_mvk.jit.register_global('%s', %s)\n" % (instruction_var, instruction_var)
|
|
|
|
|
|
elif inst_type["value"] == "call":
|
|
@@ -341,8 +328,7 @@ class ModelverseKernel(object):
|
|
|
preamble = " _globs, = yield [('RD', [kwargs['task_root'], 'globals'])]\n" + \
|
|
|
" _root = kwargs['task_root']\n" + \
|
|
|
" _taskname = kwargs['taskname']\n" + \
|
|
|
- " _mvk = kwargs['mvk']\n" + \
|
|
|
- " _cache = {}\n"
|
|
|
+ " _mvk = kwargs['mvk']\n"
|
|
|
printed = preamble + prev + printed
|
|
|
#print("Total printed function: ")
|
|
|
if params:
|