AAAAAAAAAAAADAAAIAAAEABAAAAAAAACAAAAAAIAAAQ=
eventbinding.cs
@@ -87,12 +95,12 @@
- AAAAAAAAAAAAAAAAAAAAAAECAAAAAEEBAAAAAAABAAQ=
+ AAAAAAAAAAAAAAAAAAAAAAACAAAAAEEBAAAAAAABAAQ=
extensiontype.cs
-
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAIBEAA=
fieldobject.cs
@@ -120,21 +128,29 @@
-
+
+
+
+
+
+
+
+
+
EAAAAAAAAIAADABAIAAAAAAAAAgBAAAAUgAAAAIAAAQ=
methodbinding.cs
-
+
FIADAAAAAAAIBAAAIAAIAAAIAAgFAAAAUAAgAAIAEAQ=
methodobject.cs
-
+
AAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAIAAAA=
modulefunctionobject.cs
@@ -148,18 +164,33 @@
-
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
modulepropertyobject.cs
-
+
AAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAIBEAg=
propertyobject.cs
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAIAAAAAAAAAABAAAAAgAAAAIAAAQ=
+ overload.cs
+
+
\ No newline at end of file
diff --git a/src/runtime/constructorbinding.cs b/src/runtime/constructorbinding.cs
index 6706c2b48..ab4a7af0a 100644
--- a/src/runtime/constructorbinding.cs
+++ b/src/runtime/constructorbinding.cs
@@ -149,14 +149,10 @@ public static IntPtr tp_repr(IntPtr ob)
return self.repr;
}
- ///
- /// ConstructorBinding dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ protected override void Dealloc()
{
- var self = (ConstructorBinding)GetManagedObject(ob);
- Runtime.XDecref(self.repr);
- self.Dealloc();
+ Runtime.Py_CLEAR(ref this.repr);
+ base.Dealloc();
}
public static int tp_clear(IntPtr ob)
@@ -252,14 +248,10 @@ public static IntPtr tp_repr(IntPtr ob)
return self.repr;
}
- ///
- /// ConstructorBinding dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ protected override void Dealloc()
{
- var self = (BoundContructor)GetManagedObject(ob);
- Runtime.XDecref(self.repr);
- self.Dealloc();
+ Runtime.Py_CLEAR(ref this.repr);
+ base.Dealloc();
}
public static int tp_clear(IntPtr ob)
diff --git a/src/runtime/eventbinding.cs b/src/runtime/eventbinding.cs
index 3f5b7b007..60b9bba92 100644
--- a/src/runtime/eventbinding.cs
+++ b/src/runtime/eventbinding.cs
@@ -103,15 +103,10 @@ public static IntPtr tp_repr(IntPtr ob)
return Runtime.PyString_FromString(s);
}
-
- ///
- /// EventBinding dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ protected override void Dealloc()
{
- var self = (EventBinding)GetManagedObject(ob);
- Runtime.XDecref(self.target);
- self.Dealloc();
+ Runtime.Py_CLEAR(ref this.target);
+ base.Dealloc();
}
public static int tp_clear(IntPtr ob)
diff --git a/src/runtime/eventobject.cs b/src/runtime/eventobject.cs
index 4dc785ddd..e9bd98821 100644
--- a/src/runtime/eventobject.cs
+++ b/src/runtime/eventobject.cs
@@ -198,17 +198,14 @@ public static IntPtr tp_repr(IntPtr ob)
}
- ///
- /// Descriptor dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ protected override void Dealloc()
{
- var self = (EventObject)GetManagedObject(ob);
- if (self.unbound != null)
+ if (this.unbound is not null)
{
- Runtime.XDecref(self.unbound.pyHandle);
+ Runtime.XDecref(this.unbound.pyHandle);
+ this.unbound = null;
}
- self.Dealloc();
+ base.Dealloc();
}
}
diff --git a/src/runtime/extensiontype.cs b/src/runtime/extensiontype.cs
index 34a82fe37..db9eb0f72 100644
--- a/src/runtime/extensiontype.cs
+++ b/src/runtime/extensiontype.cs
@@ -54,20 +54,12 @@ void SetupGc ()
}
- ///
- /// Common finalization code to support custom tp_deallocs.
- ///
- public static void FinalizeObject(ManagedType self)
+ protected virtual void Dealloc()
{
- ClearObjectDict(self.pyHandle);
- Runtime.PyObject_GC_Del(self.pyHandle);
+ ClearObjectDict(this.pyHandle);
+ Runtime.PyObject_GC_Del(this.pyHandle);
// Not necessary for decref of `tpHandle`.
- self.FreeGCHandle();
- }
-
- protected void Dealloc()
- {
- FinalizeObject(this);
+ this.FreeGCHandle();
}
///
@@ -104,7 +96,7 @@ public static void tp_dealloc(IntPtr ob)
// Clean up a Python instance of this extension type. This
// frees the allocated Python object and decrefs the type.
var self = (ExtensionType)GetManagedObject(ob);
- self.Dealloc();
+ self?.Dealloc();
}
protected override void OnLoad(InterDomainContext context)
diff --git a/src/runtime/methodbinding.cs b/src/runtime/methodbinding.cs
index f33015ba4..783717189 100644
--- a/src/runtime/methodbinding.cs
+++ b/src/runtime/methodbinding.cs
@@ -31,7 +31,7 @@ public MethodBinding(MethodObject m, IntPtr target, IntPtr targetType)
{
Runtime.XIncref(targetType);
}
-
+
this.targetType = targetType;
this.info = null;
@@ -42,12 +42,6 @@ public MethodBinding(MethodObject m, IntPtr target) : this(m, target, IntPtr.Zer
{
}
- private void ClearMembers()
- {
- Runtime.Py_CLEAR(ref target);
- Runtime.Py_CLEAR(ref targetType);
- }
-
///
/// Implement binding of generic methods using the subscript syntax [].
///
@@ -235,14 +229,16 @@ public static IntPtr tp_repr(IntPtr ob)
return Runtime.PyString_FromString($"<{type} method '{name}'>");
}
- ///
- /// MethodBinding dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ private void ClearMembers()
{
- var self = (MethodBinding)GetManagedObject(ob);
- self.ClearMembers();
- self.Dealloc();
+ Runtime.Py_CLEAR(ref target);
+ Runtime.Py_CLEAR(ref targetType);
+ }
+
+ protected override void Dealloc()
+ {
+ this.ClearMembers();
+ base.Dealloc();
}
public static int tp_clear(IntPtr ob)
diff --git a/src/runtime/methodobject.cs b/src/runtime/methodobject.cs
index 37c01f5c5..5fa965f1b 100644
--- a/src/runtime/methodobject.cs
+++ b/src/runtime/methodobject.cs
@@ -120,16 +120,6 @@ internal bool IsStatic()
return is_static;
}
- private void ClearMembers()
- {
- Runtime.Py_CLEAR(ref doc);
- if (unbound != null)
- {
- Runtime.XDecref(unbound.pyHandle);
- unbound = null;
- }
- }
-
///
/// Descriptor __getattribute__ implementation.
///
@@ -210,15 +200,21 @@ public static IntPtr tp_repr(IntPtr ob)
return Runtime.PyString_FromString($"");
}
- ///
- /// Descriptor dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ private void ClearMembers()
{
- var self = (MethodObject)GetManagedObject(ob);
- self.ClearMembers();
- ClearObjectDict(ob);
- self.Dealloc();
+ Runtime.Py_CLEAR(ref doc);
+ if (unbound != null)
+ {
+ Runtime.XDecref(unbound.pyHandle);
+ unbound = null;
+ }
+ }
+
+ protected override void Dealloc()
+ {
+ this.ClearMembers();
+ ClearObjectDict(this.pyHandle);
+ base.Dealloc();
}
public static int tp_clear(IntPtr ob)
diff --git a/src/runtime/moduleobject.cs b/src/runtime/moduleobject.cs
index 3c4e02a23..1ab014c2a 100644
--- a/src/runtime/moduleobject.cs
+++ b/src/runtime/moduleobject.cs
@@ -274,7 +274,7 @@ public static IntPtr tp_getattro(IntPtr ob, IntPtr key)
Exceptions.SetError(e);
return IntPtr.Zero;
}
-
+
if (attr == null)
{
@@ -295,11 +295,10 @@ public static IntPtr tp_repr(IntPtr ob)
return Runtime.PyString_FromString($"");
}
- public new static void tp_dealloc(IntPtr ob)
+ protected override void Dealloc()
{
- var self = (ModuleObject)GetManagedObject(ob);
- tp_clear(ob);
- self.Dealloc();
+ tp_clear(this.pyHandle);
+ base.Dealloc();
}
public static int tp_traverse(IntPtr ob, IntPtr visit, IntPtr arg)
@@ -345,7 +344,7 @@ protected override void OnSave(InterDomainContext context)
if ((Runtime.PyDict_DelItemString(DictRef, pair.Key) == -1) &&
(Exceptions.ExceptionMatches(Exceptions.KeyError)))
{
- // Trying to remove a key that's not in the dictionary
+ // Trying to remove a key that's not in the dictionary
// raises an error. We don't care about it.
Runtime.PyErr_Clear();
}
@@ -496,7 +495,7 @@ public static Assembly AddReference(string name)
/// clr.GetClrType(IComparable) gives you the Type for IComparable,
/// that you can e.g. perform reflection on. Similar to typeof(IComparable) in C#
/// or clr.GetClrType(IComparable) in IronPython.
- ///
+ ///
///
///
/// The Type object
diff --git a/src/runtime/native/TypeOffset.cs b/src/runtime/native/TypeOffset.cs
index 4e5a726bc..a73a9ae43 100644
--- a/src/runtime/native/TypeOffset.cs
+++ b/src/runtime/native/TypeOffset.cs
@@ -153,7 +153,6 @@ static void ValidateRequiredOffsetsPresent(PropertyInfo[] offsetProperties)
"__instancecheck__",
"__subclasscheck__",
"AddReference",
- "FinalizeObject",
"FindAssembly",
"get_SuppressDocs",
"get_SuppressOverloads",
diff --git a/src/runtime/overload.cs b/src/runtime/overload.cs
index e9fa91d3b..48fabca4a 100644
--- a/src/runtime/overload.cs
+++ b/src/runtime/overload.cs
@@ -58,14 +58,10 @@ public static IntPtr tp_repr(IntPtr op)
return doc;
}
- ///
- /// OverloadMapper dealloc implementation.
- ///
- public new static void tp_dealloc(IntPtr ob)
+ protected override void Dealloc()
{
- var self = (OverloadMapper)GetManagedObject(ob);
- Runtime.XDecref(self.target);
- self.Dealloc();
+ Runtime.Py_CLEAR(ref this.target);
+ base.Dealloc();
}
}
}
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy