diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-23 23:41:12 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-23 23:50:42 +0900 |
| commit | 9644ad51b4a63d8db46d7918ec5e89a547236c56 (patch) | |
| tree | 12c3265c8c71d9b26ff544f2e0f0768bc64cf7c7 /src/gc.c | |
| parent | d2458e66c26bac5e9db98c22dc6910cb45971b85 (diff) | |
| download | mruby-9644ad51b4a63d8db46d7918ec5e89a547236c56.tar.gz mruby-9644ad51b4a63d8db46d7918ec5e89a547236c56.zip | |
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.
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 4 |
1 files changed, 0 insertions, 4 deletions
@@ -735,8 +735,6 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) case MRB_TT_EXCEPTION: mrb_gc_free_iv(mrb, (struct RObject*)obj); - if ((struct RObject*)obj == mrb->backtrace.exc) - mrb->backtrace.exc = 0; break; case MRB_TT_CLASS: @@ -870,8 +868,6 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self); /* mark exception */ mrb_gc_mark(mrb, (struct RBasic*)mrb->exc); - /* mark backtrace */ - mrb_gc_mark(mrb, (struct RBasic*)mrb->backtrace.exc); /* mark pre-allocated exception */ mrb_gc_mark(mrb, (struct RBasic*)mrb->nomem_err); mrb_gc_mark(mrb, (struct RBasic*)mrb->stack_err); |
