pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.c:869:    Pike_sp-Pike_interpreter.evaluator_stack,    Pike_mark_sp-Pike_interpreter.mark_stack);    free_string(filep2);       printf("pro: %p, %p %p, %p\n", bp_prog, Pike_fp->context->prog, bp_offset, Pike_fp->pc - Pike_fp->context->prog->program);    }             if((stepping_mode != 0 && stepping_thread == th_self()) || ((Pike_fp->context->prog == bp_prog) && (bp_offset == (Pike_fp->pc - Pike_fp->context->prog->program)))) { -  int num_locals = 0; -  int fp_num_locals = Pike_fp->num_locals; -  struct svalue * current_local = Pike_fp->locals; +     printf("got a match!\n");    stepping_thread = th_self();       if(debugger_server == NULL) {       push_text("Debug.Debugger.get_debugger_handler");    SAFE_APPLY_MASTER("resolv", 1 );       // look up the function    safe_apply_svalue(Pike_sp-1, 0, 1);       if(TYPEOF(Pike_sp[-1]) != T_FUNCTION) {    Pike_error("Could not get debugger for breakpoint.\n");    }       // TODO check we actually got the memory.    debugger_server = malloc(sizeof(struct svalue));    -  +     assign_svalue_no_free((debugger_server), Pike_sp-1);    add_ref_svalue((debugger_server));       pop_stack();    pop_stack();    }       filep = get_line(Pike_fp->pc,Pike_fp->context->prog,&linep);       ref_push_string(filep);    push_int(linep); -  push_int((long)Pike_fp); +     push_text(get_opcode_name(instr));       ref_push_object(Pike_fp->current_object);    -  while(num_locals < fp_num_locals) { -  push_svalue(current_local); -  add_ref_svalue(Pike_sp - 1); -  current_local++; -  num_locals++; -  } -  -  f_aggregate(num_locals); -  f_backtrace(0); +  f_debug_backtrace(0);    //printf("applying\n");       // we don't want to step though any of the do_breakpoint() instructions that actually wake up the debugger.    // this seems safe for the basic scenario, but perhaps we should do this on another thread altogether?    stepping_mode = 0;    -  safe_apply_svalue(debugger_server, 7, 1); +  safe_apply_svalue(debugger_server, 5, 1);    //printf("applied\n");    if(TYPEOF(*(Pike_sp - 1)) != T_INT)    {    pop_stack();    Pike_error("Wrong return type from debug callback.\n");    } else {    debug_retval = (*(Pike_sp - 1)).u.integer;    }    pop_stack();