Author: fijal
Branch: memory-accounting
Changeset: r92510:4420cc75f88e
Date: 2017-09-29 19:37 +0200
http://bitbucket.org/pypy/pypy/changeset/4420cc75f88e/
Log: whack for a bit until we a) initialize to 0 and b) have it not on
W_Root
diff --git a/pypy/module/__pypy__/interp_magic.py
b/pypy/module/__pypy__/interp_magic.py
--- a/pypy/module/__pypy__/interp_magic.py
+++ b/pypy/module/__pypy__/interp_magic.py
@@ -146,10 +146,10 @@
""" Add memory pressure of estimate bytes. Useful when calling a C function
that internally allocates a big chunk of memory. This instructs the GC to
garbage collect sooner than it would otherwise."""
- if space.is_none(w_obj):
- rgc.add_memory_pressure(estimate)
- else:
- rgc.add_memory_pressure(estimate, w_obj)
+ #if space.is_none(w_obj):
+ rgc.add_memory_pressure(estimate)
+ #else:
+ # rgc.add_memory_pressure(estimate, w_obj)
@unwrap_spec(w_frame=PyFrame)
def locals_to_fast(space, w_frame):
diff --git a/pypy/module/_cffi_backend/cdataobj.py
b/pypy/module/_cffi_backend/cdataobj.py
--- a/pypy/module/_cffi_backend/cdataobj.py
+++ b/pypy/module/_cffi_backend/cdataobj.py
@@ -447,7 +447,10 @@
with self as ptr:
w_res = W_CDataGCP(space, ptr, self.ctype, self, w_destructor)
if size != 0:
- rgc.add_memory_pressure(size, w_res)
+ if isinstance(w_res, W_CDataGCP):
+ rgc.add_memory_pressure(size, w_res)
+ else:
+ rgc.add_memory_pressure(size, self)
return w_res
def unpack(self, length):
diff --git a/pypy/module/_ssl/interp_ssl.py b/pypy/module/_ssl/interp_ssl.py
--- a/pypy/module/_ssl/interp_ssl.py
+++ b/pypy/module/_ssl/interp_ssl.py
@@ -1316,6 +1316,7 @@
raise ssl_error(space, "failed to allocate SSL context")
self = space.allocate_instance(_SSLContext, w_subtype)
+ assert isinstance(self, _SSLContext)
rgc.add_memory_pressure(10 * 1024, self)
self.ctx = ctx
self.check_hostname = False
diff --git a/rpython/rtyper/rclass.py b/rpython/rtyper/rclass.py
--- a/rpython/rtyper/rclass.py
+++ b/rpython/rtyper/rclass.py
@@ -15,6 +15,7 @@
RuntimeTypeInfo, getRuntimeTypeInfo, typeOf, Void, FuncType, Bool, Signed,
functionptr, attachRuntimeTypeInfo)
from rpython.rtyper.lltypesystem.lloperation import llop
+from rpython.rtyper.llannotation import lltype_to_annotation
from rpython.rtyper.llannotation import SomePtr
from rpython.rtyper.lltypesystem import rstr
from rpython.rtyper.rmodel import (
@@ -536,6 +537,9 @@
# the parent type
if not
self.has_special_memory_pressure(self.rbase.object_type):
llfields.append(('special_memory_pressure', lltype.Signed))
+ fields['special_memory_pressure'] = (
+ 'special_memory_pressure',
+
self.rtyper.getrepr(lltype_to_annotation(lltype.Signed)))
object_type = MkStruct(self.classdef.name,
('super', self.rbase.object_type),
@@ -677,6 +681,8 @@
while base.classdef is not None:
base = base.rbase
for fieldname in base.fields:
+ if fieldname == 'special_memory_pressure':
+ continue
try:
mangled, r = base._get_field(fieldname)
except KeyError:
@@ -731,6 +737,9 @@
resulttype=Ptr(self.object_type))
ctypeptr = inputconst(CLASSTYPE, self.rclass.getvtable())
self.setfield(vptr, '__class__', ctypeptr, llops)
+ if self.has_special_memory_pressure(self.object_type):
+ self.setfield(vptr, 'special_memory_pressure',
+ inputconst(lltype.Signed, 0), llops)
# initialize instance attributes from their defaults from the class
if self.classdef is not None:
flds = self.allinstancefields.keys()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit