pike.git / src / builtin.cmod

version» Context lines:

pike.git/src/builtin.cmod:2363:    * assume no other entities are naughty enough to modify it). */    mapping_string_insert_string (env_allocs, env_alloc_var, putenv_str);    else {    struct svalue key;    SET_SVAL(key, T_STRING, 0, string, env_alloc_var);    map_delete (env_allocs, &key);    }   #endif /* !USE_SETENV */   }    - #if defined(PIKE_DEBUG) && defined(PIKE_PORTABLE_BYTECODE) -  - /*! @decl void disassemble(function fun) -  *! @belongs Debug -  *! -  *! Disassemble a Pike function to @[Stdio.stderr]. -  *! -  *! @note -  *! This function is only available if the Pike runtime -  *! has been compiled with debug enabled. -  */ - PIKEFUN void _disassemble(function fun) - { -  if ((TYPEOF(*fun) != T_FUNCTION) || -  (SUBTYPEOF(*fun) == FUNCTION_BUILTIN)) { -  fprintf(stderr, -  "Disassembly only supported for functions implemented in Pike.\n"); -  } else if (!fun->u.object->prog) { -  fprintf(stderr, "Function in destructed object.\n"); -  } else { -  int f = SUBTYPEOF(*fun); -  struct reference *ptr = PTR_FROM_INT(fun->u.object->prog, f); -  struct program *p = PROG_FROM_PTR(fun->u.object->prog, ptr); -  struct identifier *id = p->identifiers + ptr->identifier_offset; -  if (id->func.offset >= 0) { -  struct pike_string *tripples = -  p->strings[read_program_data(p->program + id->func.offset, -1)]; -  switch(tripples->size_shift) { - #define CASE(SHIFT) \ -  case SHIFT: \ -  { \ -  PIKE_CONCAT(p_wchar, SHIFT) *str = \ -  PIKE_CONCAT(STR, SHIFT)(tripples); \ -  int i=0; \ -  while(i < tripples->len) { \ -  fprintf(stderr, "@@@ %d: %s, %d, %d\n", \ -  i/3, \ -  instrs[*str - F_OFFSET]. \ -  name, \ -  str[1], str[2]); \ -  str += 3; \ -  i += 3; \ -  } \ -  } \ -  break -  CASE(0); -  CASE(1); -  CASE(2); - #undef CASE -  } -  } else { -  fprintf(stderr, "Prototype.\n"); -  } -  } -  pop_n_elems(args); -  push_int(0); - } -  - #endif /* PIKE_DEBUG && PIKE_PORTABLE_BYTECODE */ -  +    /*    * Backtrace handling.    */      /*! @module Pike    */      /*! @class BacktraceFrame    */