|
@@ -19,6 +19,11 @@ class ModelverseKernel(object):
|
|
|
self.allow_compiled = True
|
|
|
#self.allow_compiled = False
|
|
|
|
|
|
+ # suggested_function_names maps body ids to suggested function names.
|
|
|
+ # You tell the kernel to stop caring about getting the function names
|
|
|
+ # right by setting this to `None`.
|
|
|
+ self.suggested_function_names = {}
|
|
|
+
|
|
|
# `self.jit` handles most JIT-related functionality.
|
|
|
self.jit = jit.ModelverseJit()
|
|
|
if self.allow_compiled:
|
|
@@ -143,9 +148,15 @@ class ModelverseKernel(object):
|
|
|
parameters["username"] = username
|
|
|
parameters["mvk"] = self
|
|
|
|
|
|
+ # Try to retrieve the suggested name.
|
|
|
+ if self.suggested_function_names is not None and inst in self.suggested_function_names:
|
|
|
+ suggested_name = self.suggested_function_names[inst]
|
|
|
+ else:
|
|
|
+ suggested_name = None
|
|
|
+
|
|
|
# Have the JIT compile the function.
|
|
|
try:
|
|
|
- jit_gen = self.jit.jit_compile(user_root, inst)
|
|
|
+ jit_gen = self.jit.jit_compile(user_root, inst, suggested_name)
|
|
|
inp = None
|
|
|
while 1:
|
|
|
inp = yield jit_gen.send(inp)
|
|
@@ -468,6 +479,15 @@ class ModelverseKernel(object):
|
|
|
compiler_body, = yield [("RD", [compiler_val, "body"])]
|
|
|
self.jit.register_compiled(compiler_body, compiled_function, var_name)
|
|
|
|
|
|
+ # If we're dealing with a function, then we might want to figure out what its body id
|
|
|
+ # is now so we can suggest a name to the JIT later.
|
|
|
+ if self.suggested_function_names is not None:
|
|
|
+ compiler_val, = yield [("RD", [variable, "value"])]
|
|
|
+ if compiler_val is not None:
|
|
|
+ compiler_body, = yield [("RD", [compiler_val, "body"])]
|
|
|
+ if compiler_body is not None:
|
|
|
+ self.suggested_function_names[compiler_body] = var_name
|
|
|
+
|
|
|
else:
|
|
|
phase_link, returnvalue_link, new_phase = \
|
|
|
yield [("RDE", [user_frame, "phase"]),
|