Browse Source

Remove the --fast flag, as it only confuses matters and performance benefits will be low with precompiled functions

Yentl Van Tendeloo 9 years ago
parent
commit
c770bf0776

+ 0 - 1
integration/test_pn_interface.py

@@ -26,7 +26,6 @@ all_files = [   "pn_interface.alc",
                 "conformance_scd.alc",
                 "library.alc",
                 "metamodels.alc",
-                "--fast",
             ]
 
 greeting =          ["Welcome to the Model Management Interface, running live on the Modelverse!",

+ 0 - 2
integration/utils.py

@@ -114,8 +114,6 @@ def run_file(files, parameters, expected, mode):
 
         threads = []
         for filename in files:
-            if filename == "--fast":
-                continue
             if os.path.isfile("integration/code/%s" % filename):
                 mod_filename = "integration/code/%s" % filename
             elif os.path.isfile("bootstrap/%s" % filename):

+ 33 - 39
interface/HUTN/hutn_compiler/linker.py

@@ -8,44 +8,43 @@ def flush_data(address, data, username):
         urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username})), timeout=10).read()
     return []
 
-def link(address, username, objects, fast):
+def link(address, username, objects):
     # Read out all symbol tables that are to be linked
     definers = {}
     users = {}
     data = []
 
-    if not fast:
-        definers["main"] = None
-        for obj in objects:
-            data.append(("V", '3'))
-            data.append(("V", '"read_symbols"'))
-            data.append(("V", '"%s"' % obj))
-
-        data = flush_data(address, data, username)
-
-        for obj in objects:
-            print("[SYMB] %s" % (obj))
-            v = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
-            lst = v.rsplit("=", 1)[1]
-            lst = lst.split("\n")
-            for e in lst:
-                if len(e) > 1:
-                    name, defined = e.rsplit(":", 1)
-                    if defined == "1":
-                        if definers.get(name, None):
-                            raise Exception("Double definition for symbol %s\nDefined in %s\nDefined in %s" % (name, definers[name], obj))
-                        definers[name] = obj
-                    else:
-                        users.setdefault(name, []).append(obj)
-                        if name not in definers:
-                            definers[name] = None
-
-        # Check for undefined symbols with this linking set
-        for symbol in definers:
-            if definers[symbol] is None:
-                if symbol not in ["input", "output"]:
-                    # Some symbols are built-ins which only look like functions
-                    raise Exception("Undefined symbol %s.\nUsed by modules:\n\t%s" % (symbol, "\n\t".join(users[symbol])))
+    definers["main"] = None
+    for obj in objects:
+        data.append(("V", '3'))
+        data.append(("V", '"read_symbols"'))
+        data.append(("V", '"%s"' % obj))
+
+    data = flush_data(address, data, username)
+
+    for obj in objects:
+        print("[SYMB] %s" % (obj))
+        v = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
+        lst = v.rsplit("=", 1)[1]
+        lst = lst.split("\n")
+        for e in lst:
+            if len(e) > 1:
+                name, defined = e.rsplit(":", 1)
+                if defined == "1":
+                    if definers.get(name, None):
+                        raise Exception("Double definition for symbol %s\nDefined in %s\nDefined in %s" % (name, definers[name], obj))
+                    definers[name] = obj
+                else:
+                    users.setdefault(name, []).append(obj)
+                    if name not in definers:
+                        definers[name] = None
+
+    # Check for undefined symbols with this linking set
+    for symbol in definers:
+        if definers[symbol] is None:
+            if symbol not in ["input", "output"]:
+                # Some symbols are built-ins which only look like functions
+                raise Exception("Undefined symbol %s.\nUsed by modules:\n\t%s" % (symbol, "\n\t".join(users[symbol])))
 
     # Ok, we know that all symbols can be defined with this set of files, now link their initializers together
     initializers = []
@@ -106,13 +105,8 @@ if __name__ == "__main__":
         address = sys.argv[1]
         username = sys.argv[2]
         objects = set(sys.argv[3:])
-        if "--fast" in objects:
-            objects.remove("--fast")
-            fast = True
-        else:
-            fast = False
 
         if objects:
-            link(address, username, objects, fast)
+            link(address, username, objects)
         else:
             print("No files to link defined")

+ 4 - 5
scripts/link_and_load.py

@@ -1,12 +1,12 @@
 import sys
 import urllib2
 
-def link_and_load(address, username, objs, fast):
+def link_and_load(address, username, objs):
     urllib2.urlopen(urllib2.Request(address, 'op=set_input&username=user_manager&element_type=V&value="%s"' % username)).read()
 
     sys.path.append("interface/HUTN")
     from hutn_compiler.linker import link
-    link(address, username, objs, fast)
+    link(address, username, objs)
 
 if __name__ == "__main__":
     if len(sys.argv) < 4:
@@ -15,7 +15,6 @@ if __name__ == "__main__":
     else:
         address = sys.argv[1]
         username = sys.argv[2]
-        objs = [arg for arg in sys.argv[3:] if arg != "--fast"]
-        fast = "--fast" in sys.argv[3:]
+        objs = sys.argv[3:]
 
-        link_and_load(address, username, objs, fast)
+        link_and_load(address, username, objs)

+ 1 - 1
scripts/make_parallel.py

@@ -22,4 +22,4 @@ if __name__ == "__main__":
     p = multiprocessing.Pool(multiprocessing.cpu_count() * 2)
     p.map(do_compile_wrapper, files)
 
-    link_and_load(address, username, files, True)
+    link_and_load(address, username, files, False)