Kaydet (Commit) 5fe60588 authored tarafından Guido van Rossum's avatar Guido van Rossum

a few peephole optimizations

üst 8d617a60
...@@ -133,7 +133,7 @@ lookmapping(mp, key, hash) ...@@ -133,7 +133,7 @@ lookmapping(mp, key, hash)
and 0 < incr < ma_size and both are a function of hash */ and 0 < incr < ma_size and both are a function of hash */
i = sum % mp->ma_size; i = sum % mp->ma_size;
do { do {
sum = sum + sum + sum + 1; sum = 3*sum + 1;
incr = sum % mp->ma_size; incr = sum % mp->ma_size;
} while (incr == 0); } while (incr == 0);
for (;;) { for (;;) {
......
...@@ -120,6 +120,7 @@ setlistitem(op, i, newitem) ...@@ -120,6 +120,7 @@ setlistitem(op, i, newitem)
register object *newitem; register object *newitem;
{ {
register object *olditem; register object *olditem;
register object **p;
if (!is_listobject(op)) { if (!is_listobject(op)) {
XDECREF(newitem); XDECREF(newitem);
err_badcall(); err_badcall();
...@@ -130,8 +131,9 @@ setlistitem(op, i, newitem) ...@@ -130,8 +131,9 @@ setlistitem(op, i, newitem)
err_setstr(IndexError, "list assignment index out of range"); err_setstr(IndexError, "list assignment index out of range");
return -1; return -1;
} }
olditem = ((listobject *)op) -> ob_item[i]; p = ((listobject *)op) -> ob_item + i;
((listobject *)op) -> ob_item[i] = newitem; olditem = *p;
*p = newitem;
XDECREF(olditem); XDECREF(olditem);
return 0; return 0;
} }
......
...@@ -133,7 +133,7 @@ lookmapping(mp, key, hash) ...@@ -133,7 +133,7 @@ lookmapping(mp, key, hash)
and 0 < incr < ma_size and both are a function of hash */ and 0 < incr < ma_size and both are a function of hash */
i = sum % mp->ma_size; i = sum % mp->ma_size;
do { do {
sum = sum + sum + sum + 1; sum = 3*sum + 1;
incr = sum % mp->ma_size; incr = sum % mp->ma_size;
} while (incr == 0); } while (incr == 0);
for (;;) { for (;;) {
......
...@@ -419,7 +419,7 @@ string_hash(a) ...@@ -419,7 +419,7 @@ string_hash(a)
p = (unsigned char *) a->ob_sval; p = (unsigned char *) a->ob_sval;
x = *p << 7; x = *p << 7;
while (--len >= 0) while (--len >= 0)
x = (x + x + x) ^ *p++; x = (3*x) ^ *p++;
x ^= a->ob_size; x ^= a->ob_size;
if (x == -1) if (x == -1)
x = -2; x = -2;
......
...@@ -119,9 +119,10 @@ int ...@@ -119,9 +119,10 @@ int
settupleitem(op, i, newitem) settupleitem(op, i, newitem)
register object *op; register object *op;
register int i; register int i;
register object *newitem; object *newitem;
{ {
register object *olditem; register object *olditem;
register object **p;
if (!is_tupleobject(op)) { if (!is_tupleobject(op)) {
XDECREF(newitem); XDECREF(newitem);
err_badcall(); err_badcall();
...@@ -132,8 +133,9 @@ settupleitem(op, i, newitem) ...@@ -132,8 +133,9 @@ settupleitem(op, i, newitem)
err_setstr(IndexError, "tuple assignment index out of range"); err_setstr(IndexError, "tuple assignment index out of range");
return -1; return -1;
} }
olditem = ((tupleobject *)op) -> ob_item[i]; p = ((tupleobject *)op) -> ob_item + i;
((tupleobject *)op) -> ob_item[i] = newitem; olditem = *p;
*p = newitem;
XDECREF(olditem); XDECREF(olditem);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment