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.
This commit is contained in:
Kristján Valur Jónsson 2013-10-13 13:41:59 +00:00
parent b4534ae704
commit 5983258bf2
1 changed files with 22 additions and 79 deletions

View File

@ -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;
}