wasm 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +5 -5
  2. data/assets/mruby/include/mrbconf.h +143 -0
  3. data/assets/mruby/include/mruby.h +1284 -0
  4. data/assets/mruby/include/mruby/array.h +279 -0
  5. data/assets/mruby/include/mruby/boxing_nan.h +102 -0
  6. data/assets/mruby/include/mruby/boxing_no.h +56 -0
  7. data/assets/mruby/include/mruby/boxing_word.h +136 -0
  8. data/assets/mruby/include/mruby/class.h +94 -0
  9. data/assets/mruby/include/mruby/common.h +72 -0
  10. data/assets/mruby/include/mruby/compile.h +194 -0
  11. data/assets/mruby/include/mruby/data.h +75 -0
  12. data/assets/mruby/include/mruby/debug.h +66 -0
  13. data/assets/mruby/include/mruby/dump.h +196 -0
  14. data/assets/mruby/include/mruby/error.h +75 -0
  15. data/assets/mruby/include/mruby/gc.h +91 -0
  16. data/assets/mruby/include/mruby/hash.h +182 -0
  17. data/assets/mruby/include/mruby/irep.h +62 -0
  18. data/assets/mruby/include/mruby/istruct.h +47 -0
  19. data/assets/mruby/include/mruby/khash.h +274 -0
  20. data/assets/mruby/include/mruby/numeric.h +161 -0
  21. data/assets/mruby/include/mruby/object.h +45 -0
  22. data/assets/mruby/include/mruby/opcode.h +161 -0
  23. data/assets/mruby/include/mruby/proc.h +131 -0
  24. data/assets/mruby/include/mruby/range.h +49 -0
  25. data/assets/mruby/include/mruby/re.h +16 -0
  26. data/assets/mruby/include/mruby/string.h +440 -0
  27. data/assets/mruby/include/mruby/throw.h +55 -0
  28. data/assets/mruby/include/mruby/value.h +309 -0
  29. data/assets/mruby/include/mruby/variable.h +138 -0
  30. data/assets/mruby/include/mruby/version.h +110 -0
  31. data/assets/mruby/libmruby.a +0 -0
  32. data/assets/mruby_init.c +16 -0
  33. data/assets/template.html +17 -0
  34. data/bin/ruby-wasm +150 -0
  35. data/build_config.rb +13 -0
  36. data/lib/wasm.rb +0 -5
  37. data/lib/wasm/version.rb +4 -2
  38. metadata +46 -65
  39. data/.gitignore +0 -9
  40. data/.travis.yml +0 -5
  41. data/Gemfile +0 -4
  42. data/LICENSE.txt +0 -21
  43. data/README.md +0 -40
  44. data/Rakefile +0 -10
  45. data/bin/console +0 -14
  46. data/bin/setup +0 -8
  47. data/wasm.gemspec +0 -26
