Skip to content

Commit 9644ad5

Browse files
committed
Simplify backtrace mechanism; fix #3633 #3634 #3644
Instead of preserving a backtrace in `mrb_state`, `mrb_exc_set` keeps packed backtrace in an exception object. `#backtrace` unpacks it to an array of strings.
1 parent d2458e6 commit 9644ad5

File tree

8 files changed

+91
-297
lines changed

8 files changed

+91
-297
lines changed

include/mruby.h

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,6 @@ struct mrb_context {
152152

153153
struct mrb_jmpbuf;
154154

155-
typedef struct {
156-
const char *filename;
157-
int lineno;
158-
mrb_sym method_id;
159-
} mrb_backtrace_entry;
160-
161155
typedef void (*mrb_atexit_func)(struct mrb_state*);
162156

163157
#define MRB_STATE_NO_REGEXP 1
@@ -172,15 +166,9 @@ typedef struct mrb_state {
172166

173167
struct mrb_context *c;
174168
struct mrb_context *root_c;
169+
struct iv_tbl *globals; /* global variable table */
175170

176171
struct RObject *exc; /* exception */
177-
struct {
178-
struct RObject *exc;
179-
int n;
180-
int n_allocated;
181-
mrb_backtrace_entry *entries;
182-
} backtrace;
183-
struct iv_tbl *globals; /* global variable table */
184172

185173
struct RObject *top_self;
186174
struct RClass *object_class; /* Object class */

include/mruby/error.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg);
2525
MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
2626
#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
2727
MRB_API mrb_value mrb_make_exception(mrb_state *mrb, int argc, const mrb_value *argv);
28-
MRB_API mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
2928
MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb);
3029
MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
3130

0 commit comments

Comments
 (0)