diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-06 18:44:54 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-06 18:44:54 +0000 |
commit | a2e7f654fff4c2d0c4d5ea3d79590674ff998688 (patch) | |
tree | 1dc5d1ed654f5c84a78f4941eda131968260c6ca /iseq.c | |
parent | 6ca78f0a1ca35066d7d7ac6ab1117d7c9522db73 (diff) | |
download | ruby-a2e7f654fff4c2d0c4d5ea3d79590674ff998688.tar.gz |
* vm_core.h: remove rb_iseq_t::klass to reduce dynamic data.
* internal.h, iseq.c (rb_iseq_klass): remove it because
rb_iseq_t::klass is removed.
* vm_insnhelper.c (vm_super_outside): do not see cfp->iseq, but
check callable method entry on a frame.
This fix simplify the logic to search super class.
* test/ruby/test_method.rb: support super() from Proc.
Now, [Bug #4881] and [Bug #3136] was solved.
* proc.c (rb_mod_define_method): catch up this change.
* vm.c (vm_define_method): ditto.
* vm_backtrace.c (rb_profile_frames): now, each `frame' objects
are rb_callable_method_entry_t data or iseq VALUEs.
This fix introduce minor compatibility issue that
rb_profile_frame_label() always returns
rb_profile_frame_base_label().
* test/-ext-/debug/test_profile_frames.rb: catch up this change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'iseq.c')
-rw-r--r-- | iseq.c | 18 |
1 files changed, 0 insertions, 18 deletions
@@ -127,8 +127,6 @@ iseq_mark(void *ptr) RUBY_MARK_UNLESS_NULL(iseq->orig); } - RUBY_MARK_UNLESS_NULL(iseq->klass); - if (iseq->compile_data != 0) { struct iseq_compile_data *const compile_data = iseq->compile_data; RUBY_MARK_UNLESS_NULL(compile_data->mark_ary); @@ -261,7 +259,6 @@ prepare_iseq_build(rb_iseq_t *iseq, const rb_compile_option_t *option) { iseq->type = type; - RB_OBJ_WRITE(iseq->self, &iseq->klass, 0); set_relation(iseq, parent); name = rb_fstring(name); @@ -939,14 +936,6 @@ rb_iseq_first_lineno(VALUE self) } VALUE -rb_iseq_klass(VALUE self) -{ - rb_iseq_t *iseq; - GetISeqPtr(self, iseq); - return iseq->local_iseq->klass; -} - -VALUE rb_iseq_method_name(VALUE self) { rb_iseq_t *iseq, *local_iseq; @@ -1961,13 +1950,6 @@ rb_iseq_clone(VALUE iseqval, VALUE newcbase) iseq1->local_iseq = iseq1; } - if (newcbase) { - RB_OBJ_WRITE(iseq1->self, &iseq1->klass, newcbase); - } - else { - RB_OBJ_WRITTEN(iseq1->self, Qundef, iseq1->klass); - } - RB_GC_GUARD(iseqval); /* seems necessary iff RGenGC is disabled */ return newiseq; |