3 source/interpret.c | 70 +----------------------------------------------------
4 1 file changed, 2 insertions(+), 68 deletions(-)
6 diff --quilt old/source/interpret.c new/source/interpret.c
7 --- old/source/interpret.c
8 +++ new/source/interpret.c
9 @@ -131,7 +131,7 @@ static void disasmInternal(Inst *inst, i
10 static void stackdump(RestartData *context, int n, int extra);
11 static void stackdumpInternal(RestartData *context, int n, int extra);
12 #define STACKDUMP(n, x) stackdump(Interpreter, n, x)
13 -#define DISASM_RT() disasm(NULL, PC - 1, 1)
14 +#define DISASM_RT() disasm(NULL, Interpreter->last, 1)
15 #else /* #ifndef DEBUG_STACK */
16 #define STACKDUMP(n, x)
18 @@ -696,6 +696,7 @@ int ContinueMacro(RestartData *continuat
19 #define OP(name, fn) case OP_##name:
23 status = (OpFns[inst->val.op])();
26 @@ -1468,7 +1469,6 @@ static void addToGlobalSymTab(Symbol *sy
27 #define BINARY_NUMERIC_OPERATION(operator) \
34 @@ -1479,7 +1479,6 @@ static void addToGlobalSymTab(Symbol *sy
35 #define UNARY_NUMERIC_OPERATION(operator) \
41 PUSH_INT(operator n); \
42 @@ -1498,7 +1497,6 @@ static int pushSymVal(void)
44 DataValue symVal = {NO_TAG, {0}};
50 @@ -1563,7 +1561,6 @@ static int pushImmed(void)
58 @@ -1584,7 +1581,6 @@ static int pushString(void)
66 @@ -1598,7 +1594,6 @@ static int pushArgVal(void)
74 @@ -1614,7 +1609,6 @@ static int pushArgVal(void)
76 static int pushArgCount(void)
81 PUSH_INT(FP_GET_ARG_COUNT(FrameP));
82 @@ -1627,7 +1621,6 @@ static int pushArgArray(void)
83 DataValue argVal, *argArray;
84 Boolean needArgCopy = False;
89 nArgs = FP_GET_ARG_COUNT(FrameP);
90 @@ -1668,7 +1661,6 @@ static int pushArraySymVal(void)
98 @@ -1706,7 +1698,6 @@ static int anonArrayOpen(void)
105 /* make an empty array */
106 @@ -1737,7 +1728,6 @@ static int anonArraySkip(void)
114 @@ -1769,7 +1759,6 @@ static int anonArrayNextVal(void)
116 char numString[TYPE_INT_STR_SIZE(int)];
122 @@ -1806,8 +1795,6 @@ static int anonArrayIndexVal(void)
123 int nextIndex, index;
130 STACKDUMP(nDim+3, 3);
131 @@ -1854,7 +1841,6 @@ static int anonArrayClose(void)
133 DataValue next_index;
138 /* remove top two elements */
139 @@ -1904,8 +1890,6 @@ static int namedArg1orN(Boolean isFirst)
140 DataValue exprVal, argsArray;
147 STACKDUMP(nDim + (isFirst ? 2 : 1), 3);
148 @@ -1951,7 +1935,6 @@ static int swapTop2(void)
156 @@ -1976,7 +1959,6 @@ static int assign(void)
164 @@ -2009,7 +1991,6 @@ static int popStack(void)
172 @@ -2026,7 +2007,6 @@ static int dupStack(void)
180 @@ -2046,8 +2026,6 @@ static int peekPush(void)
188 STACKDUMP(index + 1, 3);
189 @@ -2069,8 +2047,6 @@ static int peekPop(void)
197 STACKDUMP(index + 1, 3);
198 @@ -2092,8 +2068,6 @@ static int peekDup(void)
206 STACKDUMP(index + 1, 3);
207 @@ -2117,7 +2091,6 @@ static int add(void)
208 DataValue leftVal, rightVal, resultArray;
215 @@ -2189,7 +2162,6 @@ static int subtract(void)
216 DataValue leftVal, rightVal, resultArray;
223 @@ -2261,7 +2233,6 @@ static int divide(void)
231 @@ -2277,7 +2248,6 @@ static int modulo(void)
239 @@ -2334,7 +2304,6 @@ static int eq(void)
247 @@ -2390,7 +2359,6 @@ static int bitAnd(void)
248 DataValue leftVal, rightVal, resultArray;
255 @@ -2450,7 +2418,6 @@ static int bitOr(void)
256 DataValue leftVal, rightVal, resultArray;
263 @@ -2533,7 +2500,6 @@ static int power(void)
271 @@ -2574,7 +2540,6 @@ static int booleanize(void)
279 @@ -2687,8 +2652,6 @@ static int concat(void)
288 @@ -2846,8 +2809,6 @@ static int callSubroutine(void)
297 @@ -2884,8 +2845,6 @@ static int callSubroutineUnpackArray(voi
298 SparseArrayEntry *iter;
299 DataValue dvEntry, dvArray, argArray;
306 @@ -3036,7 +2995,6 @@ static int returnValOrNone(int valOnStac
308 static DataValue noValue = {NO_TAG, {0}};
311 STACKDUMP(StackP - FrameP + FP_GET_ARG_COUNT(FrameP) + FP_DIST_TO_ARGS, 3);
313 /* return value is on the stack */
314 @@ -3066,7 +3024,6 @@ static int branch(void)
322 @@ -3096,7 +3053,6 @@ static int branchIf(Boolean trueOrFalse)
330 @@ -3120,7 +3076,6 @@ static int branchNever(void)
338 @@ -3483,8 +3438,6 @@ static int arrayRef(void)
339 char *keyString = NULL;
346 STACKDUMP(nDim+1, 3);
347 @@ -3535,8 +3488,6 @@ static int arrayAssign(void)
355 STACKDUMP(nDim+2, 3);
356 @@ -3588,8 +3539,6 @@ static int arrayRefAndAssignSetup(void)
357 char *keyString = NULL;
365 @@ -3635,7 +3584,6 @@ static int beginArrayIterCheckDim(int ch
370 STACKDUMP(1 + !!checkDim, 3);
373 @@ -3719,7 +3667,6 @@ static int arrayIter(void)
381 @@ -3773,7 +3720,6 @@ static int endArrayIter(void)
389 @@ -3870,7 +3816,6 @@ static int arrayIterArray(void)
391 Boolean keyFound = False;
397 @@ -3957,7 +3902,6 @@ static int inArray(void)
405 @@ -4001,8 +3945,6 @@ static int deleteArrayElement(void)
406 char *keyString = NULL;
413 STACKDUMP(nDim + 1, 3);
414 @@ -4083,7 +4025,6 @@ static int readOnly(void)
422 @@ -4108,7 +4049,6 @@ static int arrayAssignNext(void)
423 DataValue srcValue, dstArray;
430 @@ -4150,7 +4090,6 @@ static int arrayNextNumIdx(void)
432 SparseArrayEntry *iter;
438 @@ -4171,7 +4110,6 @@ static int startLoop(void)
446 @@ -4193,7 +4131,6 @@ static int endLoop(void)
453 GET_BRANCH(continueAddr);
454 @@ -4230,7 +4167,6 @@ static int finalizeLoop(void)
461 /* restore loop count */
462 @@ -4258,7 +4194,6 @@ static int breakLoop(void)
470 @@ -4280,7 +4215,6 @@ static int continueLoop(void)