final step to context based macro interpreter
[nedit-bw.git] / remove-args-from-DISASM_RT.patch
bloba63a11e399067076924edc8337ebdbd820a351f9
1 ---
3 source/interpret.c | 108 +++++++++++++++++++++++++++++------------------------
4 1 file changed, 60 insertions(+), 48 deletions(-)
6 diff --quilt old/source/interpret.c new/source/interpret.c
7 --- old/source/interpret.c
8 +++ new/source/interpret.c
9 @@ -139,10 +139,10 @@ static void disasmInternal(Inst *inst, i
10 static void stackdump(int n, int extra);
11 static void stackdumpInternal(int n, int extra);
12 #define STACKDUMP(n, x) stackdump(n, (x) + 10)
13 -#define DISASM_RT(i, n) disasm(NULL, i, n)
14 +#define DISASM_RT() disasm(NULL, PC - 1, 1)
15 #else /* #ifndef DEBUG_STACK */
16 #define STACKDUMP(n, x)
17 -#define DISASM_RT(i, n)
18 +#define DISASM_RT()
19 #endif /* #ifndef DEBUG_STACK */
21 /* Global symbols and function definitions, is null initialized */
22 @@ -1561,7 +1561,7 @@ static void addToGlobalSymTab(Symbol *sy
23 #define BINARY_NUMERIC_OPERATION(operator) \
24 do { \
25 int n1, n2; \
26 - DISASM_RT(PC-1, 1); \
27 + DISASM_RT(); \
28 STACKDUMP(2, 3); \
29 POP_INT(n2); \
30 POP_INT(n1); \
31 @@ -1572,7 +1572,7 @@ static void addToGlobalSymTab(Symbol *sy
32 #define UNARY_NUMERIC_OPERATION(operator) \
33 do { \
34 int n; \
35 - DISASM_RT(PC-1, 1); \
36 + DISASM_RT(); \
37 STACKDUMP(1, 3); \
38 POP_INT(n); \
39 PUSH_INT(operator n); \
40 @@ -1592,7 +1592,7 @@ OP_FUNCTION(pushSymVal)
41 int nArgs, argNum;
42 DataValue symVal;
44 - DISASM_RT(PC-1, 2);
45 + DISASM_RT();
46 STACKDUMP(0, 3);
48 GET_SYM(s);
49 @@ -1647,7 +1647,7 @@ OP_FUNCTION(pushImmed)
51 int immed;
53 - DISASM_RT(PC-1, 2);
54 + DISASM_RT();
55 STACKDUMP(0, 3);
57 GET_IMMED(immed);
58 @@ -1661,7 +1661,7 @@ OP_FUNCTION(pushArgVal)
60 int nArgs, argNum;
62 - DISASM_RT(PC-1, 1);
63 + DISASM_RT();
64 STACKDUMP(1, 3);
66 POP_INT(argNum);
67 @@ -1677,7 +1677,7 @@ OP_FUNCTION(pushArgVal)
69 OP_FUNCTION(pushArgCount)
71 - DISASM_RT(PC-1, 1);
72 + DISASM_RT();
73 STACKDUMP(0, 3);
75 PUSH_INT(FRAME_GET_ARG_COUNT());
76 @@ -1690,7 +1690,7 @@ OP_FUNCTION(pushArgArray)
77 DataValue argVal, *argArray;
78 Boolean needArgCopy = False;
80 - DISASM_RT(PC-1, 1);
81 + DISASM_RT();
82 STACKDUMP(0, 3);
84 nArgs = FRAME_GET_ARG_COUNT();
85 @@ -1731,7 +1731,7 @@ OP_FUNCTION(pushArraySymVal)
86 DataValue *dataPtr;
87 int initEmpty;
89 - DISASM_RT(PC-1, 3);
90 + DISASM_RT();
91 STACKDUMP(0, 3);
93 GET_SYM(sym);
94 @@ -1774,7 +1774,7 @@ OP_FUNCTION(anonArrayOpen)
96 DataValue dataVal;
98 - DISASM_RT(PC-1, 1);
99 + DISASM_RT();
100 STACKDUMP(0, 3);
102 /* make an empty array */
103 @@ -1805,7 +1805,7 @@ OP_FUNCTION(anonArraySkip)
104 DataValue anonArray;
105 int nextIndex;
107 - DISASM_RT(PC-1, 1);
108 + DISASM_RT();
109 STACKDUMP(2, 3);
111 POP(anonArray);
112 @@ -1837,7 +1837,7 @@ OP_FUNCTION(anonArrayNextVal)
113 int nextIndex;
114 char numString[TYPE_INT_STR_SIZE(int)];
116 - DISASM_RT(PC-1, 1);
117 + DISASM_RT();
118 STACKDUMP(3, 3);
120 POP(exprVal);
121 @@ -1874,9 +1874,10 @@ OP_FUNCTION(anonArrayIndexVal)
122 int nextIndex, index;
123 int nDim;
125 + DISASM_RT();
127 GET_IMMED(nDim);
129 - DISASM_RT(PC-2, 2);
130 STACKDUMP(nDim+3, 3);
132 POP(exprVal);
133 @@ -1921,7 +1922,7 @@ OP_FUNCTION(anonArrayClose)
134 DataValue anonArray;
135 DataValue next_index;
137 - DISASM_RT(PC-1, 1);
138 + DISASM_RT();
139 STACKDUMP(2, 3);
141 /* remove top two elements */
142 @@ -1971,9 +1972,10 @@ static int namedArg1orN(Boolean isFirst)
143 DataValue exprVal, argsArray;
144 int nDim, index;
146 + DISASM_RT();
148 GET_IMMED(nDim);
150 - DISASM_RT(PC-2, 2);
151 STACKDUMP(nDim + (isFirst ? 2 : 1), 3);
153 POP(exprVal);
154 @@ -2017,7 +2019,7 @@ OP_FUNCTION(swapTop2)
156 DataValue dv1, dv2;
158 - DISASM_RT(PC-1, 1);
159 + DISASM_RT();
160 STACKDUMP(2, 3);
162 POP(dv1);
163 @@ -2042,7 +2044,7 @@ OP_FUNCTION(assign)
164 DataValue *dataPtr;
165 DataValue value;
167 - DISASM_RT(PC-1, 2);
168 + DISASM_RT();
169 STACKDUMP(1, 3);
171 GET_SYM(sym);
172 @@ -2091,9 +2093,10 @@ OP_FUNCTION(arrayIndex)
173 DataValue keyData;
174 int nDim;
176 + DISASM_RT();
178 GET_IMMED(nDim);
180 - DISASM_RT(PC-2, 2);
181 STACKDUMP(nDim+3, 3);
183 /* the next nDim stack entries form the index */
184 @@ -2123,7 +2126,7 @@ OP_FUNCTION(popStack)
186 DataValue val;
188 - DISASM_RT(PC-1, 1);
189 + DISASM_RT();
190 STACKDUMP(1, 4);
192 POP(val);
193 @@ -2140,7 +2143,7 @@ OP_FUNCTION(dupStack)
195 DataValue value;
197 - DISASM_RT(PC-1, 1);
198 + DISASM_RT();
199 STACKDUMP(1, 3);
201 PEEK(value, 0);
202 @@ -2162,7 +2165,7 @@ OP_FUNCTION(add)
203 DataValue leftVal, rightVal, resultArray;
204 int n1, n2;
206 - DISASM_RT(PC-1, 1);
207 + DISASM_RT();
208 STACKDUMP(2, 3);
210 PEEK(rightVal, 0);
211 @@ -2234,7 +2237,7 @@ OP_FUNCTION(subtract)
212 DataValue leftVal, rightVal, resultArray;
213 int n1, n2;
215 - DISASM_RT(PC-1, 1);
216 + DISASM_RT();
217 STACKDUMP(2, 3);
219 PEEK(rightVal, 0);
220 @@ -2306,7 +2309,7 @@ OP_FUNCTION(divide)
222 int n1, n2;
224 - DISASM_RT(PC-1, 1);
225 + DISASM_RT();
226 STACKDUMP(2, 3);
228 POP_INT(n2);
229 @@ -2322,7 +2325,7 @@ OP_FUNCTION(modulo)
231 int n1, n2;
233 - DISASM_RT(PC-1, 1);
234 + DISASM_RT();
235 STACKDUMP(2, 3);
237 POP_INT(n2);
238 @@ -2379,7 +2382,7 @@ OP_FUNCTION(eq)
240 DataValue v1, v2;
242 - DISASM_RT(PC-1, 1);
243 + DISASM_RT();
244 STACKDUMP(2, 3);
246 POP(v1);
247 @@ -2435,7 +2438,7 @@ OP_FUNCTION(bitAnd)
248 DataValue leftVal, rightVal, resultArray;
249 int n1, n2;
251 - DISASM_RT(PC-1, 1);
252 + DISASM_RT();
253 STACKDUMP(2, 3);
255 PEEK(rightVal, 0);
256 @@ -2495,7 +2498,7 @@ OP_FUNCTION(bitOr)
257 DataValue leftVal, rightVal, resultArray;
258 int n1, n2;
260 - DISASM_RT(PC-1, 1);
261 + DISASM_RT();
262 STACKDUMP(2, 3);
264 PEEK(rightVal, 0);
265 @@ -2578,7 +2581,7 @@ OP_FUNCTION(power)
267 int n1, n2, n3;
269 - DISASM_RT(PC-1, 1);
270 + DISASM_RT();
271 STACKDUMP(2, 3);
273 POP_INT(n2);
274 @@ -2700,9 +2703,10 @@ OP_FUNCTION(concat)
276 int nExpr;
278 + DISASM_RT();
280 GET_IMMED(nExpr);
282 - DISASM_RT(PC-2, 2);
283 STACKDUMP(nExpr, 3);
285 len = concatenateNwithSep(nExpr, "", &out, False);
286 @@ -2872,10 +2876,11 @@ OP_FUNCTION(callSubroutine)
287 Symbol *sym;
288 int nArgs;
290 + DISASM_RT();
292 GET_SYM(sym);
293 GET_IMMED(nArgs);
295 - DISASM_RT(PC-3, 3);
296 STACKDUMP(nArgs > 0 ? nArgs : -nArgs, 3);
298 return callSubroutineFromSymbol(sym, nArgs);
299 @@ -2897,10 +2902,11 @@ OP_FUNCTION(callSubroutineStackedN)
300 /* this is much like callSubroutine, but we get nArgs off the stack
301 and it will always be negative since there is always an argArray */
303 + DISASM_RT();
305 GET_SYM(sym);
307 PEEK_INT(nArgs, 0);
308 - DISASM_RT(PC-2, 2);
309 STACKDUMP(-nArgs + 1, 3); /* +1 for stacked nArgs */
311 POP_INT(nArgs);
312 @@ -3009,7 +3015,7 @@ OP_FUNCTION(unpackArrayToArgs)
313 SparseArrayEntry *iter;
314 DataValue dvEntry, dvArray, argArray;
316 - DISASM_RT(PC-1, 1);
317 + DISASM_RT();
318 STACKDUMP(1, 3);
320 GET_IMMED(nArgs);
321 @@ -3097,7 +3103,7 @@ static int returnValOrNone(int valOnStac
322 DataValue retVal;
323 static DataValue noValue = {NO_TAG, {0}};
325 - DISASM_RT(PC-1, 1);
326 + DISASM_RT();
327 STACKDUMP(StackP - FrameP + FRAME_GET_ARG_COUNT() + FP_TO_ARGS_DIST, 3);
329 /* return value is on the stack */
330 @@ -3126,7 +3132,8 @@ static int returnValOrNone(int valOnStac
331 OP_FUNCTION(branch)
333 Inst *addr;
334 - DISASM_RT(PC-1, 2);
336 + DISASM_RT();
337 STACKDUMP(0, 3);
339 GET_BRANCH(addr);
340 @@ -3156,7 +3163,7 @@ static int branchIf(Boolean trueOrFalse)
341 int value;
342 Inst *addr;
344 - DISASM_RT(PC-1, 2);
345 + DISASM_RT();
346 STACKDUMP(1, 3);
348 GET_BRANCH(addr);
349 @@ -3179,7 +3186,8 @@ static int branchIf(Boolean trueOrFalse)
350 OP_FUNCTION(branchNever)
352 Inst *addr;
353 - DISASM_RT(PC-1, 2);
355 + DISASM_RT();
356 STACKDUMP(0, 3);
358 GET_BRANCH(addr);
359 @@ -3544,9 +3552,10 @@ OP_FUNCTION(arrayRef)
360 char *keyString = NULL;
361 int nDim;
363 + DISASM_RT();
365 GET_IMMED(nDim);
367 - DISASM_RT(PC-2, 2);
368 STACKDUMP(nDim+1, 3);
370 if (nDim > 0) {
371 @@ -3594,9 +3603,10 @@ OP_FUNCTION(arrayAssign)
372 int errNum;
373 int nDim;
375 + DISASM_RT();
377 GET_IMMED(nDim);
379 - DISASM_RT(PC-2, 1);
380 STACKDUMP(nDim+2, 3);
382 if (nDim > 0) {
383 @@ -3646,10 +3656,11 @@ OP_FUNCTION(arrayRefAndAssignSetup)
384 char *keyString = NULL;
385 int binaryOp, nDim;
387 + DISASM_RT();
389 GET_IMMED(binaryOp);
390 GET_IMMED(nDim);
392 - DISASM_RT(PC-3, 3);
393 STACKDUMP(nDim + (binaryOp ? 2 : 1), 3);
395 if (binaryOp) {
396 @@ -3700,7 +3711,7 @@ OP_FUNCTION(beginArrayIter)
397 DataValue *iteratorValPtr;
398 DataValue arrayVal;
400 - DISASM_RT(PC-1, 2);
401 + DISASM_RT();
402 STACKDUMP(1, 3);
404 GET_SYM(iterator);
405 @@ -3759,7 +3770,7 @@ OP_FUNCTION(arrayIter)
406 Inst *branchAddr;
407 int withVal;
409 - DISASM_RT(PC-1, 4);
410 + DISASM_RT();
411 STACKDUMP(0, 4);
413 GET_IMMED(withVal);
414 @@ -3835,7 +3846,7 @@ OP_FUNCTION(beginArrayMultiIterArray)
415 DataValue arrayVal;
416 int nDims;
418 - DISASM_RT(PC-1, 2);
419 + DISASM_RT();
420 STACKDUMP(2, 3);
422 GET_SYM(iterator);
423 @@ -3937,7 +3948,7 @@ OP_FUNCTION(arrayMultiIterArray)
424 int nDims, d;
425 Boolean keyFound = False;
427 - DISASM_RT(PC-1, 4);
428 + DISASM_RT();
429 STACKDUMP(1, 4);
431 GET_IMMED(withVal);
432 @@ -4039,7 +4050,7 @@ OP_FUNCTION(inArray)
433 char *keyStr;
434 int inResult = 0;
436 - DISASM_RT(PC-1, 1);
437 + DISASM_RT();
438 STACKDUMP(2, 3);
440 POP(theArray);
441 @@ -4083,9 +4094,10 @@ OP_FUNCTION(deleteArrayElement)
442 char *keyString = NULL;
443 int nDim;
445 + DISASM_RT();
447 GET_IMMED(nDim);
449 - DISASM_RT(PC-2, 2);
450 STACKDUMP(nDim + 1, 3);
452 if (nDim > 0) {
453 @@ -4176,7 +4188,7 @@ OP_FUNCTION(arrayAssignNext)
454 DataValue srcValue, dstArray;
455 int errNum;
457 - DISASM_RT(PC-1, 1);
458 + DISASM_RT();
459 STACKDUMP(0, 3);
461 POP(srcValue);
462 @@ -4218,7 +4230,7 @@ OP_FUNCTION(arrayNextNumIdx)
463 DataValue srcArray;
464 SparseArrayEntry *iter;
466 - DISASM_RT(PC-1, 1);
467 + DISASM_RT();
468 STACKDUMP(0, 3);
470 POP(srcArray);