diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-12-10 16:02:47 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-12-10 16:02:47 +0900 |
| commit | 3cc913490b708fe4d0e78e48f86e6e39cf3d8576 (patch) | |
| tree | 90cac9474b018643579c88d8280950ec2d995524 /src | |
| parent | d93422315cceb4fbe0fcb17d070f329518343e49 (diff) | |
| parent | f7a891fa8979bdb82410e1adc98765013cc29a79 (diff) | |
| download | mruby-3cc913490b708fe4d0e78e48f86e6e39cf3d8576.tar.gz mruby-3cc913490b708fe4d0e78e48f86e6e39cf3d8576.zip | |
Merge pull request #3329 from bouk/reuse
Mark all the built-in classes during GC sweep
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -833,6 +833,26 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) } /* mark class hierarchy */ mrb_gc_mark(mrb, (struct RBasic*)mrb->object_class); + + /* mark built-in classes */ + mrb_gc_mark(mrb, (struct RBasic*)mrb->class_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->module_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->proc_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->string_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->array_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class); + + mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->fixnum_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->true_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->false_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->nil_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->symbol_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->kernel_module); + + mrb_gc_mark(mrb, (struct RBasic*)mrb->eException_class); + mrb_gc_mark(mrb, (struct RBasic*)mrb->eStandardError_class); + /* mark top_self */ mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self); /* mark exception */ |
