pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:2393:    }    really_free_pike_frame(scope);   }      void *lower_mega_apply( INT32 args, struct object *o, ptrdiff_t fun )   {    struct program *p;    check_stack(256);    check_mark_stack(256);    + #ifdef PIKE_USE_MACHINE_CODE +  call_check_threads_etc(); + #else +  FAST_CHECK_THREADS_ON_CALL(); + #endif +     if( (p = o->prog) )    {    struct svalue *save_sp = Pike_sp - args;    struct reference *ref = p->identifier_references + fun;    struct inherit *context = p->inherits + ref->inherit_offset;    struct identifier *function = context->prog->identifiers + ref->identifier_offset;    struct svalue *constant = NULL;    struct pike_frame *new_frame = NULL;       int type = (function->identifier_flags & (IDENTIFIER_TYPE_MASK|IDENTIFIER_ALIAS));
pike.git/src/interpret.c:2462: Inside #if defined(PIKE_DEBUG)
   if (Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_FREE)    Pike_fatal("Pike code called within gc.\n");   #endif       Pike_fp = new_frame;    debug_malloc_touch(Pike_fp);   #ifdef PROFILING    function->num_calls++;    function->recur_depth++;   #endif - #ifdef PIKE_USE_MACHINE_CODE -  call_check_threads_etc(); - #endif +        if( !constant )    {    if (PIKE_FN_START_ENABLED())    {    /* DTrace enter probe    arg0: function name    arg1: object    */    struct byte_buffer obj_name = BUFFER_INIT();
pike.git/src/interpret.c:2493:    if(UNLIKELY(Pike_interpreter.trace_level))    {    do_trace_function_call(o, function, args);    }    new_frame->current_storage = o->storage+context->storage_offset;    if( type == IDENTIFIER_C_FUNCTION )    {    new_frame->num_args = args;    new_frame->num_locals = args;    new_frame->pc = 0; - #ifndef PIKE_USE_MACHINE_CODE -  FAST_CHECK_THREADS_ON_CALL(); - #endif +     (*function->func.c_fun)(args);       /* .. and below follows what is basically a copy of the    * low_return function...    */    if(save_sp+1 > Pike_sp)    {    push_int(0);    } else if(save_sp+1 < Pike_sp) {    stack_pop_n_elems_keep_top( Pike_sp-save_sp-1 );
pike.git/src/interpret.c:2585: Inside #if defined(PIKE_DEBUG) && defined(_REENTRANT)
      if (Pike_interpreter.thread_state) {    if (!th_equal(Pike_interpreter.thread_state->id, self))    Pike_fatal("Current thread is wrong.\n");       DEBUG_CHECK_THREAD();    }    }   #endif    +  FAST_CHECK_THREADS_ON_CALL(); +     switch(type)    {    case APPLY_STACK:    if(!args)    PIKE_ERROR("`()", "Too few arguments (apply stack).\n", Pike_sp, 0);    args--;    arg1=(void *)(Pike_sp-args-1);       /* FALLTHRU */   
pike.git/src/interpret.c:2647:    }    if (PIKE_FN_START_ENABLED()) {    /* DTrace enter probe    arg0: function name    arg1: object    */    PIKE_FN_START(s->u.efun->name->size_shift == 0 ?    s->u.efun->name->str : "[widestring fn name]",    "");    } -  FAST_CHECK_THREADS_ON_CALL(); +     (*(s->u.efun->function))(args);    if (PIKE_FN_DONE_ENABLED()) {    /* DTrace leave probe    arg0: function name    */    PIKE_FN_DONE(s->u.efun->name->size_shift == 0 ?    s->u.efun->name->str : "[widestring fn name]");    }      #ifdef PIKE_DEBUG