Issue #7556 has been updated by shugo (Shugo Maeda).


Hello,

phasis68 (Heesob Park) wrote:
> Here is another workaround:
> 
> #ifdef _MSC_VER
> #pragma optimize( "", off )
> #endif

Thanks for your suggestion.

But it seems that the #pragma optimize( "", off ) version is slightly slower than the volatile int x = 0 version.

with volatile int x = 0:

C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb
Rehearsal -----------------------------------------
super   1.778000   0.000000   1.778000 (  1.783227)
-------------------------------- total: 1.778000sec

            user     system      total        real
super   1.810000   0.000000   1.810000 (  1.806230)

C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb
Rehearsal -----------------------------------------
super   1.747000   0.000000   1.747000 (  1.789727)
-------------------------------- total: 1.747000sec

            user     system      total        real
super   1.763000   0.000000   1.763000 (  1.760224)

C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb
Rehearsal -----------------------------------------
super   1.763000   0.000000   1.763000 (  1.804229)
-------------------------------- total: 1.763000sec

            user     system      total        real
super   1.809000   0.000000   1.809000 (  1.841734)

with #pragma optimize( "", off ):

C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb
Rehearsal -----------------------------------------
super   1.825000   0.000000   1.825000 (  1.859236)
-------------------------------- total: 1.825000sec

            user     system      total        real
super   1.872000   0.000000   1.872000 (  1.864237)

C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb
Rehearsal -----------------------------------------
super   1.919000   0.000000   1.919000 (  1.920744)
-------------------------------- total: 1.919000sec

            user     system      total        real
super   1.794000   0.000000   1.794000 (  1.820232)

C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb
Rehearsal -----------------------------------------
super   1.872000   0.000000   1.872000 (  1.913243)
-------------------------------- total: 1.872000sec

            user     system      total        real
super   1.810000   0.000000   1.810000 (  1.817231)

I guess #pragma optimize( "", off ) disables function inlining of vm_call_method.

----------------------------------------
Bug #7556: test error on refinement
https://bugs.ruby-lang.org/issues/7556#change-34728

Author: usa (Usaku NAKAMURA)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: ext
Target version: 2.0.0
ruby -v: ruby -v: ruby 2.0.0dev (2012-12-13 trunk 38354) [x64-mswin64_100]


  1) Error:
test_refine_recursion(TestRefinement):
NoMethodError: undefined method `recursive_length' for "oo":String
    C:/Users/usa/ruby/test/ruby/test_refinement.rb:567:in `recursive_length'
    <main>:in `<main>'
    C:/Users/usa/ruby/test/ruby/test_refinement.rb:806:in `eval'
    C:/Users/usa/ruby/test/ruby/test_refinement.rb:806:in `eval_using'
    C:/Users/usa/ruby/test/ruby/test_refinement.rb:574:in `test_refine_recursion'


On my box this error is 100% reproducible, but I also know that RubyCI and
RubyInstaller CI don't report this error.
I've heard that nobu reproduced this bug on x86_64-dawrin, but I don't know
the detail of his environment.

# Once I wrote the detail of my debuggin, but it is lost by accidenal reboot
# of my PC.
# I have no energy to rewrite it, because writing long English sentences
# irritates me, especially after seeing mails which reproach our native
# language.


-- 
http://bugs.ruby-lang.org/