Browse Source

Optimize for less kwargs accesses

Yentl Van Tendeloo 7 years ago
parent
commit
f069f80b3d
2 changed files with 14 additions and 10 deletions
  1. 13 9
      kernel/modelverse_kernel/main.py
  2. 1 1
      wrappers/modelverse_SCCD.py

+ 13 - 9
kernel/modelverse_kernel/main.py

@@ -258,16 +258,16 @@ class ModelverseKernel(object):
             instruction = "  " * indent + "continue\n"
 
         elif inst_type["value"] == "input":
-            prev = "  " * nested_indent + "_inputs, = yield [('RD', [kwargs['task_root'], 'input'])]\n" + \
+            prev = "  " * nested_indent + "_inputs, = yield [('RD', [_root, 'input'])]\n" + \
                    "  " * nested_indent + "while 1:\n" + \
                    "  " * (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', [kwargs['task_root'], 'input'])]\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) + "yield [('CD', [kwargs['task_root'], 'input', nxt])]\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" + \
@@ -278,13 +278,13 @@ 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', [kwargs['task_root'], 'last_output'])]\n" + \
-                          "  " * indent + "_outputs_e, = yield [('RDE', [kwargs['task_root'], 'last_output'])]\n" + \
+                          "  " * 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', [kwargs['task_root'], 'last_output', _new])]\n"
+                          "  " * indent + "yield [('CD', [_root, 'last_output', _new])]\n"
 
 
         elif inst_type["value"] == "resolve":
@@ -330,7 +330,7 @@ class ModelverseKernel(object):
                        "  " * 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 + "kwargs['mvk'].jit.register_global('%s', %s)\n" % (instruction_var, instruction_var)
+                       "  " * nested_indent + "_mvk.jit.register_global('%s', %s)\n" % (instruction_var, instruction_var)
 
         elif inst_type["value"] == "call":
             func_name, = yield [("RD", [inst, "func"])]
@@ -357,7 +357,7 @@ class ModelverseKernel(object):
                 value = "func_result_" + str(ModelverseKernel.counter)
                 ModelverseKernel.counter += 1
                 param_list = "{" + ", ".join(["'%s': %s" % (k, v) for k, v in param_list.items()]) + "}"
-                actual_computation = "%s, = yield [('CALL_ARGS', [kwargs['mvk'].execute_jit_internal, (kwargs['task_root'], %s, kwargs['taskname'], %s)])]\n" % (value, func_name, param_list)
+                actual_computation = "%s, = yield [('CALL_ARGS', [_mvk.execute_jit_internal, (_root, %s, _taskname, %s)])]\n" % (value, func_name, param_list)
 
                 if indent == 0:
                     # No indent, meaning that we use it inline
@@ -404,7 +404,11 @@ class ModelverseKernel(object):
 
         print("Reading function: %s" % suggested_name)
         (prev, printed), = yield [("CALL_ARGS", [self.print_instruction, (inst, 1)])]
-        printed = "  _globs, = yield [('RD', [kwargs['task_root'], 'globals'])]\n" + prev + printed
+        preamble = "  _globs, = yield [('RD', [kwargs['task_root'], 'globals'])]\n" + \
+                   "  _root = kwargs['task_root']\n" + \
+                   "  _taskname = kwargs['taskname']\n" + \
+                   "  _mvk = kwargs['mvk']\n"
+        printed = preamble + prev + printed
         print("Total printed function: ")
         if params:
             func = "def " + suggested_name + "(" + ", ".join([chr(ord('a') + i) for i in range(len(params))]) + ", **kwargs):\n" + "".join(["  var_%s = %s\n" % (param, chr(ord('a') + i)) for i, param in enumerate(params)]) + printed

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Tue Apr 24 07:14:54 2018
+Date:   Tue Apr 24 07:27:14 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server