shithub: pokecrystal

Download patch

ref: f2fd544e20a54aece3bb1699e2b4c6a5ff0d4078
parent: 3f9552910236021499a60c622b708ffb2ca1c43b
author: Bryan Bishop <[email protected]>
date: Thu Jan 10 10:15:59 EST 2013

make the preprocessor a little faster

This reduced the preprocessing time from 8s to 2.7s.

--- a/preprocessor.py
+++ b/preprocessor.py
@@ -393,6 +393,10 @@
     token = asm.split(" ")[0].replace("\t", "").replace("\n", "")
     return token
 
+def make_macro_table():
+    return dict([(macro.macro_name, macro) for macro in macros])
+macro_table = make_macro_table()
+
 def macro_test(asm):
     """ Returns a matching macro, or None/False.
     """
@@ -401,11 +405,10 @@
     token = extract_token(asm)
 
     # check against all names
-    for macro in macros:
-        if macro.macro_name == token:
-            return macro, token
-
-    return None, None
+    try:
+        return (macro_table[token], token)
+    except:
+        return (None, None)
 
 def macro_translator(macro, token, line):
     """ Converts a line with a macro into a rgbasm-compatible line.