pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:1110:    cc, cc ? cc->prev : NULL)); \    if (!cc) \    Pike_fatal ("Catch context dropoff.\n"); \    if (cc->frame != Pike_fp) \    Pike_fatal ("Catch context doesn't belong to this frame.\n"); \    if (Pike_mark_sp != cc->recovery.mark_sp + Pike_interpreter.mark_stack) \    Pike_fatal ("Mark sp diff in catch context pop.\n"); \    ); \    debug_malloc_touch (cc); \    UNSETJMP (cc->recovery); \ -  frame_set_expendible(Pike_fp, cc->save_expendible); \ +  Pike_fp->expendible = cc->save_expendible; \    Pike_interpreter.catch_ctx = cc->prev; \    really_free_catch_context (cc); \    } while (0)   #else   #define POP_CATCH_CONTEXT do { \    struct catch_context *cc = Pike_interpreter.catch_ctx; \    DO_IF_DEBUG ( \    TRACE((3,"- Popping catch context %p ==> %p\n", \    cc, cc ? cc->prev : NULL)); \    if (!Pike_interpreter.catching_eval_jmpbuf) \
pike.git/src/interpret.c:1391: Inside #if defined(OPCODE_INLINE_CATCH)
   }   #endif    {    struct catch_context *new_catch_ctx = alloc_catch_context();   #ifdef PIKE_DEBUG    new_catch_ctx->frame = Pike_fp;    init_recovery (&new_catch_ctx->recovery, 0, 0, PERR_LOCATION());   #else    init_recovery (&new_catch_ctx->recovery, 0);   #endif -  new_catch_ctx->save_expendible = frame_get_expendible(Pike_fp); +  new_catch_ctx->save_expendible = Pike_fp->expendible;       /* Note: no prologue. */    new_catch_ctx->continue_reladdr = (INT32)get_unaligned32(addr);       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_offset = Pike_fp->num_locals; +  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. */    return (PIKE_OPCODE_T *) ((INT32 *) addr + 1) + ENTRY_PROLOGUE_SIZE;   }      /* Helper function for F_CATCH machine code. Called when an exception    is caught. Pops the catch context and returns the continue jump    destination. */   PIKE_OPCODE_T *handle_caught_exception(void)
pike.git/src/interpret.c:1429:       DO_IF_DEBUG ({    TRACE((3,"- Caught exception. catch context: %p\n", cc));    if (!cc) Pike_fatal ("Catch context dropoff.\n");    if (cc->frame != Pike_fp)    Pike_fatal ("Catch context doesn't belong to this frame.\n");    });       debug_malloc_touch_named (cc, "(3)");    UNSETJMP (cc->recovery); -  frame_set_expendible(Pike_fp, cc->save_expendible); +  Pike_fp->expendible = cc->save_expendible;    move_svalue (Pike_sp++, &throw_value);    mark_free_svalue (&throw_value);    low_destruct_objects_to_destruct();       if (cc->continue_reladdr < 0)    FAST_CHECK_THREADS_ON_BRANCH();    addr = cc->next_addr + cc->continue_reladdr;       DO_IF_DEBUG({    TRACE((3,"- Popping catch context %p ==> %p\n",