pike.git / src / interpret_functions.h

version» Context lines:

pike.git/src/interpret_functions.h: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: interpret_functions.h,v 1.190 2006/03/10 17:24:50 grubba Exp $ + || $Id: interpret_functions.h,v 1.191 2006/03/15 12:29:15 grubba Exp $   */      /*    * Opcode definitions for the interpreter.    */      #include "global.h"      #undef CJUMP   #undef AUTO_BIGNUM_LOOP_TEST
pike.git/src/interpret_functions.h:1277:    struct catch_context *new_catch_ctx = alloc_catch_context();    DO_IF_REAL_DEBUG (    new_catch_ctx->frame = Pike_fp;    init_recovery (&new_catch_ctx->recovery, 0, 0, PERR_LOCATION());    );    DO_IF_NOT_REAL_DEBUG (    init_recovery (&new_catch_ctx->recovery, 0);    );    new_catch_ctx->save_expendible = Pike_fp->expendible;    JUMP_SET_TO_PC_AT_NEXT (addr); -  new_catch_ctx->continue_reladdr = GET_JUMP(); +  new_catch_ctx->continue_reladdr = GET_JUMP() +  /* We need to run the entry prologue... */ +  - ENTRY_PROLOGUE_SIZE; +     new_catch_ctx->next_addr = addr;    new_catch_ctx->prev = Pike_interpreter.catch_ctx;    Pike_interpreter.catch_ctx = new_catch_ctx;    DO_IF_DEBUG({    TRACE((3,"- Pushed catch context %p\n", new_catch_ctx));    });    }       Pike_fp->expendible = Pike_fp->locals + Pike_fp->num_locals;       /* Need to adjust next_addr by sizeof(INT32) to skip past the jump    * address to the continue position after the catch block. */    addr = (PIKE_OPCODE_T *) ((INT32 *) addr + 1);       if (Pike_interpreter.catching_eval_jmpbuf) {    /* There's already a catching_eval_instruction around our    * eval_instruction, so we can just continue. */    debug_malloc_touch_named (Pike_interpreter.catch_ctx, "(1)"); -  /* We also need to skip past the entry prologue... */ +  /* Skip past the entry prologue... */    addr += ENTRY_PROLOGUE_SIZE;    SET_PROG_COUNTER(addr);    FETCH;    DO_IF_DEBUG({    TRACE((3,"- In active catch; continuing at %p\n", addr));    });    JUMP_DONE;    }       else {
pike.git/src/interpret_functions.h:1323:    * inside catching_eval_instruction, we keep doing it until it's    * time to return. */       DO_IF_DEBUG({    TRACE((3,"- Activating catch; calling %p in context %p\n",    addr, Pike_interpreter.catch_ctx));    });       int res = catching_eval_instruction (addr);    +  DO_IF_DEBUG({ +  TRACE((3,"- catching_eval_instruction(%p) returned %d\n", +  addr, res)); +  }); +     if (res != -3) {    /* There was an inter return inside the evaluated code. Just    * propagate it. */    DO_IF_DEBUG ({    TRACE((3,"- Returning from catch.\n"));    if (res != -1) Pike_fatal ("Unexpected return value from "    "catching_eval_instruction: %d\n", res);    });    break;    }