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
normal f6cd582505 variable.c: avoid compatibility table with generic ivars
This recovers and improves performance of Marshal.dump/load on
Time objects compared to when we implemented generic ivars
entirely using st_table.

This also recovers some performance on other generic ivar objects,
but does not bring bring Marshal.dump/load performance up to
previous speeds.

benchmark results:
minimum results in each 10 measurements.
Execution time (sec)
		name    trunk   geniv   after
marshal_dump_flo        0.343   0.334   0.335
marshal_dump_load_geniv 0.487   0.527   0.495
marshal_dump_load_time  1.262   1.401   1.257

Speedup ratio: compare with the result of `trunk' (greater is better)
		name    geniv   after
marshal_dump_flo        1.026   1.023
marshal_dump_load_geniv 0.925   0.985
marshal_dump_load_time  0.901   1.004

* include/ruby/intern.h (rb_generic_ivar_table): deprecate
* internal.h (rb_attr_delete): declare
* marshal.c (has_ivars): use rb_ivar_foreach
  (w_ivar): ditto
  (w_object): update for new interface
* time.c (time_mload): use rb_attr_delete
* variable.c (generic_ivar_delete): implement
  (rb_ivar_delete): ditto
  (rb_attr_delete): ditto
  [ruby-core:69323] [Feature #11170]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-30 00:20:15 +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 fix condition 2015-05-26 12:37:42 +00:00
encoding.h string.c: rb_str_new_static 2014-09-19 05:53:00 +00:00
intern.h variable.c: avoid compatibility table with generic ivars 2015-05-30 00:20:15 +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 ruby.h: warn old names 2015-05-20 05:09:00 +00:00
st.h st.c: remove equality checks 2014-07-06 15:11:53 +00:00
subst.h
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 (rb_w32_{getc,putc}): removed. they are needed for old 2015-04-24 01:44:12 +00:00