[cig-commits] r6211 - cs/babel/trunk/spike/Spike/Compiler

leif at geodynamics.org leif at geodynamics.org
Fri Mar 9 01:57:38 PST 2007


Author: leif
Date: 2007-03-09 01:57:36 -0800 (Fri, 09 Mar 2007)
New Revision: 6211

Modified:
   cs/babel/trunk/spike/Spike/Compiler/ExprNodes.py
   cs/babel/trunk/spike/Spike/Compiler/Main.py
   cs/babel/trunk/spike/Spike/Compiler/Symtab.py
   cs/babel/trunk/spike/Spike/Compiler/TypeSlots.py
Log:
Asssorted fixes for random stuff I broke... mainly stuff having to do
with 'saved_subexpr_nodes'.


Modified: cs/babel/trunk/spike/Spike/Compiler/ExprNodes.py
===================================================================
--- cs/babel/trunk/spike/Spike/Compiler/ExprNodes.py	2007-03-09 06:01:38 UTC (rev 6210)
+++ cs/babel/trunk/spike/Spike/Compiler/ExprNodes.py	2007-03-09 09:57:36 UTC (rev 6211)
@@ -200,7 +200,13 @@
     def add_subexpr(self, expr):
         # Called when an expression adds a subexpression late in the
         # game.
+        if self.saved_subexpr_nodes is None:
+            return
         self.saved_subexpr_nodes.append(expr)
+
+    def reset_subexpr_nodes(self):
+        # Called by mutate_into_name_node()
+        self.saved_subexpr_nodes = None
     
     def result_as(self, type = None):
         #  Return the result code cast to the specified C type.
@@ -684,7 +690,7 @@
     #
     #  name            string    Python name of the variable
     #  entry           Entry     Symbol table entry
-    
+
     is_name = 1
     
     def analyse_as_module(self, env):
@@ -791,6 +797,9 @@
         return 0
 
     def calculate_result_code(self):
+        if not hasattr(self, 'entry'):
+            error(self.pos, "INTERNAL ERROR: NameNode has no entry attribute during code generation")
+            return "<error>"
         if self.entry is None:
             return "<error>" # There was an error earlier
         return self.entry.cname
@@ -798,6 +807,7 @@
     def generate_result_code(self, code):
         if not hasattr(self, 'entry'):
             error(self.pos, "INTERNAL ERROR: NameNode has no entry attribute during code generation")
+            return
         entry = self.entry
         if entry is None:
             return # There was an error earlier
@@ -1553,6 +1563,7 @@
         self.__class__ = NameNode
         self.name = self.attribute
         self.entry = entry
+        self.reset_subexpr_nodes()
         del self.obj
         del self.attribute
         if target:

Modified: cs/babel/trunk/spike/Spike/Compiler/Main.py
===================================================================
--- cs/babel/trunk/spike/Spike/Compiler/Main.py	2007-03-09 06:01:38 UTC (rev 6210)
+++ cs/babel/trunk/spike/Spike/Compiler/Main.py	2007-03-09 09:57:36 UTC (rev 6211)
@@ -154,12 +154,13 @@
     def parse(self, source_filename, type_names, pxd):
         if source_filename.endswith(".spk"):
             tree = self.parseSpike(source_filename, type_names, pxd)
-        elif source_filename.endswith(".pyx"):
+        elif (source_filename.endswith(".pyx") or
+              source_filename.endswith(".pxd")):
             import ExprNodes
             ExprNodes.implicit_decls = True
             tree = self.parsePyrex(source_filename, type_names, pxd)
         else:
-            assert false
+            assert False, source_filename
         return tree
 
     def extract_module_name(self, path):

Modified: cs/babel/trunk/spike/Spike/Compiler/Symtab.py
===================================================================
--- cs/babel/trunk/spike/Spike/Compiler/Symtab.py	2007-03-09 06:01:38 UTC (rev 6210)
+++ cs/babel/trunk/spike/Spike/Compiler/Symtab.py	2007-03-09 09:57:36 UTC (rev 6211)
@@ -72,6 +72,7 @@
     is_pyglobal = 0
     is_variable = 0
     is_cfunction = 0
+    is_spikefunction = 0
     is_cmethod = 0
     is_type = 0
     is_const = 0

Modified: cs/babel/trunk/spike/Spike/Compiler/TypeSlots.py
===================================================================
--- cs/babel/trunk/spike/Spike/Compiler/TypeSlots.py	2007-03-09 06:01:38 UTC (rev 6210)
+++ cs/babel/trunk/spike/Spike/Compiler/TypeSlots.py	2007-03-09 09:57:36 UTC (rev 6211)
@@ -241,7 +241,7 @@
         substructures.append(self)
     
     def substructure_cname(self, scope):
-        return "%s%s_%s" % (Naming.pyrex_prefix, self.slot_name, scope.class_name)
+        return "%s%s_%s" % (Naming.spike_prefix, self.slot_name, scope.class_name)
     
     def slot_code(self, scope):
         return "&%s" % self.substructure_cname(scope)



More information about the cig-commits mailing list