Переглянути джерело

Merge branch 'testing' into new_JIT

Yentl Van Tendeloo 7 роки тому
батько
коміт
250f81efc1

+ 30 - 12
bootstrap/bootstrap.py

@@ -8,8 +8,8 @@ def bootstrap():
     root = ["__hierarchy"]
     root = ["__hierarchy"]
 
 
     task_manager = "task_manager"
     task_manager = "task_manager"
-    initial_code_manager = "bootstrap/initial_code_manager.alc"
-    initial_code_task = "bootstrap/initial_code_task.alc"
+    main_file = "bootstrap/main.alc"
+    primitive_file = "bootstrap/primitives.alc"
 
 
     task_data = [   "input",
     task_data = [   "input",
                     "output",
                     "output",
@@ -177,10 +177,6 @@ def bootstrap():
                     return code.replace("auto_initial_IP", target)
                     return code.replace("auto_initial_IP", target)
 
 
                 # Create all library code
                 # Create all library code
-                # But first create the structure to hold compiled data
-                f.write("Node __objects()\n", both=False)
-                f.write('Dict (__hierarchy, "objects", __objects)\n', both=False)
-
                 def compile_code_MO(filename, model_name):
                 def compile_code_MO(filename, model_name):
                     import sys
                     import sys
                     sys.path.append("interface/HUTN/")
                     sys.path.append("interface/HUTN/")
@@ -217,24 +213,46 @@ def bootstrap():
                     # Compile the subfile
                     # Compile the subfile
                     bootstrap_file = bootstrap_file.replace("\\", "/")
                     bootstrap_file = bootstrap_file.replace("\\", "/")
                     print("[ALC] %s" % bootstrap_file)
                     print("[ALC] %s" % bootstrap_file)
-                    f.write(compile_code_AL(bootstrap_file, "initial_IP", prepend=bootstrap_file, main = bootstrap_file in [initial_code_manager, initial_code_task]), both=False)
+                    f.write(compile_code_AL(bootstrap_file, "initial_IP", prepend=bootstrap_file, main=bootstrap_file==main_file), both=False)
+
+                    # TODO all assigns stored in:
+                    #       bootstrap_file + "_initial_IP"
 
 
                     # Now link the code with the compilation manager structure
                     # Now link the code with the compilation manager structure
-                    f.write("Node elem()\n", both=False)
 
 
-                    f.write('Dict (__objects, "%s", elem)\n' % bootstrap_file, both=False)
-                    f.write('Dict (elem, "initializers", %s_initial_IP)\n' % bootstrap_file, both=False)
+                # Stitch all IPs together
+                print("[LINK]")
+                counter = 0
+                f.write('Node true(constant)\n', both=False)
+                f.write('Node t(True)\n', both=False)
+                f.write('Dict (true, "node", t)\n', both=False)
+
+                first = True
+                for bootstrap_file in [primitive_file] + [i for i in bootstrap_files if i not in [main_file, primitive_file]]:
+                    f.write('Node _if_%s(if)\n' % counter, both=False)
+                    f.write('Dict (_if_%s, "cond", true)\n' % counter, both=False)
+                    f.write('Dict (_if_%s, "then", %s_initial_IP)\n' % (counter, bootstrap_file), both=False)
+
+                    if first:
+                        first = False
+                    else:
+                        f.write('Dict (%s, "next", _if_%s)\n' % (prev, counter), both=False)
+
+                    prev = "_if_%s" % counter
+                    counter += 1
+
+                f.write('Dict (%s, "next", %s_initial_IP)\n' % (prev, main_file), both=False)
 
 
                 # Create code for initial task
                 # Create code for initial task
                 print("[BOOT] task_manager")
                 print("[BOOT] task_manager")
-                f.write('Dict (task_frame, "IP", %s_initial_IP)\n' % (initial_code_manager), both=False)
+                f.write('Dict (task_frame, "IP", _if_0)\n', both=False)
 
 
                 f.write('Node __phase("init")\n', both=False)
                 f.write('Node __phase("init")\n', both=False)
                 f.write('Dict (task_frame, "phase", __phase)\n', both=False)
                 f.write('Dict (task_frame, "phase", __phase)\n', both=False)
 
 
                 # Create code for new tasks to start at
                 # Create code for new tasks to start at
                 print("[BOOT] new_task")
                 print("[BOOT] new_task")
-                f.write('Dict (__hierarchy, "__IP", %s_initial_IP)\n' % initial_code_task, both=False)
+                f.write('Dict (__hierarchy, "__IP", _if_0)\n', both=False)
     except:
     except:
         os.remove("bootstrap/bootstrap.m.gz")
         os.remove("bootstrap/bootstrap.m.gz")
         os.remove("bootstrap/minimal.m.gz")
         os.remove("bootstrap/minimal.m.gz")

+ 0 - 21
bootstrap/initial_code_manager.alc

@@ -1,21 +0,0 @@
-include "bootstrap/primitives.alc"
-include "bootstrap/semi_primitives.alc"
-include "task_manager.alh"
-
-Void function __main():
-	Element root
-	root = read_root()
-	root = root["__hierarchy"]["objects"]
-	exec(root["bootstrap/constructors.alc"]["initializers"])
-	exec(root["bootstrap/library.alc"]["initializers"])
-	exec(root["bootstrap/object_operations.alc"]["initializers"])
-	exec(root["bootstrap/conformance_scd.alc"]["initializers"])
-	exec(root["bootstrap/.metamodels.alc"]["initializers"])
-	exec(root["bootstrap/modelling.alc"]["initializers"])
-	exec(root["bootstrap/task_manager.alc"]["initializers"])
-	exec(root["bootstrap/core_algorithm.alc"]["initializers"])
-	exec(root["bootstrap/utils.alc"]["initializers"])
-	exec(root["bootstrap/io.alc"]["initializers"])
-	exec(root["bootstrap/typing.alc"]["initializers"])
-	task_management()
-	return!

+ 0 - 30
bootstrap/initial_code_task.alc

@@ -1,30 +0,0 @@
-include "bootstrap/primitives.alc"
-include "bootstrap/semi_primitives.alc"
-include "core_algorithm.alh"
-
-Void mutable function __main():
-	Element root
-	root = read_root()
-	root = root["__hierarchy"]["objects"]
-	exec(root["bootstrap/.metamodels.alc"]["initializers"])
-	exec(root["bootstrap/mini_modify.alc"]["initializers"])
-	exec(root["bootstrap/core_algorithm.alc"]["initializers"])
-	exec(root["bootstrap/modelling.alc"]["initializers"])
-	exec(root["bootstrap/library.alc"]["initializers"])
-	exec(root["bootstrap/constructors.alc"]["initializers"])
-	exec(root["bootstrap/object_operations.alc"]["initializers"])
-	exec(root["bootstrap/model_management.alc"]["initializers"])
-	exec(root["bootstrap/ramify.alc"]["initializers"])
-	exec(root["bootstrap/transform.alc"]["initializers"])
-	exec(root["bootstrap/conformance_scd.alc"]["initializers"])
-	exec(root["bootstrap/random.alc"]["initializers"])
-	exec(root["bootstrap/utils.alc"]["initializers"])
-	exec(root["bootstrap/services.alc"]["initializers"])
-	exec(root["bootstrap/io.alc"]["initializers"])
-	exec(root["bootstrap/conformance_finding.alc"]["initializers"])
-	exec(root["bootstrap/typing.alc"]["initializers"])
-	exec(root["bootstrap/compiler.alc"]["initializers"])
-	exec(root["bootstrap/json.alc"]["initializers"])
-	exec(root["bootstrap/files.alc"]["initializers"])
-	new_task()
-	return!

+ 4 - 0
kernel/modelverse_kernel/main.py

@@ -757,6 +757,10 @@ class ModelverseKernel(object):
                                    ("CNV", ["finish"]),
                                    ("CNV", ["finish"]),
                                   ]
                                   ]
             if variable is None:
             if variable is None:
+                globs, = yield [("RDK", [_globals])]
+                print("Globals: " + str(globs))
+                globs = yield [("RV", [i]) for i in globs]
+                print("Resolved globals: " + str(globs))
                 raise Exception(jit_runtime.GLOBAL_NOT_FOUND_MESSAGE_FORMAT % var_name)
                 raise Exception(jit_runtime.GLOBAL_NOT_FOUND_MESSAGE_FORMAT % var_name)
 
 
             # Resolved a global, so this is a string
             # Resolved a global, so this is a string

+ 4 - 0
wrappers/modelverse_SCCD.py

@@ -1,7 +1,11 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
+<<<<<<< HEAD
 Date:   Thu Apr  5 14:36:50 2018
 Date:   Thu Apr  5 14:36:50 2018
+=======
+Date:   Thu Apr  5 16:51:38 2018
+>>>>>>> testing
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server