pike.git / src / opcodes.c

version» Context lines:

pike.git/src/opcodes.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id$ +    */      #include "global.h"   #include "constants.h"   #include "interpret.h"   #include "opcodes.h"   #include "pike_embed.h"      #ifdef INSTR_PROFILING   
pike.git/src/opcodes.c:262:   { "arg+=768", F_PREFIX_768,0 NULLADDR },      { "arg+=1024", F_PREFIX2_1024,0 NULLADDR },   { "arg+=256", F_PREFIX2_256,0 NULLADDR },   { "arg+=256*X", F_PREFIX2_CHARX256,0 NULLADDR },   { "arg+=256*XX", F_PREFIX2_WORDX256,0 NULLADDR },   { "arg+=256*XXX", F_PREFIX2_24BITX256,0 NULLADDR },   { "arg+=512", F_PREFIX2_512,0 NULLADDR },   { "arg+=768", F_PREFIX2_768,0 NULLADDR },    + { "[i..]", F_RANGE_FROM_BEG, 0 NULLADDR }, + { "[<i..]", F_RANGE_FROM_END, 0 NULLADDR }, + { "[..]", F_RANGE_OPEN, 0 NULLADDR }, +    { "break", F_BREAK,0 NULLADDR },   { "case", F_CASE,0 NULLADDR }, -  + { "case_range", F_CASE_RANGE,0 NULLADDR },   { "continue", F_CONTINUE,0 NULLADDR },   { "default", F_DEFAULT,0 NULLADDR },   { "do-while", F_DO,0 NULLADDR },   { "for", F_FOR,0 NULLADDR },    -  + { "auto_map", F_AUTO_MAP, 0 NULLADDR }, + { "auto_map_marker", F_AUTO_MAP_MARKER, 0 NULLADDR }, + { "volatile_return", F_VOLATILE_RETURN, 0 NULLADDR }, + { "version", F_VERSION, 0 NULLADDR }, +    { "pointer", F_POINTER, I_ISPOINTER NULLADDR },   { "data", F_DATA, I_DATA NULLADDR },   { "byte", F_BYTE, I_DATA NULLADDR },   { "lvalue_list", F_LVALUE_LIST,0 NULLADDR }, -  + { "arg_list", F_ARG_LIST, 0 NULLADDR }, + { "comma_expr", F_COMMA_EXPR, 0 NULLADDR }, + { "val_lval", F_VAL_LVAL, 0 NULLADDR }, + { "multi_assign", F_MULTI_ASSIGN, 0 NULLADDR }, + { "assign_self", F_ASSIGN_SELF, 0 NULLADDR },   { "label", F_LABEL,I_HASARG NULLADDR }, -  + { "stmt_label", F_NORMAL_STMT_LABEL,I_HASARG NULLADDR }, + { "custom_label", F_CUSTOM_STMT_LABEL,I_HASARG NULLADDR },   { "align", F_ALIGN, I_HASARG NULLADDR },   { "nop", F_NOP,0 NULLADDR },   { "entry", F_ENTRY,0 NULLADDR },   { "filename", F_FILENAME, 0 NULLADDR },   { "line", F_LINE, 0 NULLADDR },   { "get/set", F_GET_SET, 0 NULLADDR }, -  + { "call_efun", F_EFUN_CALL, 0 NULLADDR },   { "function start", F_START_FUNCTION,0 NULLADDR },   { "notreached!", F_NOTREACHED, 0 NULLADDR }, -  + { "opcode_max", F_MAX_OPCODE, 0 NULLADDR }, + { "instr_max", F_MAX_INSTR, 0 NULLADDR },   };      struct instr instrs[F_MAX_INSTR - F_OFFSET];   #ifdef PIKE_USE_MACHINE_CODE   size_t instrs_checksum;   #endif /* PIKE_USE_MACHINE_CODE */    -  + #ifdef PIKE_DEBUG   const char *low_get_f_name(int n, struct program *p)   {    static char buf[30];       if (n<F_MAX_OPCODE)    {    if ((n >= F_OFFSET) && instrs[n-F_OFFSET].name)    return instrs[n-F_OFFSET].name;    sprintf(buf, "<OTHER %d>", n);    return buf;
pike.git/src/opcodes.c:359:   {    static char buf[30];    if (n<F_MAX_INSTR && instrs[n-F_OFFSET].name)    {    return instrs[n-F_OFFSET].name;    }else{    sprintf(buf, "<OTHER %d>", n);    return buf;    }   } + #endif /* PIKE_DEBUG */      void init_opcodes(void)   {    unsigned int i;   #ifdef PIKE_DEBUG    int fatal_later=0;   #ifdef INSTR_PROFILING    instr_counter_storage=init_instr_storage_pointers(p_flag);   #endif   #endif       for(i=0; i<NELEM(instr_names);i++)    {   #ifdef PIKE_DEBUG -  if(instr_names[i].token >= F_MAX_INSTR) +  if(instr_names[i].token > F_MAX_INSTR)    {    fprintf(stderr,"Error in instr_names[%u]\n\n",i);    fatal_later++;    }       if(instrs[instr_names[i].token - F_OFFSET].name)    {    fprintf(stderr,"Duplicate name for %s\n",instr_names[i].word);    fatal_later++;    }   #endif    -  + #ifdef PIKE_DEBUG    instrs[instr_names[i].token - F_OFFSET].name = instr_names[i].word; -  + #endif    instrs[instr_names[i].token - F_OFFSET].flags=instr_names[i].flags;   #ifdef PIKE_USE_MACHINE_CODE    instrs[instr_names[i].token - F_OFFSET].address=instr_names[i].address;   #endif    }      #ifdef PIKE_USE_MACHINE_CODE    instrs_checksum = hashmem((const unsigned char*)instrs, sizeof(instrs),    sizeof(struct instr));    /* fprintf(stderr, "Instruction checksum: %d\n", instrs_checksum); */   #endif /* PIKE_USE_MACHINE_CODE */      #ifdef PIKE_DEBUG -  for(i=1; i<F_MAX_OPCODE-F_OFFSET;i++) +  for(i=1; i<F_MAX_INSTR-F_OFFSET;i++)    {    if(!instrs[i].name)    {    fprintf(stderr,"Opcode %d does not have a name.\n",i);    fatal_later++;    }    }    if(fatal_later)    Pike_fatal("Found %d errors in instrs.\n",fatal_later);