summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-23 23:41:12 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-23 23:50:42 +0900
commit9644ad51b4a63d8db46d7918ec5e89a547236c56 (patch)
tree12c3265c8c71d9b26ff544f2e0f0768bc64cf7c7 /src/gc.c
parentd2458e66c26bac5e9db98c22dc6910cb45971b85 (diff)
downloadmruby-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.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/src/gc.c b/src/gc.c
index bd633a9fe..7337c659a 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -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);