summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Python/ceval.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 51df60a..d3a0053 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -627,8 +627,7 @@ eval_frame(PyFrameObject *f)
#define INSTR_OFFSET() (next_instr - first_instr)
#define NEXTOP() (*next_instr++)
-#define OPARG() (next_instr[0] + (next_instr[1]<<8))
-#define OPARG_SIZE 2
+#define NEXTARG() (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
#define JUMPTO(x) (next_instr = first_instr + (x))
#define JUMPBY(x) (next_instr += (x))
@@ -659,7 +658,8 @@ eval_frame(PyFrameObject *f)
#endif
#define PREDICTED(op) PRED_##op: next_instr++
-#define PREDICTED_WITH_ARG(op) PRED_##op: next_instr++; oparg = OPARG(); next_instr += OPARG_SIZE
+#define PREDICTED_WITH_ARG(op) PRED_##op: oparg = (next_instr[2]<<8) + \
+ next_instr[1]; next_instr += 3
/* Stack manipulation macros */
@@ -862,11 +862,8 @@ eval_frame(PyFrameObject *f)
/* Extract opcode and argument */
opcode = NEXTOP();
- if (HAS_ARG(opcode)) {
- oparg = OPARG();
- next_instr += OPARG_SIZE;
- }
-
+ if (HAS_ARG(opcode))
+ oparg = NEXTARG();
dispatch_opcode:
#ifdef DYNAMIC_EXECUTION_PROFILE
#ifdef DXPAIRS
@@ -2252,8 +2249,7 @@ eval_frame(PyFrameObject *f)
case EXTENDED_ARG:
opcode = NEXTOP();
- oparg = oparg<<16 | OPARG();
- next_instr += OPARG_SIZE;
+ oparg = oparg<<16 | NEXTARG();
goto dispatch_opcode;
default: