Author: Matti Picus <[email protected]>
Branch: py3.5
Changeset: r94787:708b92b46553
Date: 2018-06-29 12:39 -0700
http://bitbucket.org/pypy/pypy/changeset/708b92b46553/
Log: merge default into branch
diff --git a/pypy/doc/sandbox.rst b/pypy/doc/sandbox.rst
--- a/pypy/doc/sandbox.rst
+++ b/pypy/doc/sandbox.rst
@@ -3,6 +3,11 @@
PyPy's sandboxing features
==========================
+.. warning:: This is not actively maintained. You will likely have to fix
+ some issues yourself, or otherwise play around on your own. We provide
+ this documentation for historical reasions, it will not translate or
+ run on the latest PyPy code base.
+
Introduction
------------
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -658,7 +658,7 @@
'PyType_FromSpec',
'Py_IncRef', 'Py_DecRef', 'PyObject_Free', 'PyObject_GC_Del',
'PyType_GenericAlloc',
'_PyObject_New', '_PyObject_NewVar',
- '_PyObject_GC_New', '_PyObject_GC_NewVar',
+ '_PyObject_GC_Malloc', '_PyObject_GC_New', '_PyObject_GC_NewVar',
'PyObject_Init', 'PyObject_InitVar',
'PyTuple_New', '_Py_Dealloc',
]
@@ -789,6 +789,9 @@
# a pointer to PyObject
PyObjectP = rffi.CArrayPtr(PyObject)
+# int *
+INTP_real = rffi.CArrayPtr(rffi.INT_real)
+
def configure_types():
for config in (CConfig, CConfig2):
for name, TYPE in rffi_platform.configure(config).iteritems():
diff --git a/pypy/module/cpyext/include/object.h
b/pypy/module/cpyext/include/object.h
--- a/pypy/module/cpyext/include/object.h
+++ b/pypy/module/cpyext/include/object.h
@@ -372,6 +372,7 @@
PyAPI_FUNC(PyObject *) _PyObject_New(PyTypeObject *);
PyAPI_FUNC(PyVarObject *) _PyObject_NewVar(PyTypeObject *, Py_ssize_t);
+PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t);
PyAPI_FUNC(PyObject *) _PyObject_GC_New(PyTypeObject *);
PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t);
diff --git a/pypy/module/cpyext/longobject.py b/pypy/module/cpyext/longobject.py
--- a/pypy/module/cpyext/longobject.py
+++ b/pypy/module/cpyext/longobject.py
@@ -1,7 +1,7 @@
from rpython.rtyper.lltypesystem import lltype, rffi
from pypy.module.cpyext.api import (
cpython_api, PyObject, build_type_checkers_flags, Py_ssize_t,
- CONST_STRING, ADDR, CANNOT_FAIL)
+ CONST_STRING, ADDR, CANNOT_FAIL, INTP_real)
from pypy.interpreter.error import OperationError, oefmt
from rpython.rlib.rbigint import rbigint, InvalidSignednessError
@@ -120,7 +120,7 @@
num = space.bigint_w(w_long)
return num.ulonglongmask()
-@cpython_api([PyObject, rffi.CArrayPtr(rffi.INT_real)], lltype.Signed,
+@cpython_api([PyObject, INTP_real], lltype.Signed,
error=-1)
def PyLong_AsLongAndOverflow(space, w_long, overflow_ptr):
"""
@@ -141,7 +141,7 @@
overflow_ptr[0] = rffi.cast(rffi.INT_real, -1)
return -1
-@cpython_api([PyObject, rffi.CArrayPtr(rffi.INT_real)], rffi.LONGLONG,
+@cpython_api([PyObject, INTP_real], rffi.LONGLONG,
error=-1)
def PyLong_AsLongLongAndOverflow(space, w_long, overflow_ptr):
"""
diff --git a/pypy/module/cpyext/pystrtod.py b/pypy/module/cpyext/pystrtod.py
--- a/pypy/module/cpyext/pystrtod.py
+++ b/pypy/module/cpyext/pystrtod.py
@@ -1,6 +1,6 @@
import errno
from pypy.interpreter.error import oefmt
-from pypy.module.cpyext.api import cpython_api, CONST_STRING
+from pypy.module.cpyext.api import cpython_api, CONST_STRING, INTP_real
from pypy.module.cpyext.pyobject import PyObject
from rpython.rlib import rdtoa
from rpython.rlib import rfloat
@@ -80,7 +80,7 @@
if not user_endptr:
lltype.free(endptr, flavor='raw')
-@cpython_api([rffi.DOUBLE, lltype.Char, rffi.INT_real, rffi.INT_real,
rffi.INTP], rffi.CCHARP)
+@cpython_api([rffi.DOUBLE, lltype.Char, rffi.INT_real, rffi.INT_real,
INTP_real], rffi.CCHARP)
def PyOS_double_to_string(space, val, format_code, precision, flags, ptype):
"""Convert a double val to a string using supplied
format_code, precision, and flags.
@@ -114,7 +114,7 @@
buffer, rtype = rfloat.double_to_string(val, format_code,
intmask(precision),
intmask(flags))
- if ptype != lltype.nullptr(rffi.INTP.TO):
- ptype[0] = rffi.cast(rffi.INT, DOUBLE_TO_STRING_TYPES_MAP[rtype])
+ if ptype != lltype.nullptr(INTP_real.TO):
+ ptype[0] = rffi.cast(rffi.INT_real, DOUBLE_TO_STRING_TYPES_MAP[rtype])
bufp = rffi.str2charp(buffer)
return bufp
diff --git a/pypy/module/cpyext/src/object.c b/pypy/module/cpyext/src/object.c
--- a/pypy/module/cpyext/src/object.c
+++ b/pypy/module/cpyext/src/object.c
@@ -60,6 +60,11 @@
return (PyObject*)_PyObject_NewVar(type, 0);
}
+PyObject * _PyObject_GC_Malloc(size_t size)
+{
+ return (PyObject *)PyObject_Malloc(size);
+}
+
PyObject * _PyObject_GC_New(PyTypeObject *type)
{
return _PyObject_New(type);
diff --git a/pypy/module/cpyext/test/test_object.py
b/pypy/module/cpyext/test/test_object.py
--- a/pypy/module/cpyext/test/test_object.py
+++ b/pypy/module/cpyext/test/test_object.py
@@ -5,7 +5,7 @@
from rpython.rtyper.lltypesystem import rffi
from pypy.module.cpyext.pyobject import get_w_obj_and_decref
from pypy.module.cpyext.api import (
- Py_LT, Py_LE, Py_NE, Py_EQ, Py_GE, Py_GT)
+ Py_LT, Py_LE, Py_NE, Py_EQ, Py_GE, Py_GT, INTP_real)
from pypy.module.cpyext.object import (
PyObject_IsTrue, PyObject_Not, PyObject_GetAttrString,
PyObject_DelAttrString, PyObject_GetAttr, PyObject_DelAttr,
diff --git a/pypy/module/cpyext/test/test_pystrtod.py
b/pypy/module/cpyext/test/test_pystrtod.py
--- a/pypy/module/cpyext/test/test_pystrtod.py
+++ b/pypy/module/cpyext/test/test_pystrtod.py
@@ -4,7 +4,7 @@
from pypy.module.cpyext.test.test_api import BaseApiTest, raises_w
from rpython.rtyper.lltypesystem import rffi
from rpython.rtyper.lltypesystem import lltype
-from pypy.module.cpyext.pystrtod import PyOS_string_to_double
+from pypy.module.cpyext.pystrtod import PyOS_string_to_double, INTP_real
class TestPyOS_string_to_double(BaseApiTest):
@@ -90,7 +90,7 @@
class TestPyOS_double_to_string(BaseApiTest):
def test_format_code(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(150.0, 'e', 1, 0, ptype)
assert '1.5e+02' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -99,7 +99,7 @@
lltype.free(ptype, flavor='raw')
def test_precision(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(3.14159269397, 'g', 5, 0, ptype)
assert '3.1416' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -108,7 +108,7 @@
lltype.free(ptype, flavor='raw')
def test_flags_sign(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(-3.14, 'g', 3, 1, ptype)
assert '-3.14' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -117,7 +117,7 @@
lltype.free(ptype, flavor='raw')
def test_flags_add_dot_0(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(3, 'g', 5, 2, ptype)
assert '3.0' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -126,7 +126,7 @@
lltype.free(ptype, flavor='raw')
def test_flags_alt(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(314., 'g', 3, 4, ptype)
assert '314.' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -135,7 +135,7 @@
lltype.free(ptype, flavor='raw')
def test_ptype_nan(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(float('nan'), 'g', 3, 4, ptype)
assert 'nan' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -144,7 +144,7 @@
lltype.free(ptype, flavor='raw')
def test_ptype_infinity(self, api):
- ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+ ptype = lltype.malloc(INTP_real.TO, 1, flavor='raw')
r = api.PyOS_double_to_string(1e200 * 1e200, 'g', 0, 0, ptype)
assert 'inf' == rffi.charp2str(r)
type_value = rffi.cast(lltype.Signed, ptype[0])
@@ -153,8 +153,8 @@
lltype.free(ptype, flavor='raw')
def test_ptype_null(self, api):
- ptype = lltype.nullptr(rffi.INTP.TO)
+ ptype = lltype.nullptr(INTP_real.TO)
r = api.PyOS_double_to_string(3.14, 'g', 3, 0, ptype)
assert '3.14' == rffi.charp2str(r)
- assert ptype == lltype.nullptr(rffi.INTP.TO)
+ assert ptype == lltype.nullptr(INTP_real.TO)
rffi.free_charp(r)
diff --git a/pypy/module/cpyext/test/test_unicodeobject.py
b/pypy/module/cpyext/test/test_unicodeobject.py
--- a/pypy/module/cpyext/test/test_unicodeobject.py
+++ b/pypy/module/cpyext/test/test_unicodeobject.py
@@ -4,7 +4,8 @@
from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
from pypy.module.cpyext.unicodeobject import (
Py_UNICODE, PyUnicodeObject, new_empty_unicode)
-from pypy.module.cpyext.api import PyObjectP, PyObject, Py_CLEANUP_SUPPORTED
+from pypy.module.cpyext.api import (PyObjectP, PyObject,
+ Py_CLEANUP_SUPPORTED, INTP_real)
from pypy.module.cpyext.pyobject import decref, from_ref
from rpython.rtyper.lltypesystem import rffi, lltype
import sys, py
@@ -726,7 +727,7 @@
value = 1
else:
value = 0
- pendian = lltype.malloc(INT_realP.TO, 1, flavor='raw')
+ pendian = lltype.malloc(INTP_real.TO, 1, flavor='raw')
pendian[0] = rffi.cast(rffi.INT_real, value)
else:
pendian = None
@@ -739,7 +740,7 @@
rffi.free_charp(strict_charp)
if pendian:
if realendian is not None:
- assert rffi.cast(rffi.INT, realendian) == pendian[0]
+ assert rffi.cast(rffi.INT_real, realendian) == pendian[0]
lltype.free(pendian, flavor='raw')
test("\x61\x00\x62\x00\x63\x00\x64\x00", -1)
@@ -762,7 +763,7 @@
value = 1
else:
value = 0
- pendian = lltype.malloc(INT_realP.TO, 1, flavor='raw')
+ pendian = lltype.malloc(INTP_real.TO, 1, flavor='raw')
pendian[0] = rffi.cast(rffi.INT_real, value)
else:
pendian = None
diff --git a/pypy/module/cpyext/unicodeobject.py
b/pypy/module/cpyext/unicodeobject.py
--- a/pypy/module/cpyext/unicodeobject.py
+++ b/pypy/module/cpyext/unicodeobject.py
@@ -6,7 +6,7 @@
from pypy.module.unicodedata import unicodedb
from pypy.module.cpyext.api import (
CANNOT_FAIL, Py_ssize_t, build_type_checkers, cpython_api,
- bootstrap_function, CONST_STRING,
+ bootstrap_function, CONST_STRING, INTP_real,
CONST_WSTRING, Py_CLEANUP_SUPPORTED, slot_function, cts, parse_dir)
from pypy.module.cpyext.pyerrors import PyErr_BadArgument
from pypy.module.cpyext.pyobject import (
@@ -768,7 +768,7 @@
if sys.platform == 'win32':
make_conversion_functions('MBCS', 'mbcs')
-@cpython_api([CONST_STRING, Py_ssize_t, CONST_STRING, INT_realP], PyObject)
+@cpython_api([CONST_STRING, Py_ssize_t, CONST_STRING, INTP_real], PyObject)
def PyUnicode_DecodeUTF16(space, s, size, llerrors, pbyteorder):
"""Decode length bytes from a UTF-16 encoded buffer string and return the
corresponding Unicode object. errors (if non-NULL) defines the error
@@ -822,7 +822,7 @@
return space.newunicode(result)
-@cpython_api([CONST_STRING, Py_ssize_t, CONST_STRING, INT_realP], PyObject)
+@cpython_api([CONST_STRING, Py_ssize_t, CONST_STRING, INTP_real], PyObject)
def PyUnicode_DecodeUTF32(space, s, size, llerrors, pbyteorder):
"""Decode length bytes from a UTF-32 encoded buffer string and
return the corresponding Unicode object. errors (if non-NULL)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit