1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/include/ruby
ko1 8f88ff4e37 * internal.h: remove struct method_table_wrapper.
struct method_table_wrapper was introduced to avoid duplicate marking
  for method tables.
  For example, `module M1; def foo; end; end` make one method table
  (mtbl) contains a method `foo`. M1 (T_MODULE) points mtbl.
  Classes C1 and C2 includes M1, then two T_ICLASS objects are created
  and they points mtbl too. In this case, three objects (one T_MODULE
  and two T_ICLASS objects) points same mtbl. On marking phase, these
  three objects mark same mtbl. To avoid such duplication, struct
  method_table_wrapper was introduced.
  However, created two T_ICLASS objects have same or shorter lifetime
  than M1 (T_MODULE) object. So that we only need to mark mtbl from M1,
  not from T_ICLASS objects. This patch tries marking only from M1.
  Note that one `Module#prepend` call creates two T_ICLASS objects.
  One for refering to a prepending Module object, same as
  `Module#include`. We don't nedd to care this T_ICLASS.
  One for moving original mtbl from a prepending class. We need to
  mark such mtbl from this T_ICLASS object. To mark the mtbl,
  we need to use `RCLASS_ORIGIN(klass)` on marking from a prepended
  class `klass`.
* class.c: ditto.
* eval.c (rb_using_refinement): ditto.
* gc.c: ditto.
* include/ruby/ruby.h: define m_tbl directly. The definition of
  struct RClass should be moved to (srcdir)/internal.h.
* method.h: remove decl of rb_free_m_tbl_wrapper().
* object.c: use RCLASS_M_TBL() directly.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-05 22:20:14 +00:00
..
backward * include/ruby/intern.h, 2014-02-14 15:16:31 +00:00
debug.h * include/ruby/debug.h, 2013-10-09 00:21:51 +00:00
defines.h * symbian/*: removed Symbian support. 2014-09-04 11:09:32 +00:00
encoding.h string.c: rb_str_new_static 2014-09-19 05:53:00 +00:00
intern.h intern.h: rb_str_new_literal 2015-01-03 10:52:14 +00:00
io.h * include/ruby/io.h (FMODE_WSPLIT): Removed. The write() system call 2014-11-18 09:10:59 +00:00
missing.h configure.in, missing.h: jemalloc mangling 2014-06-05 05:16:46 +00:00
oniguruma.h * reg*.c: Merge Onigmo 5.15.0 38a870960aa7370051a3544 2014-09-15 16:18:41 +00:00
re.h re.c: rb_reg_region_copy 2014-12-01 21:30:58 +00:00
regex.h defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END} 2013-04-05 10:29:38 +00:00
ruby.h * internal.h: remove struct method_table_wrapper. 2015-03-05 22:20:14 +00:00
st.h st.c: remove equality checks 2014-07-06 15:11:53 +00:00
subst.h * include/ruby/{subst.h,win32.h}, ext/socket/rubysocket.h: revert 2011-12-05 05:29:31 +00:00
thread.h defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END} 2013-04-05 10:29:38 +00:00
thread_native.h * ext/openssl/depend: remove dependency from internal headers. 2014-05-14 10:55:38 +00:00
util.h * configure.in: check qsort_r(3) and whether it is GNU version. 2014-02-08 12:50:28 +00:00
version.h ruby/version.h: bump API version 2014-12-29 11:16:17 +00:00
vm.h defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END} 2013-04-05 10:29:38 +00:00
win32.h * win32/win32.c, include/win32/win32.h (rb_w32_set_nonblock): new 2014-11-10 10:42:19 +00:00