Ignore:
Timestamp:
Jul 9, 2020, 8:51:43 AM (4 years ago)
Author:
coas-nagasima
Message:

mrubyを2.1.1に更新

Location:
EcnlProtoTool/trunk/mruby-2.1.1
Files:
11 edited
1 moved

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c

    r331 r439  
    8585
    8686static uint16_t
    87 check_file_lineno(struct mrb_irep *irep, const char *file, uint16_t lineno)
     87check_file_lineno(mrb_state *mrb, struct mrb_irep *irep, const char *file, uint16_t lineno)
    8888{
    8989  mrb_irep_debug_info_file *info_file;
     
    9494
    9595  for (f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
     96    const char *filename;
    9697    info_file = irep->debug_info->files[f_idx];
    97     if (!strcmp(info_file->filename, file)) {
     98    filename = mrb_sym_name_len(mrb, info_file->filename_sym, NULL);
     99    if (!strcmp(filename, file)) {
    98100      result = MRB_DEBUG_BP_FILE_OK;
    99101
     
    104106    }
    105107    for (i=0; i < irep->rlen; ++i) {
    106       result  |= check_file_lineno(irep->reps[i], file, lineno);
     108      result  |= check_file_lineno(mrb, irep->reps[i], file, lineno);
    107109      if (result == (MRB_DEBUG_BP_FILE_OK | MRB_DEBUG_BP_LINENO_OK)) {
    108110        return result;
     
    113115}
    114116
    115 static const char*
    116 get_class_name(mrb_state *mrb, struct RClass *class_obj)
    117 {
    118   struct RClass *outer;
    119   mrb_sym class_sym;
    120 
    121   outer = mrb_class_outer_module(mrb, class_obj);
    122   class_sym = mrb_class_sym(mrb, class_obj, outer);
    123   return mrb_sym2name(mrb, class_sym);
    124 }
    125 
    126117static int32_t
    127118compare_break_method(mrb_state *mrb, mrb_debug_breakpoint *bp, struct RClass *class_obj, mrb_sym method_sym, mrb_bool* isCfunc)
     
    129120  const char* class_name;
    130121  const char* method_name;
    131   struct RProc* m;
     122  mrb_method_t m;
    132123  struct RClass* sc;
    133124  const char* sn;
     
    136127  mrb_bool is_defined;
    137128
    138   method_name = mrb_sym2name(mrb, method_sym);
     129  method_name = mrb_sym_name(mrb, method_sym);
    139130
    140131  method_p = &bp->point.methodpoint;
    141132  if (strcmp(method_p->method_name, method_name) == 0) {
    142     class_name = get_class_name(mrb, class_obj);
     133    class_name = mrb_class_name(mrb, class_obj);
    143134    if (class_name == NULL) {
    144135      if (method_p->class_name == NULL) {
     
    148139    else if (method_p->class_name != NULL) {
    149140      m = mrb_method_search_vm(mrb, &class_obj, method_sym);
    150       if (m == NULL) {
     141      if (MRB_METHOD_UNDEF_P(m)) {
    151142        return MRB_DEBUG_OK;
    152143      }
    153       if (MRB_PROC_CFUNC_P(m)) {
     144      if (MRB_METHOD_CFUNC_P(m)) {
    154145        *isCfunc = TRUE;
    155146      }
     
    163154      ssym = mrb_symbol(mrb_check_intern_cstr(mrb, method_p->method_name));
    164155      m = mrb_method_search_vm(mrb, &sc, ssym);
    165       if (m == NULL) {
     156      if (MRB_METHOD_UNDEF_P(m)) {
    166157        return MRB_DEBUG_OK;
    167158      }
    168159
    169       class_name = get_class_name(mrb, class_obj);
    170       sn = get_class_name(mrb, sc);
     160      class_name = mrb_class_name(mrb, class_obj);
     161      sn = mrb_class_name(mrb, sc);
    171162      if (strcmp(sn, class_name) == 0) {
    172163        return bp->bpno;
     
    197188
    198189  /* file and lineno check (line type mrb_debug_line_ary only.) */
    199   result = check_file_lineno(dbg->root_irep, file, lineno);
     190  result = check_file_lineno(mrb, dbg->root_irep, file, lineno);
    200191  if (result == 0) {
    201192    return MRB_DEBUG_BREAK_INVALID_FILE;
     
    205196  }
    206197
    207   set_file = mrb_malloc(mrb, strlen(file) + 1);
     198  set_file = (char*)mrb_malloc(mrb, strlen(file) + 1);
    208199
    209200  index = dbg->bpnum;
     
    242233
    243234  if (class_name != NULL) {
    244     set_class = mrb_malloc(mrb, strlen(class_name) + 1);
     235    set_class = (char*)mrb_malloc(mrb, strlen(class_name) + 1);
    245236    strncpy(set_class, class_name, strlen(class_name) + 1);
    246237  }
     
    249240  }
    250241
    251   set_method = mrb_malloc(mrb, strlen(method_name) + 1);
     242  set_method = (char*)mrb_malloc(mrb, strlen(method_name) + 1);
    252243
    253244  strncpy(set_method, method_name, strlen(method_name) + 1);
     
    438429
    439430static mrb_bool
    440 check_start_pc_for_line(mrb_irep *irep, mrb_code *pc, uint16_t line)
     431check_start_pc_for_line(mrb_state *mrb, mrb_irep *irep, const mrb_code *pc, uint16_t line)
    441432{
    442433  if (pc > irep->iseq) {
    443     if (line == mrb_debug_get_line(irep, (uint32_t)(pc - irep->iseq - 1))) {
     434    if (line == mrb_debug_get_line(mrb, irep, pc - irep->iseq - 1)) {
    444435      return FALSE;
    445436    }
     
    459450  }
    460451
    461   if (!check_start_pc_for_line(dbg->irep, dbg->pc, line)) {
     452  if (!check_start_pc_for_line(mrb, dbg->irep, dbg->pc, line)) {
    462453    return MRB_DEBUG_OK;
    463454  }
     
    515506  return 0;
    516507}
    517 
    518 
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c

    r331 r439  
    4949  }
    5050
    51   path = mrb_malloc(mrb, len);
     51  path = (char*)mrb_malloc(mrb, len);
    5252  memset(path, 0, len);
    5353
     
    6565{
    6666  size_t len;
    67   char *p, *dir;
     67  const char *p;
     68  char *dir;
    6869
    6970  if (path == NULL) {
     
    7475  len = p != NULL ? (size_t)(p - path) : strlen(path);
    7576
    76   dir = mrb_malloc(mrb, len + 1);
     77  dir = (char*)mrb_malloc(mrb, len + 1);
    7778  strncpy(dir, path, len);
    7879  dir[len] = '\0';
     
    8485source_file_new(mrb_state *mrb, mrb_debug_context *dbg, char *filename)
    8586{
    86   source_file *file = NULL;
    87 
    88   file = mrb_malloc(mrb, sizeof(source_file));
     87  source_file *file;
     88
     89  file = (source_file*)mrb_malloc(mrb, sizeof(source_file));
    8990
    9091  memset(file, '\0', sizeof(source_file));
     
    9798
    9899  file->lineno = 1;
    99   file->path = mrb_malloc(mrb, strlen(filename) + 1);
     100  file->path = (char*)mrb_malloc(mrb, strlen(filename) + 1);
    100101  strcpy(file->path, filename);
    101102  return file;
     
    175176  const char *search_path[3];
    176177  char *path = NULL;
     178  const char *srcname = strrchr(filename, '/');
     179
     180  if (srcname) srcname++;
     181  else srcname = filename;
    177182
    178183  search_path[0] = srcpath;
    179   search_path[1] = dirname(mrb, mrb_debug_get_filename(mrdb->dbg->root_irep, 0));
     184  search_path[1] = dirname(mrb, mrb_debug_get_filename(mrb, mrdb->dbg->irep, 0));
    180185  search_path[2] = ".";
    181186
     
    185190    }
    186191
    187     if ((path = build_path(mrb, search_path[i], filename)) == NULL) {
     192    if ((path = build_path(mrb, search_path[i], srcname)) == NULL) {
    188193      continue;
    189194    }
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c

    r331 r439  
    2222  c->no_exec = TRUE;
    2323  c->capture_errors = TRUE;
    24   c->filename = (char*)dbg->prvfile;
     24  mrbc_filename(mrb, c, (const char*)dbg->prvfile);
    2525  c->lineno = dbg->prvline;
    2626
     
    3232
    3333mrb_value
    34 mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t len, mrb_bool *exc)
     34mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t len, mrb_bool *exc, int direct_eval)
    3535{
    36   void (*tmp)(struct mrb_state *, struct mrb_irep *, mrb_code *, mrb_value *);
     36  void (*tmp)(struct mrb_state *, struct mrb_irep *, const mrb_code *, mrb_value *);
    3737  mrb_value ruby_code;
    3838  mrb_value s;
     
    4848    v = mrb_obj_value(mrb->exc);
    4949    mrb->exc = 0;
     50  }
     51  else if (direct_eval) {
     52    recv = dbg->regs[0];
     53
     54    v = mrb_funcall(mrb, recv, expr, 0);
    5055  }
    5156  else {
     
    7075  }
    7176
    72   s = mrb_funcall(mrb, v, "inspect", 0);
     77  s = mrb_inspect(mrb, v);
    7378
    7479  /* enable code_fetch_hook */
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h

    r331 r439  
    99#include "mrdb.h"
    1010
    11 mrb_value mrb_debug_eval(mrb_state*, mrb_debug_context*, const char*, size_t, mrb_bool*);
     11mrb_value mrb_debug_eval(mrb_state*, mrb_debug_context*, const char*, size_t, mrb_bool*, int);
    1212
    1313#endif /* APIPRINT_H_ */
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c

    r331 r439  
    243243
    244244mrb_debug_bptype
    245 parse_breakcommand(mrdb_state *mrdb, const char **file, uint32_t *line, char **cname, char **method)
     245parse_breakcommand(mrb_state *mrb, mrdb_state *mrdb, const char **file, uint32_t *line, char **cname, char **method)
    246246{
    247247  mrb_debug_context *dbg = mrdb->dbg;
     
    275275      if (l <= 65535) {
    276276        *line = l;
    277         *file = (body == args)? mrb_debug_get_filename(dbg->irep, (uint32_t)(dbg->pc - dbg->irep->iseq)): args;
     277        *file = (body == args)? mrb_debug_get_filename(mrb, dbg->irep, dbg->pc - dbg->irep->iseq): args;
    278278      }
    279279      else {
     
    333333  int32_t ret;
    334334
    335   type = parse_breakcommand(mrdb, &file, &line, &cname, &method);
     335  type = parse_breakcommand(mrb, mrdb, &file, &line, &cname, &method);
    336336  switch (type) {
    337337    case MRB_DEBUG_BPTYPE_LINE:
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c

    r331 r439  
    8181    "Status of specified breakpoints (all user-settable breakpoints if no argument).\n"
    8282    "Arguments are breakpoint numbers with spaces in between.\n"
     83  },
     84  {
     85    "i[nfo]", "l[ocals]", "Print name of local variables",
     86    "Usage: info locals\n"
     87    "\n"
     88    "Print name of local variables.\n"
    8389  },
    8490  {
     
    134140listcmd_parser_state_new(mrb_state *mrb)
    135141{
    136   listcmd_parser_state *st = mrb_malloc(mrb, sizeof(listcmd_parser_state));
     142  listcmd_parser_state *st = (listcmd_parser_state*)mrb_malloc(mrb, sizeof(listcmd_parser_state));
    137143  memset(st, 0, sizeof(listcmd_parser_state));
    138144  return st;
     
    228234
    229235  if (len > 0) {
    230     st->filename = mrb_malloc(mrb, len + 1);
     236    st->filename = (char*)mrb_malloc(mrb, len + 1);
    231237    strncpy(st->filename, *sp, len);
    232238    st->filename[len] = '\0';
     
    243249{
    244250  size_t len;
    245   char *p, *s;
     251  const char *p;
     252  char *s;
    246253
    247254  if (filename == NULL) {
     
    256263  }
    257264
    258   s = mrb_malloc(mrb, len + strlen(ext) + 1);
     265  s = (char*)mrb_malloc(mrb, len + strlen(ext) + 1);
    259266  memset(s, '\0', len + strlen(ext) + 1);
    260267  strncpy(s, filename, len);
     
    326333check_cmd_pattern(const char *pattern, const char *cmd)
    327334{
    328   char *lbracket, *rbracket, *p, *q;
     335  const char *lbracket, *rbracket, *p, *q;
    329336
    330337  if (pattern == NULL && cmd == NULL) {
     
    495502  if (mrdb->dbg->xm == DBG_QUIT) {
    496503    struct RClass *exc;
    497     exc = mrb_define_class(mrb, "DebuggerExit", mrb_class_get(mrb, "Exception"));
     504    exc = mrb_define_class(mrb, "DebuggerExit", mrb->eException_class);
    498505    mrb_raise(mrb, exc, "Exit mrdb.");
    499506  }
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c

    r331 r439  
    1919  mrb_value expr;
    2020  mrb_value result;
    21   mrb_value s;
    2221  uint8_t wcnt;
    2322  int ai;
     
    3736  }
    3837
    39   result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL);
     38  result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0);
    4039
    4140  /* $print_no = result */
    42   s = mrb_str_cat_lit(mrb, result, "\0");
    43   printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s));
     41  printf("$%lu = ", (unsigned long)mrdb->print_no++);
     42  fwrite(RSTRING_PTR(result), RSTRING_LEN(result), 1, stdout);
     43  putc('\n', stdout);
    4444
    4545  if (mrdb->print_no == 0) {
     
    5757  return dbgcmd_print(mrb, mrdb);
    5858}
     59
     60dbgcmd_state
     61dbgcmd_info_local(mrb_state *mrb, mrdb_state *mrdb)
     62{
     63  mrb_value result;
     64  mrb_value s;
     65  int ai;
     66
     67  ai = mrb_gc_arena_save(mrb);
     68
     69  result = mrb_debug_eval(mrb, mrdb->dbg, "local_variables", 0, NULL, 1);
     70
     71  s = mrb_str_cat_lit(mrb, result, "\0");
     72  printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s));
     73
     74  if (mrdb->print_no == 0) {
     75    mrdb->print_no = 1;
     76  }
     77
     78  mrb_gc_arena_restore(mrb, ai);
     79
     80  return DBGST_PROMPT;
     81}
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c

    r331 r439  
    2020      struct RClass *exc;
    2121      puts("Start it from the beginning.");
    22       exc = mrb_define_class(mrb, "DebuggerRestart", mrb_class_get(mrb, "Exception"));
     22      exc = mrb_define_class(mrb, "DebuggerRestart", mrb->eException_class);
    2323      mrb_raise(mrb, exc, "Restart mrdb.");
    2424    }
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c

    r331 r439  
    66#include <stdlib.h>
    77#include <string.h>
    8 #include <stdio.h>
    98#include <ctype.h>
    109
     
    5352  {"help",      NULL,           1, 0, 1, DBGCMD_HELP,           dbgcmd_help},            /* h[elp] */
    5453  {"info",      "breakpoints",  1, 1, 1, DBGCMD_INFO_BREAK,     dbgcmd_info_break},      /* i[nfo] b[reakpoints] */
     54  {"info",      "locals",       1, 1, 0, DBGCMD_INFO_LOCAL,     dbgcmd_info_local},      /* i[nfo] l[ocals] */
    5555  {"list",      NULL,           1, 0, 1, DBGCMD_LIST,           dbgcmd_list},            /* l[ist] */
    5656  {"print",     NULL,           1, 0, 0, DBGCMD_PRINT,          dbgcmd_print},           /* p[rint] */
     
    185185mrb_debug_context_new(mrb_state *mrb)
    186186{
    187   mrb_debug_context *dbg = mrb_malloc(mrb, sizeof(mrb_debug_context));
     187  mrb_debug_context *dbg = (mrb_debug_context*)mrb_malloc(mrb, sizeof(mrb_debug_context));
    188188
    189189  memset(dbg, 0, sizeof(mrb_debug_context));
     
    224224mrdb_state_new(mrb_state *mrb)
    225225{
    226   mrdb_state *mrdb = mrb_malloc(mrb, sizeof(mrdb_state));
     226  mrdb_state *mrdb = (mrdb_state*)mrb_malloc(mrb, sizeof(mrdb_state));
    227227
    228228  memset(mrdb, 0, sizeof(mrdb_state));
    229229
    230230  mrdb->dbg = mrb_debug_context_get(mrb);
    231   mrdb->command = mrb_malloc(mrb, MAX_COMMAND_LINE+1);
     231  mrdb->command = (char*)mrb_malloc(mrb, MAX_COMMAND_LINE+1);
    232232  mrdb->print_no = 1;
    233233
     
    505505
    506506static int32_t
    507 check_method_breakpoint(mrb_state *mrb, mrb_irep *irep, mrb_code *pc, mrb_value *regs)
     507check_method_breakpoint(mrb_state *mrb, mrb_irep *irep, const mrb_code *pc, mrb_value *regs)
    508508{
    509509  struct RClass* c;
     
    511511  int32_t bpno;
    512512  mrb_bool isCfunc;
     513  struct mrb_insn_data insn;
    513514
    514515  mrb_debug_context *dbg = mrb_debug_context_get(mrb);
     
    518519  dbg->method_bpno = 0;
    519520
    520   switch(GET_OPCODE(*pc)) {
     521  insn = mrb_decode_insn(pc);
     522  switch(insn.insn) {
    521523    case OP_SEND:
    522524    case OP_SENDB:
    523       c = mrb_class(mrb, regs[GETARG_A(*pc)]);
    524       sym = irep->syms[GETARG_B(*pc)];
     525      c = mrb_class(mrb, regs[insn.a]);
     526      sym = irep->syms[insn.b];
    525527      break;
    526528    case OP_SUPER:
     
    544546
    545547static void
    546 mrb_code_fetch_hook(mrb_state *mrb, mrb_irep *irep, mrb_code *pc, mrb_value *regs)
     548mrb_code_fetch_hook(mrb_state *mrb, mrb_irep *irep, const mrb_code *pc, mrb_value *regs)
    547549{
    548550  const char *file;
     
    567569  }
    568570
    569   file = mrb_debug_get_filename(irep, (uint32_t)(pc - irep->iseq));
    570   line = mrb_debug_get_line(irep, (uint32_t)(pc - irep->iseq));
     571  file = mrb_debug_get_filename(mrb, irep, pc - irep->iseq);
     572  line = mrb_debug_get_line(mrb, irep, pc - irep->iseq);
    571573
    572574  switch (dbg->xm) {
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h

    r331 r439  
    2424  DBGCMD_BREAK,
    2525  DBGCMD_INFO_BREAK,
     26  DBGCMD_INFO_LOCAL,
    2627  DBGCMD_WATCH,
    2728  DBGCMD_INFO_WATCH,
     
    105106  struct mrb_irep *root_irep;
    106107  struct mrb_irep *irep;
    107   mrb_code *pc;
     108  const mrb_code *pc;
    108109  mrb_value *regs;
    109110
     
    152153dbgcmd_state dbgcmd_break(mrb_state*, mrdb_state*);
    153154dbgcmd_state dbgcmd_info_break(mrb_state*, mrdb_state*);
     155dbgcmd_state dbgcmd_info_local(mrb_state*, mrdb_state*);
    154156dbgcmd_state dbgcmd_delete(mrb_state*, mrdb_state*);
    155157dbgcmd_state dbgcmd_enable(mrb_state*, mrdb_state*);
  • EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h

    r321 r439  
    66#ifndef MRDBCONF_H
    77#define MRDBCONF_H
     8
     9#ifndef MRB_ENABLE_DEBUG_HOOK
     10# error mruby-bin-debugger need 'MRB_ENABLE_DEBUG_HOOK' configuration in your 'build_config.rb'
     11#endif
     12
     13#ifdef MRB_DISABLE_STDIO
     14# error mruby-bin-debugger conflicts 'MRB_DISABLE_STDIO' configuration in your 'build_config.rb'
     15#endif
    816
    917/* configuration options: */
Note: See TracChangeset for help on using the changeset viewer.