[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