@@ -0,0 +1,94 @@
1
+ /*
2
+ ** mruby/class.h - Class class
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_CLASS_H
8
+ #define MRUBY_CLASS_H
9
+
10
+ #include "common.h"
11
+
12
+ /**
13
+ * Class class
14
+ */
15
+ MRB_BEGIN_DECL
16
+
17
+ struct RClass {
18
+ MRB_OBJECT_HEADER;
19
+ struct iv_tbl *iv;
20
+ struct kh_mt *mt;
21
+ struct RClass *super;
22
+ };
23
+
24
+ #define mrb_class_ptr(v) ((struct RClass*)(mrb_ptr(v)))
25
+ #define RCLASS_SUPER(v) (((struct RClass*)(mrb_ptr(v)))->super)
26
+ #define RCLASS_IV_TBL(v) (((struct RClass*)(mrb_ptr(v)))->iv)
27
+ #define RCLASS_M_TBL(v) (((struct RClass*)(mrb_ptr(v)))->mt)
28
+
29
+ static inline struct RClass*
30
+ mrb_class(mrb_state *mrb, mrb_value v)
31
+ {
32
+ switch (mrb_type(v)) {
33
+ case MRB_TT_FALSE:
34
+ if (mrb_fixnum(v))
35
+ return mrb->false_class;
36
+ return mrb->nil_class;
37
+ case MRB_TT_TRUE:
38
+ return mrb->true_class;
39
+ case MRB_TT_SYMBOL:
40
+ return mrb->symbol_class;
41
+ case MRB_TT_FIXNUM:
42
+ return mrb->fixnum_class;
43
+ #ifndef MRB_WITHOUT_FLOAT
44
+ case MRB_TT_FLOAT:
45
+ return mrb->float_class;
46
+ #endif
47
+ case MRB_TT_CPTR:
48
+ return mrb->object_class;
49
+ case MRB_TT_ENV:
50
+ return NULL;
51
+ default:
52
+ return mrb_obj_ptr(v)->c;
53
+ }
54
+ }
55
+
56
+ /* TODO: figure out where to put user flags */
57
+ /* flags bits >= 18 is reserved */
58
+ #define MRB_FLAG_IS_PREPENDED (1 << 19)
59
+ #define MRB_FLAG_IS_ORIGIN (1 << 20)
60
+ #define MRB_CLASS_ORIGIN(c) do {\
61
+ if (c->flags & MRB_FLAG_IS_PREPENDED) {\
62
+ c = c->super;\
63
+ while (!(c->flags & MRB_FLAG_IS_ORIGIN)) {\
64
+ c = c->super;\
65
+ }\
66
+ }\
67
+ } while (0)
68
+ #define MRB_FLAG_IS_INHERITED (1 << 21)
69
+ #define MRB_INSTANCE_TT_MASK (0xFF)
70
+ #define MRB_SET_INSTANCE_TT(c, tt) c->flags = ((c->flags & ~MRB_INSTANCE_TT_MASK) | (char)tt)
71
+ #define MRB_INSTANCE_TT(c) (enum mrb_vtype)(c->flags & MRB_INSTANCE_TT_MASK)
72
+
73
+ MRB_API struct RClass* mrb_define_class_id(mrb_state*, mrb_sym, struct RClass*);
74
+ MRB_API struct RClass* mrb_define_module_id(mrb_state*, mrb_sym);
75
+ MRB_API struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym);
76
+ MRB_API struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym);
77
+ MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t);
78
+ MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
79
+ MRB_API void mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b);
80
+
81
+ MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
82
+ MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
83
+
84
+ MRB_API struct RClass* mrb_class_real(struct RClass* cl);
85
+
86
+ void mrb_class_name_class(mrb_state*, struct RClass*, struct RClass*, mrb_sym);
87
+ mrb_value mrb_class_find_path(mrb_state*, struct RClass*);
88
+ void mrb_gc_mark_mt(mrb_state*, struct RClass*);
89
+ size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
90
+ void mrb_gc_free_mt(mrb_state*, struct RClass*);
91
+
92
+ MRB_END_DECL
93
+
94
+ #endif /* MRUBY_CLASS_H */
@@ -0,0 +1,72 @@
1
+ /*
2
+ **"common.h - mruby common platform definition"
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_COMMON_H
8
+ #define MRUBY_COMMON_H
9
+
10
+
11
+ #ifdef __cplusplus
12
+ #ifdef MRB_ENABLE_CXX_ABI
13
+ #define MRB_BEGIN_DECL
14
+ #define MRB_END_DECL
15
+ #else
16
+ # define MRB_BEGIN_DECL extern "C" {
17
+ # define MRB_END_DECL }
18
+ #endif
19
+ #else
20
+ /** Start declarations in C mode */
21
+ # define MRB_BEGIN_DECL
22
+ /** End declarations in C mode */
23
+ # define MRB_END_DECL
24
+ #endif
25
+
26
+ /**
27
+ * Shared compiler macros
28
+ */
29
+ MRB_BEGIN_DECL
30
+
31
+ /** Declare a function that never returns. */
32
+ #if __STDC_VERSION__ >= 201112L
33
+ # define mrb_noreturn _Noreturn
34
+ #elif defined __GNUC__ && !defined __STRICT_ANSI__
35
+ # define mrb_noreturn __attribute__((noreturn))
36
+ #elif defined _MSC_VER
37
+ # define mrb_noreturn __declspec(noreturn)
38
+ #else
39
+ # define mrb_noreturn
40
+ #endif
41
+
42
+ /** Mark a function as deprecated. */
43
+ #if defined __GNUC__ && !defined __STRICT_ANSI__
44
+ # define mrb_deprecated __attribute__((deprecated))
45
+ #elif defined _MSC_VER
46
+ # define mrb_deprecated __declspec(deprecated)
47
+ #else
48
+ # define mrb_deprecated
49
+ #endif
50
+
51
+ /** Declare a function as always inlined. */
52
+ #if defined(_MSC_VER)
53
+ # define MRB_INLINE static __inline
54
+ #else
55
+ # define MRB_INLINE static inline
56
+ #endif
57
+
58
+
59
+ /** Declare a public MRuby API function. */
60
+ #if defined(MRB_BUILD_AS_DLL)
61
+ #if defined(MRB_CORE) || defined(MRB_LIB)
62
+ # define MRB_API __declspec(dllexport)
63
+ #else
64
+ # define MRB_API __declspec(dllimport)
65
+ #endif
66
+ #else
67
+ # define MRB_API extern
68
+ #endif
69
+
70
+ MRB_END_DECL
71
+
72
+ #endif /* MRUBY_COMMON_H */
@@ -0,0 +1,194 @@
1
+ /*
2
+ ** mruby/compile.h - mruby parser
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_COMPILE_H
8
+ #define MRUBY_COMPILE_H
9
+
10
+ #include "common.h"
11
+
12
+ /**
13
+ * MRuby Compiler
14
+ */
15
+ MRB_BEGIN_DECL
16
+
17
+ #include <mruby.h>
18
+
19
+ struct mrb_jmpbuf;
20
+
21
+ struct mrb_parser_state;
22
+ /* load context */
23
+ typedef struct mrbc_context {
24
+ mrb_sym *syms;
25
+ int slen;
26
+ char *filename;
27
+ short lineno;
28
+ int (*partial_hook)(struct mrb_parser_state*);
29
+ void *partial_data;
30
+ struct RClass *target_class;
31
+ mrb_bool capture_errors:1;
32
+ mrb_bool dump_result:1;
33
+ mrb_bool no_exec:1;
34
+ mrb_bool keep_lv:1;
35
+ mrb_bool no_optimize:1;
36
+
37
+ size_t parser_nerr;
38
+ } mrbc_context;
39
+
40
+ MRB_API mrbc_context* mrbc_context_new(mrb_state *mrb);
41
+ MRB_API void mrbc_context_free(mrb_state *mrb, mrbc_context *cxt);
42
+ MRB_API const char *mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s);
43
+ MRB_API void mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*partial_hook)(struct mrb_parser_state*), void*data);
44
+
45
+ /* AST node structure */
46
+ typedef struct mrb_ast_node {
47
+ struct mrb_ast_node *car, *cdr;
48
+ uint16_t lineno, filename_index;
49
+ } mrb_ast_node;
50
+
51
+ /* lexer states */
52
+ enum mrb_lex_state_enum {
53
+ EXPR_BEG, /* ignore newline, +/- is a sign. */
54
+ EXPR_END, /* newline significant, +/- is an operator. */
55
+ EXPR_ENDARG, /* ditto, and unbound braces. */
56
+ EXPR_ENDFN, /* ditto, and unbound braces. */
57
+ EXPR_ARG, /* newline significant, +/- is an operator. */
58
+ EXPR_CMDARG, /* newline significant, +/- is an operator. */
59
+ EXPR_MID, /* newline significant, +/- is an operator. */
60
+ EXPR_FNAME, /* ignore newline, no reserved words. */
61
+ EXPR_DOT, /* right after '.' or '::', no reserved words. */
62
+ EXPR_CLASS, /* immediate after 'class', no here document. */
63
+ EXPR_VALUE, /* alike EXPR_BEG but label is disallowed. */
64
+ EXPR_MAX_STATE
65
+ };
66
+
67
+ /* saved error message */
68
+ struct mrb_parser_message {
69
+ int lineno;
70
+ int column;
71
+ char* message;
72
+ };
73
+
74
+ #define STR_FUNC_PARSING 0x01
75
+ #define STR_FUNC_EXPAND 0x02
76
+ #define STR_FUNC_REGEXP 0x04
77
+ #define STR_FUNC_WORD 0x08
78
+ #define STR_FUNC_SYMBOL 0x10
79
+ #define STR_FUNC_ARRAY 0x20
80
+ #define STR_FUNC_HEREDOC 0x40
81
+ #define STR_FUNC_XQUOTE 0x80
82
+
83
+ enum mrb_string_type {
84
+ str_not_parsing = (0),
85
+ str_squote = (STR_FUNC_PARSING),
86
+ str_dquote = (STR_FUNC_PARSING|STR_FUNC_EXPAND),
87
+ str_regexp = (STR_FUNC_PARSING|STR_FUNC_REGEXP|STR_FUNC_EXPAND),
88
+ str_sword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY),
89
+ str_dword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
90
+ str_ssym = (STR_FUNC_PARSING|STR_FUNC_SYMBOL),
91
+ str_ssymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY),
92
+ str_dsymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
93
+ str_heredoc = (STR_FUNC_PARSING|STR_FUNC_HEREDOC),
94
+ str_xquote = (STR_FUNC_PARSING|STR_FUNC_XQUOTE|STR_FUNC_EXPAND),
95
+ };
96
+
97
+ /* heredoc structure */
98
+ struct mrb_parser_heredoc_info {
99
+ mrb_bool allow_indent:1;
100
+ mrb_bool line_head:1;
101
+ enum mrb_string_type type;
102
+ const char *term;
103
+ int term_len;
104
+ mrb_ast_node *doc;
105
+ };
106
+
107
+ #define MRB_PARSER_TOKBUF_MAX 65536
108
+ #define MRB_PARSER_TOKBUF_SIZE 256
109
+
110
+ /* parser structure */
111
+ struct mrb_parser_state {
112
+ mrb_state *mrb;
113
+ struct mrb_pool *pool;
114
+ mrb_ast_node *cells;
115
+ const char *s, *send;
116
+ #ifndef MRB_DISABLE_STDIO
117
+ FILE *f;
118
+ #endif
119
+ mrbc_context *cxt;
120
+ char const *filename;
121
+ int lineno;
122
+ int column;
123
+
124
+ enum mrb_lex_state_enum lstate;
125
+ mrb_ast_node *lex_strterm; /* (type nest_level beg . end) */
126
+
127
+ unsigned int cond_stack;
128
+ unsigned int cmdarg_stack;
129
+ int paren_nest;
130
+ int lpar_beg;
131
+ int in_def, in_single;
132
+ mrb_bool cmd_start:1;
133
+ mrb_ast_node *locals;
134
+
135
+ mrb_ast_node *pb;
136
+ char *tokbuf;
137
+ char buf[MRB_PARSER_TOKBUF_SIZE];
138
+ int tidx;
139
+ int tsiz;
140
+
141
+ mrb_ast_node *all_heredocs; /* list of mrb_parser_heredoc_info* */
142
+ mrb_ast_node *heredocs_from_nextline;
143
+ mrb_ast_node *parsing_heredoc;
144
+ mrb_ast_node *lex_strterm_before_heredoc;
145
+ mrb_bool heredoc_end_now:1; /* for mirb */
146
+
147
+ void *ylval;
148
+
149
+ size_t nerr;
150
+ size_t nwarn;
151
+ mrb_ast_node *tree;
152
+
153
+ mrb_bool no_optimize:1;
154
+ mrb_bool capture_errors:1;
155
+ struct mrb_parser_message error_buffer[10];
156
+ struct mrb_parser_message warn_buffer[10];
157
+
158
+ mrb_sym* filename_table;
159
+ size_t filename_table_length;
160
+ int current_filename_index;
161
+
162
+ struct mrb_jmpbuf* jmp;
163
+ };
164
+
165
+ MRB_API struct mrb_parser_state* mrb_parser_new(mrb_state*);
166
+ MRB_API void mrb_parser_free(struct mrb_parser_state*);
167
+ MRB_API void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*);
168
+
169
+ MRB_API void mrb_parser_set_filename(struct mrb_parser_state*, char const*);
170
+ MRB_API char const* mrb_parser_get_filename(struct mrb_parser_state*, uint16_t idx);
171
+
172
+ /* utility functions */
173
+ #ifndef MRB_DISABLE_STDIO
174
+ MRB_API struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*);
175
+ #endif
176
+ MRB_API struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*);
177
+ MRB_API struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,size_t,mrbc_context*);
178
+ MRB_API struct RProc* mrb_generate_code(mrb_state*, struct mrb_parser_state*);
179
+ MRB_API mrb_value mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c);
180
+
181
+ /* program load functions */
182
+ #ifndef MRB_DISABLE_STDIO
183
+ MRB_API mrb_value mrb_load_file(mrb_state*,FILE*);
184
+ MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt);
185
+ #endif
186
+ MRB_API mrb_value mrb_load_string(mrb_state *mrb, const char *s);
187
+ MRB_API mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, size_t len);
188
+ MRB_API mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt);
189
+ MRB_API mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len, mrbc_context *cxt);
190
+
191
+ /** @} */
192
+ MRB_END_DECL
193
+
194
+ #endif /* MRUBY_COMPILE_H */
@@ -0,0 +1,75 @@
1
+ /*
2
+ ** mruby/data.h - Data class
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_DATA_H
8
+ #define MRUBY_DATA_H
9
+
10
+ #include "common.h"
11
+
12
+ /**
13
+ * Custom C wrapped data.
14
+ *
15
+ * Defining Ruby wrappers around native objects.
16
+ */
17
+ MRB_BEGIN_DECL
18
+
19
+ /**
20
+ * Custom data type description.
21
+ */
22
+ typedef struct mrb_data_type {
23
+ /** data type name */
24
+ const char *struct_name;
25
+
26
+ /** data type release function pointer */
27
+ void (*dfree)(mrb_state *mrb, void*);
28
+ } mrb_data_type;
29
+
30
+ struct RData {
31
+ MRB_OBJECT_HEADER;
32
+ struct iv_tbl *iv;
33
+ const mrb_data_type *type;
34
+ void *data;
35
+ };
36
+
37
+ MRB_API struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *datap, const mrb_data_type *type);
38
+
39
+ #define Data_Wrap_Struct(mrb,klass,type,ptr)\
40
+ mrb_data_object_alloc(mrb,klass,ptr,type)
41
+
42
+ #define Data_Make_Struct(mrb,klass,strct,type,sval,data) do { \
43
+ sval = mrb_malloc(mrb, sizeof(strct)); \
44
+ { static const strct zero = { 0 }; *sval = zero; };\
45
+ data = Data_Wrap_Struct(mrb,klass,type,sval);\
46
+ } while (0)
47
+
48
+ #define RDATA(obj) ((struct RData *)(mrb_ptr(obj)))
49
+ #define DATA_PTR(d) (RDATA(d)->data)
50
+ #define DATA_TYPE(d) (RDATA(d)->type)
51
+ MRB_API void mrb_data_check_type(mrb_state *mrb, mrb_value, const mrb_data_type*);
52
+ MRB_API void *mrb_data_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*);
53
+ #define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype)
54
+ MRB_API void *mrb_data_check_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*);
55
+ #define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype)
56
+
57
+ /* obsolete functions and macros */
58
+ #define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype)
59
+ #define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
60
+ #define mrb_check_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type)
61
+ #define Data_Get_Struct(mrb,obj,type,sval) do {\
62
+ *(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \
63
+ } while (0)
64
+
65
+ static inline void
66
+ mrb_data_init(mrb_value v, void *ptr, const mrb_data_type *type)
67
+ {
68
+ mrb_assert(mrb_type(v) == MRB_TT_DATA);
69
+ DATA_PTR(v) = ptr;
70
+ DATA_TYPE(v) = type;
71
+ }
72
+
73
+ MRB_END_DECL
74
+
75
+ #endif /* MRUBY_DATA_H */
@@ -0,0 +1,66 @@
1
+ /*
2
+ ** mruby/debug.h - mruby debug info
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_DEBUG_H
8
+ #define MRUBY_DEBUG_H
9
+
10
+ #include "common.h"
11
+
12
+ /**
13
+ * MRuby Debugging.
14
+ */
15
+ MRB_BEGIN_DECL
16
+
17
+ typedef enum mrb_debug_line_type {
18
+ mrb_debug_line_ary = 0,
19
+ mrb_debug_line_flat_map = 1
20
+ } mrb_debug_line_type;
21
+
22
+ typedef struct mrb_irep_debug_info_line {
23
+ uint32_t start_pos;
24
+ uint16_t line;
25
+ } mrb_irep_debug_info_line;
26
+
27
+ typedef struct mrb_irep_debug_info_file {
28
+ uint32_t start_pos;
29
+ const char *filename;
30
+ mrb_sym filename_sym;
31
+ uint32_t line_entry_count;
32
+ mrb_debug_line_type line_type;
33
+ union {
34
+ void *ptr;
35
+ mrb_irep_debug_info_line *flat_map;
36
+ uint16_t *ary;
37
+ } lines;
38
+ } mrb_irep_debug_info_file;
39
+
40
+ typedef struct mrb_irep_debug_info {
41
+ uint32_t pc_count;
42
+ uint16_t flen;
43
+ mrb_irep_debug_info_file **files;
44
+ } mrb_irep_debug_info;
45
+
46
+ /*
47
+ * get line from irep's debug info and program counter
48
+ * @return returns NULL if not found
49
+ */
50
+ MRB_API const char *mrb_debug_get_filename(mrb_irep *irep, ptrdiff_t pc);
51
+
52
+ /*
53
+ * get line from irep's debug info and program counter
54
+ * @return returns -1 if not found
55
+ */
56
+ MRB_API int32_t mrb_debug_get_line(mrb_irep *irep, ptrdiff_t pc);
57
+
58
+ MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file(
59
+ mrb_state *mrb, mrb_irep *irep,
60
+ uint32_t start_pos, uint32_t end_pos);
61
+ MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
62
+ MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
63
+
64
+ MRB_END_DECL
65
+
66
+ #endif /* MRUBY_DEBUG_H */