Feature #11664
Updated by nobu (Nobuyoshi Nakada) about 9 years ago
`rb_autoload_value` rb_autoload_value may be safer by preventing premature GC. It can also be more efficient by passing a pre-frozen string that can be deduped using `rb_fstring`. rb_fstring. Common autoload callers (e.g. rubygems, rdoc) already use string literals as the file argument. There seems to be no reason to expose `rb_autoload_value` rb_autoload_value to the public C API since autoload is not performance-critical. Applications may declare autoloads in Ruby code or via `rb_funcall`; rb_funcall; so merely deprecate `rb_autoload` rb_autoload without exposing `rb_autoload_value` rb_autoload_value to new users. Running: `valgrind valgrind -v ruby -rrdoc -rubygems -e exit` exit shows a minor memory reduction (32-bit userspace) before: ~~~ in use at exit: 1,600,621 bytes in 28,819 blocks total heap usage: 55,786 allocs, 26,967 frees, 6,693,790 bytes allocated ~~~ after: ~~~ in use at exit: 1,599,778 bytes in 28,789 blocks total heap usage: 55,739 allocs, 26,950 frees, 6,692,973 bytes allocated ~~~