2000-05-01
2000-05-01 02:11:25 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>
-
873ceb0e0f8871fb559bc8fa6292da1be1660be8
(16 lines)
(+12/-4)
[
Show
| Annotate
]
Branch: 7.9
all recursive functions now optimized.. (no real need for 'local' or
'inline' in those cases anymore)
Rev: src/docode.c:1.71
Rev: src/interpret_functions.h:1.19
Rev: src/language.yacc:1.182
Rev: src/las.c:1.176
Rev: src/las.h:1.36
Rev: src/lex.c:1.79
Rev: src/peep.c:1.32
Rev: src/peep.in:1.35
Rev: src/program.c:1.235
14:
#include "stuff.h"
#include "bignum.h"
- RCSID("$Id: peep.c,v 1.31 2000/04/21 00:29:48 hubbe Exp $");
+ RCSID("$Id: peep.c,v 1.32 2000/05/01 02:11:25 hubbe Exp $");
struct p_instr_s
{
246:
c=(p_instr *)instrbuf.s.str;
for(e=0;e<length;e++)
- if(c[e].opcode == F_LABEL)
+ if(c[e].opcode == F_LABEL && c[e].arg>=0)
labels[c[e].arg]=e;
for(e=0;e<length;e++)
320:
switch(c->opcode)
{
- case F_NOP: break;
+ case F_NOP:
+ case F_START_FUNCTION:
+ break;
case F_ALIGN:
while(PC % c->arg) add_to_program(0);
break;
-
+ case F_BYTE:
+ add_to_program(c->arg);
+ break;
+
case F_DATA:
ins_int(c->arg, (void(*)(char))add_to_program);
break;
case F_LABEL:
-
+ if(c->arg == -1) break;
#ifdef PIKE_DEBUG
if(c->arg > max_label || c->arg < 0)
fatal("max_label calculation failed!\n");
385: Inside #if defined(PIKE_DEBUG)
{
#ifdef PIKE_DEBUG
if(labels[e]==-1)
- fatal("Hyperspace error: unknown jump point %d at %d (%d).\n",e,labels[e],jumps[e]);
+ fatal("Hyperspace error: unknown jump point %d at %d (pc=%x).\n",e,labels[e],jumps[e]);
#endif
tmp=read_int(jumps[e]);
upd_int(jumps[e], tmp2 - jumps[e]);