|
@@ -2,6 +2,8 @@ import modelverse_kernel.primitives as primitive_functions
|
|
|
import modelverse_jit.bytecode_ir as bytecode_ir
|
|
|
import modelverse_jit.bytecode_parser as bytecode_parser
|
|
|
import modelverse_jit.bytecode_to_tree as bytecode_to_tree
|
|
|
+import modelverse_jit.bytecode_to_cfg as bytecode_to_cfg
|
|
|
+import modelverse_jit.cfg_optimization as cfg_optimization
|
|
|
import modelverse_jit.tree_ir as tree_ir
|
|
|
import modelverse_jit.runtime as jit_runtime
|
|
|
import keyword
|
|
@@ -435,6 +437,18 @@ class ModelverseJit(object):
|
|
|
self, body_id, task_root, body_param_dict,
|
|
|
self.max_instructions)
|
|
|
constructed_body, = yield [("CALL_ARGS", [state.analyze, (body_bytecode,)])]
|
|
|
+ if self.jit_code_log_function is not None:
|
|
|
+ bytecode_analyzer = bytecode_to_cfg.AnalysisState()
|
|
|
+ bytecode_analyzer.analyze(body_bytecode)
|
|
|
+ self.jit_code_log_function(
|
|
|
+ "CFG for function '%s' at '%d':\n%s" % (
|
|
|
+ function_name, body_id,
|
|
|
+ '\n'.join(
|
|
|
+ map(
|
|
|
+ str,
|
|
|
+ cfg_optimization.get_all_reachable_blocks(
|
|
|
+ bytecode_analyzer.entry_point)))))
|
|
|
+
|
|
|
yield [("END_TRY", [])]
|
|
|
del self.compilation_dependencies[body_id]
|
|
|
|