[pypy-commit] pypy gc-del: Fix the oracle module (blindly)

arigo noreply at buildbot.pypy.org
Fri Apr 26 23:09:21 CEST 2013


Author: Armin Rigo <arigo at tunes.org>
Branch: gc-del
Changeset: r63671:022f6153a022
Date: 2013-04-26 22:50 +0200
http://bitbucket.org/pypy/pypy/changeset/022f6153a022/

Log:	Fix the oracle module (blindly)

diff --git a/pypy/module/oracle/interp_connect.py b/pypy/module/oracle/interp_connect.py
--- a/pypy/module/oracle/interp_connect.py
+++ b/pypy/module/oracle/interp_connect.py
@@ -29,6 +29,8 @@
         self.w_version = None
         self.release = False
 
+        self.register_finalizer()
+
 
     @unwrap_spec(mode=int, handle=int,
                  threaded=bool, twophase=bool, events=bool,
@@ -80,13 +82,11 @@
             self.connect(space, mode, twophase)
         return space.wrap(self)
 
-    def __del__(self):
-        self.enqueue_for_destruction(self.environment.space,
-                                     W_Connection.destructor,
-                                     '__del__ method of ')
+    def invoke_finalizer(self):
+        self.finalizer_perform(self.environment.space, '__del__ method of ',
+                               self.destructor)
 
     def destructor(self):
-        assert isinstance(self, W_Connection)
         if self.release:
             roci.OCITransRollback(
                 self.handle, self.environment.errorHandle,
diff --git a/pypy/module/oracle/interp_object.py b/pypy/module/oracle/interp_object.py
--- a/pypy/module/oracle/interp_object.py
+++ b/pypy/module/oracle/interp_object.py
@@ -14,14 +14,14 @@
         self.environment = connection.environment
         self.isCollection = False
         self.initialize(connection, param)
+        self.register_finalizer()
 
-    def __del__(self):
-        self.enqueue_for_destruction(self.environment.space,
-                                     W_ObjectType.destructor,
-                                     '__del__ method of ')
+    def invoke_finalizer(self):
+        if self.tdo:
+            self.finalizer_perform(self.environment.space, '__del__ method of ',
+                                   self.destructor)
 
     def destructor(self):
-        assert isinstance(self, W_ObjectType)
         if self.tdo:
             roci.OCIObjectUnpin(
                 self.environment.handle,
diff --git a/pypy/module/oracle/interp_variable.py b/pypy/module/oracle/interp_variable.py
--- a/pypy/module/oracle/interp_variable.py
+++ b/pypy/module/oracle/interp_variable.py
@@ -166,13 +166,13 @@
         # perform extended initialization
         self.initialize(self.environment.space, cursor)
 
-    def __del__(self):
-        self.enqueue_for_destruction(self.environment.space,
-                                     W_Variable.destructor,
-                                     '__del__ method of ')
+        self.register_finalizer()
+
+    def invoke_finalizer(self):
+        self.finalizer_perform(self.environment.space, '__del__ method of ',
+                               self.destructor)
 
     def destructor(self):
-        assert isinstance(self, W_Variable)
         self.finalize()
         lltype.free(self.actualElementsPtr, flavor='raw')
         if self.actualLength:


More information about the pypy-commit mailing list