Branch: Tag:

2001-07-20

2001-07-20 16:21:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added {EN,DE}CODE_PROGRAM() to the pikecode API.

Rev: src/code/README.txt:1.3
Rev: src/code/sparc.c:1.3
Rev: src/code/sparc.h:1.4
Rev: src/encode.c:1.115

25:   #include "version.h"   #include "bignum.h"    - RCSID("$Id: encode.c,v 1.114 2001/07/19 19:05:37 grubba Exp $"); + RCSID("$Id: encode.c,v 1.115 2001/07/20 16:21:31 grubba Exp $");      /* #define ENCODE_DEBUG */   
914:    code_number( p->PIKE_CONCAT(num_,Z), data);   #include "program_areas.h"    - #ifdef PIKE_USE_MACHINE_CODE - #ifdef sparc -  /* De-relocate the program... */ -  { -  size_t prev = 0, rel; -  for (rel = 0; rel < p->num_relocations; rel++) { -  size_t off = p->relocations[rel]; -  INT32 opcode; - #ifdef PIKE_DEBUG -  if (off < prev) { -  fatal("Relocations in bad order!\n"); -  } - #endif /* PIKE_DEBUG */ -  adddata2(p->program + prev, off - prev); -  - #ifdef PIKE_DEBUG -  if ((p->program[off] & 0xc0000000) != 0x40000000) { -  fatal("Bad relocation!\n"); -  } - #endif /* PIKE_DEBUG */ -  /* Relocate to being relative to NULL */ -  opcode = 0x40000000 | -  ((p->program[off] + (((INT32)(p->program)>>2))) & 0x3fffffff); -  adddata2(&opcode, 1); -  prev = off+1; -  } -  adddata2(p->program + prev, p->num_program - prev); -  } - #else + #ifdef ENCODE_PROGRAM +  ENCODE_PROGRAM(p, &(data->buf)); + #else /* !ENCODE_PROGRAM */    adddata2(p->program, p->num_program); - #endif /* sparc */ -  + #endif /* ENCODE_PROGRAM */ + #ifdef PIKE_USE_MACHINE_CODE    adddata2(p->relocations, p->num_relocations); - #else /* !PIKE_USE_MACHINE_CODE */ -  -  adddata2(p->program, p->num_program); -  +    #endif /* PIKE_USE_MACHINE_CODE */       adddata2(p->linenumbers, p->num_linenumbers);
2089: Inside #if defined(PIKE_USE_MACHINE_CODE)
   getdata2(p->program, p->num_program);   #ifdef PIKE_USE_MACHINE_CODE    getdata2(p->relocations, p->num_relocations); -  - #ifdef sparc -  /* Relocate the program... */ -  { -  PIKE_OPCODE_T *prog = p->program; -  INT32 delta = ((INT32)p->program)>>2; -  size_t rel = p->num_relocations; -  while (rel--) { - #ifdef PIKE_DEBUG -  if ((prog[p->relocations[rel]] & 0xc0000000) != 0x40000000) { -  fatal("Bad relocation: %d, off:%d, opcode: 0x%08x\n", -  rel, p->relocations[rel], -  prog[p->relocations[rel]]); -  } - #endif /* PIKE_DEBUG */ -  prog[p->relocations[rel]] = 0x40000000 | -  (((prog[p->relocations[rel]] & 0x3fffffff) - delta) & -  0x3fffffff); -  } -  } - #endif /* sparc */ +    #endif /* PIKE_USE_MACHINE_CODE */ -  +  + #ifdef DECODE_PROGRAM +  DECODE_PROGRAM(p); + #endif /* DECODE_PROGRAM */ +     getdata2(p->linenumbers, p->num_linenumbers);      #ifdef DEBUG_MALLOC