summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorKristján Valur Jónsson <kristjan@ccpgames.com>2013-10-13 13:41:59 (GMT)
committerKristján Valur Jónsson <kristjan@ccpgames.com>2013-10-13 13:41:59 (GMT)
commit5983258bf238367e621cae346fce883f934a07a1 (patch)
tree2ac86e64697e7d56aafde140465f1e7b57ad70be /Python
parentb4534ae704a4efb385e2343ecdbc15f232ef78b6 (diff)
downloadcpython-5983258bf238367e621cae346fce883f934a07a1.zip
cpython-5983258bf238367e621cae346fce883f934a07a1.tar.gz
cpython-5983258bf238367e621cae346fce883f934a07a1.tar.bz2
Issue #19219 Remove a lot of "retval = NULL" statements, now that retval
is pre-initialized to that value. Test show a 5% speedup as a bonus.
Diffstat (limited to 'Python')
-rw-r--r--Python/marshal.c101
1 files changed, 22 insertions, 79 deletions
diff --git a/Python/marshal.c b/Python/marshal.c
index 2addb2d..987d063 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -868,7 +868,6 @@ r_object(RFILE *p)
switch (type) {
case TYPE_NULL:
- retval = NULL;
break;
case TYPE_NONE:
@@ -911,7 +910,6 @@ r_object(RFILE *p)
{
char buf[256], *ptr;
double dx;
- retval = NULL;
n = r_byte(p);
if (n == EOF) {
PyErr_SetString(PyExc_EOFError,
@@ -936,15 +934,11 @@ r_object(RFILE *p)
unsigned char *buf;
double x;
buf = (unsigned char *) r_string(8, p);
- if (buf == NULL) {
- retval = NULL;
+ if (buf == NULL)
break;
- }
x = _PyFloat_Unpack8(buf, 1);
- if (x == -1.0 && PyErr_Occurred()) {
- retval = NULL;
+ if (x == -1.0 && PyErr_Occurred())
break;
- }
retval = PyFloat_FromDouble(x);
R_REF(retval);
break;
@@ -954,7 +948,6 @@ r_object(RFILE *p)
{
char buf[256], *ptr;
Py_complex c;
- retval = NULL;
n = r_byte(p);
if (n == EOF) {
PyErr_SetString(PyExc_EOFError,
@@ -993,25 +986,17 @@ r_object(RFILE *p)
unsigned char *buf;
Py_complex c;
buf = (unsigned char *) r_string(8, p);
- if (buf == NULL) {
- retval = NULL;
+ if (buf == NULL)
break;
- }
c.real = _PyFloat_Unpack8(buf, 1);
- if (c.real == -1.0 && PyErr_Occurred()) {
- retval = NULL;
+ if (c.real == -1.0 && PyErr_Occurred())
break;
- }
buf = (unsigned char *) r_string(8, p);
- if (buf == NULL) {
- retval = NULL;
+ if (buf == NULL)
break;
- }
c.imag = _PyFloat_Unpack8(buf, 1);
- if (c.imag == -1.0 && PyErr_Occurred()) {
- retval = NULL;
+ if (c.imag == -1.0 && PyErr_Occurred())
break;
- }
retval = PyComplex_FromCComplex(c);
R_REF(retval);
break;
@@ -1021,24 +1006,18 @@ r_object(RFILE *p)
{
char *ptr;
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (string size out of range)");
- retval = NULL;
break;
}
v = PyBytes_FromStringAndSize((char *)NULL, n);
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
ptr = r_string(n, p);
if (ptr == NULL) {
Py_DECREF(v);
- retval = NULL;
break;
}
memcpy(PyBytes_AS_STRING(v), ptr, n);
@@ -1051,13 +1030,10 @@ r_object(RFILE *p)
is_interned = 1;
case TYPE_ASCII:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
- retval = NULL;
break;
}
goto _read_ascii;
@@ -1075,15 +1051,11 @@ r_object(RFILE *p)
{
char *ptr;
ptr = r_string(n, p);
- if (ptr == NULL) {
- retval = NULL;
+ if (ptr == NULL)
break;
- }
v = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ptr, n);
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
if (is_interned)
PyUnicode_InternInPlace(&v);
retval = v;
@@ -1098,30 +1070,23 @@ r_object(RFILE *p)
char *buffer;
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
- retval = NULL;
break;
}
if (n != 0) {
buffer = r_string(n, p);
- if (buffer == NULL) {
- retval = NULL;
+ if (buffer == NULL)
break;
- }
v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
}
else {
v = PyUnicode_New(0, 0);
}
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
if (is_interned)
PyUnicode_InternInPlace(&v);
retval = v;
@@ -1134,22 +1099,17 @@ r_object(RFILE *p)
goto _read_tuple;
case TYPE_TUPLE:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (tuple size out of range)");
- retval = NULL;
break;
}
_read_tuple:
v = PyTuple_New(n);
R_REF(v);
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
for (i = 0; i < n; i++) {
v2 = r_object(p);
if ( v2 == NULL ) {
@@ -1167,21 +1127,16 @@ r_object(RFILE *p)
case TYPE_LIST:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (list size out of range)");
- retval = NULL;
break;
}
v = PyList_New(n);
R_REF(v);
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
for (i = 0; i < n; i++) {
v2 = r_object(p);
if ( v2 == NULL ) {
@@ -1200,10 +1155,8 @@ r_object(RFILE *p)
case TYPE_DICT:
v = PyDict_New();
R_REF(v);
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
for (;;) {
PyObject *key, *val;
key = r_object(p);
@@ -1225,13 +1178,10 @@ r_object(RFILE *p)
case TYPE_SET:
case TYPE_FROZENSET:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
- retval = NULL;
break;
}
v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
@@ -1245,10 +1195,8 @@ r_object(RFILE *p)
if (idx < 0)
Py_CLEAR(v); /* signal error */
}
- if (v == NULL) {
- retval = NULL;
+ if (v == NULL)
break;
- }
for (i = 0; i < n; i++) {
v2 = r_object(p);
if ( v2 == NULL ) {
@@ -1291,10 +1239,8 @@ r_object(RFILE *p)
PyObject *lnotab = NULL;
idx = r_ref_reserve(flag, p);
- if (idx < 0) {
- retval = NULL;
+ if (idx < 0)
break;
- }
v = NULL;
@@ -1381,13 +1327,11 @@ r_object(RFILE *p)
n = r_long(p);
if (n < 0 || n >= PyList_GET_SIZE(p->refs)) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)");
- retval = NULL;
break;
}
v = PyList_GET_ITEM(p->refs, n);
if (v == Py_None) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)");
- retval = NULL;
break;
}
Py_INCREF(v);
@@ -1398,7 +1342,6 @@ r_object(RFILE *p)
/* Bogus data got written, which isn't ideal.
This will let you keep working and recover. */
PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
- retval = NULL;
break;
}