Commit 936fa570 authored by Thomas Hunger's avatar Thomas Hunger

Emit and release temporary variables in global namespace

because the class-body code is exectuted at module-init time.
parent c5ce74b8
...@@ -995,7 +995,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): ...@@ -995,7 +995,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
"static struct PyMethodDef %s[] = {" % "static struct PyMethodDef %s[] = {" %
env.method_table_cname) env.method_table_cname)
for entry in env.pyfunc_entries: for entry in env.pyfunc_entries:
code.put_pymethoddef(entry, ",") code.put_pymethoddef(entry, ",")
code.putln( code.putln(
"{0, 0, 0, 0}") "{0, 0, 0, 0}")
code.putln( code.putln(
......
...@@ -1186,7 +1186,13 @@ class CClassScope(ClassScope): ...@@ -1186,7 +1186,13 @@ class CClassScope(ClassScope):
adapt(base_entry.cname), base_entry.visibility) adapt(base_entry.cname), base_entry.visibility)
entry.is_inherited = 1 entry.is_inherited = 1
def allocate_temp(self, type):
return Scope.allocate_temp(self.global_scope(), type)
def release_temp(self, cname):
return Scope.release_temp(self.global_scope(), cname)
class PropertyScope(Scope): class PropertyScope(Scope):
# Scope holding the __get__, __set__ and __del__ methods for # Scope holding the __get__, __set__ and __del__ methods for
# a property of an extension type. # a property of an extension type.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment