Branch: Tag:

1998-01-13

1998-01-13 23:01:47 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

Compiler update to use two pass

Rev: src/acconfig.h:1.14
Rev: src/builtin_functions.c:1.59
Rev: src/builtin_functions.h:1.5
Rev: src/compilation.h:1.4
Rev: src/configure.in:1.149
Rev: src/cpp.c:1.3
Rev: src/docode.c:1.24
Rev: src/docode.h:1.4
Rev: src/gc.c:1.24
Rev: src/interpret.c:1.57
Rev: src/interpret.h:1.16
Rev: src/language.yacc:1.51
Rev: src/las.c:1.40
Rev: src/las.h:1.9
Rev: src/lex.c:1.37
Rev: src/lex.h:1.7
Rev: src/main.c:1.32
Rev: src/modules/Image/blit.c:1.26
Rev: src/modules/Image/colortable.c:1.33
Rev: src/modules/Image/dct.c:1.11
Rev: src/modules/Image/image.c:1.73
Rev: src/modules/Image/matrix.c:1.13
Rev: src/modules/Image/operator.c:1.11
Rev: src/modules/Image/pattern.c:1.11
Rev: src/modules/Image/pnm.c:1.9
Rev: src/modules/Image/polyfill.c:1.18
Rev: src/modules/Image/togif.c:1.29
Rev: src/modules/Image/x.c:1.17
Rev: src/modules/Pipe/pipe.c:1.15
Rev: src/modules/Regexp/glue.c:1.9
Rev: src/modules/_Crypto/cbc.c:1.10
Rev: src/modules/_Crypto/crypto.c:1.24
Rev: src/modules/_Crypto/des.c:1.11
Rev: src/modules/_Crypto/pipe.c:1.11
Rev: src/modules/_Crypto/sha.c:1.9
Rev: src/modules/files/socktest.pike:1.6
Rev: src/modules/system/system.c:1.37
Rev: src/object.c:1.31
Rev: src/object.h:1.13
Rev: src/opcodes.c:1.10
Rev: src/operators.c:1.22
Rev: src/peep.c:1.16
Rev: src/peep.in:1.9
Rev: src/pike_types.c:1.27
Rev: src/pike_types.h:1.6
Rev: src/program.c:1.48
Rev: src/program.h:1.24
Rev: src/program_areas.h:1.2
Rev: src/stralloc.c:1.21
Rev: src/stralloc.h:1.10
Rev: src/svalue.c:1.18
Rev: src/testsuite.in:1.64
Rev: src/threads.c:1.51
Rev: src/threads.h:1.26

111: Inside #if defined(DEBUG)
   if(b>255)    error("Instruction too big %d\n",b);   #endif -  ins_byte((unsigned char)b,A_PROGRAM); +  add_to_program((unsigned char)b);   }      static void ins_f_byte_with_arg(unsigned int a,unsigned INT32 b)
127:    if( b < 256*256)    {    ins_f_byte(F_PREFIX_CHARX256); -  ins_byte(b>>8, A_PROGRAM); +  add_to_program(b>>8);    }else if(b < 256*256*256) {    ins_f_byte(F_PREFIX_WORDX256); -  ins_byte(b >> 16, A_PROGRAM); -  ins_byte(b >> 8, A_PROGRAM); +  add_to_program(b>>16); +  add_to_program(b>>8);    }else{    ins_f_byte(F_PREFIX_24BITX256); -  ins_byte(b >> 24, A_PROGRAM); -  ins_byte(b >> 16, A_PROGRAM); -  ins_byte(b >> 8, A_PROGRAM); +  add_to_program(b>>24); +  add_to_program(b>>16); +  add_to_program(b>>8);    }    }    ins_f_byte(a); -  ins_byte(b, A_PROGRAM); +  add_to_program(b);   }      void assemble(void)
248:    {    case F_NOP: break;    case F_ALIGN: -  while(PC % c->arg) ins_byte(0, A_PROGRAM); +  while(PC % c->arg) add_to_program(0);    break;       case F_BYTE: -  ins_byte(c->arg, A_PROGRAM); +  add_to_program(c->arg);    break;       case F_LABEL:
276:    if(c->arg > max_label || c->arg < 0) fatal("Jump to unknown label?\n");   #endif    tmp=PC; -  ins_int(jumps[c->arg],A_PROGRAM); +  ins_int(jumps[c->arg], (void(*)(char))add_to_program);    jumps[c->arg]=tmp;    break;   
352:       p->opcode=f;    p->line=cl; -  copy_shared_string(p->file, current_file); +  copy_shared_string(p->file, lex.current_file);    p->arg=b;       return p - (p_instr *)instrbuf.s.str;