Bläddra i källkod

Compress some operations a bit

Yentl Van Tendeloo 7 år sedan
förälder
incheckning
4ab3ca9fdf
1 ändrade filer med 9 tillägg och 23 borttagningar
  1. 9 23
      kernel/modelverse_kernel/main.py

+ 9 - 23
kernel/modelverse_kernel/main.py

@@ -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: