[#81999] [Ruby trunk Bug#13737] "can't modify frozen String" when installing bundled gems — ko1@...
Issue #13737 has been updated by ko1 (Koichi Sasada).
4 messages
2017/07/11
[#82005] [Ruby trunk Bug#13737] "can't modify frozen String" when installing bundled gems — nobu@...
Issue #13737 has been updated by nobu (Nobuyoshi Nakada).
3 messages
2017/07/12
[#82102] Re: register_fstring_tainted:FL_TEST_RAW(str, RSTRING_FSTR) — Eric Wong <normalperson@...>
Koichi Sasada <ko1@atdot.net> wrote:
4 messages
2017/07/18
[#82151] [Ruby trunk Feature#13637] [PATCH] tool/runruby.rb: test with smallest possible machine stack — Rei.Odaira@...
Issue #13637 has been updated by ReiOdaira (Rei Odaira).
3 messages
2017/07/24
[ruby-core:82017] [Ruby trunk Feature#13715] [PATCH] avoid garbage from Symbol#to_s in interpolation
From:
ko1@...
Date:
2017-07-13 02:48:30 UTC
List:
ruby-core #82017
Issue #13715 has been updated by ko1 (Koichi Sasada).
> VALUE rb_vm_call0_body(rb_thread_t *th, struct rb_calling_info *calling,
You don't need to expose `vm_call0_body()` because ` vm_eval.c` and ` vm_insnhelper.c` are included in `vm.c`.
```
if (RB_TYPE_P(recv, T_SYMBOL)) {
vm_search_method(ci, cc, recv);
```
It seems we can use `vm_method_cfunc_is()`.
```
calling.block_handler = VM_BLOCK_HANDLER_NONE;
calling.argc = 0;
calling.recv = recv;
val = rb_vm_call0_body(th, &calling, ci, cc, 0);
return RB_TYPE_P(val, T_STRING) ? val : rb_any_to_s(recv);
```
How about to call `rb_obj_as_string()` directly? I understand that you want to reuse method search results, but code will be simplified.
Or make new function to call method with given ci, cc?
----------------------------------------
Feature #13715: [PATCH] avoid garbage from Symbol#to_s in interpolation
https://bugs.ruby-lang.org/issues/13715#change-65748
* Author: normalperson (Eric Wong)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
~~~
"ruby -e 'p GC.stat(:total_allocated_objects)'" goes from
70199 to 69540 allocated objects when loading RubyGems from
a clean install.
The increased VM size slows down the whileloop2 and vm2_dstr
case slightly, but string interpolation often consists of
non-strings. The addition of inline cache helps integer cases
slightly, and the intended Symbol optimization gives a major
improvement.
speedup relative to trunk
name |built
---------------|------:
loop_whileloop2| 0.984
vm2_dstr* | 0.991
vm2_dstr_digit*| 1.167
vm2_dstr_int* | 1.120
vm2_dstr_nil* | 1.181
vm2_dstr_sym* | 1.663
Digits (0-9), Integers, and perhaps true/false/nil may be
optimized in the future.
* vm_eval.c (rb_vm_call0_body): new function exports vm_call0_body
* vm_insnshelper.c (vm_tostring): new function
* insns.def (tostring): call vm_tostring with ci + cc
* compile.c (iseq_compile_each0): adjust tostring insn compile
* benchmark/bm_vm2_dstr_digit.rb: new benchmark
* benchmark/bm_vm2_dstr_int.rb: ditto
* benchmark/bm_vm2_dstr_nil.rb: ditto
* benchmark/bm_vm2_dstr_sym.rb: ditto
~~~
---Files--------------------------------
0001-avoid-garbage-from-Symbol-to_s-in-interpolation.patch (6.32 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>