pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   /**/   #include "global.h" - RCSID("$Id: interpret.c,v 1.227 2001/07/18 20:20:23 grubba Exp $"); + RCSID("$Id: interpret.c,v 1.228 2001/07/19 19:06:48 grubba Exp $");   #include "interpret.h"   #include "object.h"   #include "program.h"   #include "svalue.h"   #include "array.h"   #include "mapping.h"   #include "pike_error.h"   #include "language.h"   #include "stralloc.h"   #include "constants.h"
pike.git/src/interpret.c:838: Inside #if defined(__i386__)
  #ifdef __i386__    /* This code does not clobber %eax, but    * the code jumped to does.    */    __asm__ __volatile__( " sub $8,%%esp\n"    " jmp *%0"    : "=m" (pc)    :    : "cc", "memory", "eax" );   #elif defined(sparc) +  /* The test is needed to get the labels to work... */ +  if (pc) {    /* No extra setup needed!    */    return ((int (*)(void))pc)(); -  +  }   #endif /* __i386__ || sparc */ -  +     /* This code is never reached, but will    * prevent gcc from optimizing the labels below too much    */       fprintf(stderr,"We have reached the end of the world!\n");    goto *dummy_label;       /* %%esp will be slightly buggered after    * returning from the function code (8 bytes off), but that    * should not matter to these return statements. -Hubbe    */    -  inter_return_label: return -1; +     inter_escape_catch_label: return -2; -  +  inter_return_label: return -1;   }      #endif /* __GNUC__ */      #ifndef SET_PROG_COUNTER   #define SET_PROG_COUNTER(X) (PROG_COUNTER=(X))   #endif /* SET_PROG_COUNTER */      #undef DONE   #undef FETCH