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


phasis68 (Heesob Park) wrote:
> Here is a different workaround using __forceinline on vm_call_method function.
> 
> 
> static
> #ifdef _MSC_VER
> __forceinline
> #else
> inline
> #endif
> VALUE
> vm_call_method(rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)

Thanks, it solves the problem without the optimize progma for rb_call_super_method, and performance decrease hasn't been observed.

Could you tell me why __forceinline for vm_call_method prevent VC++ to make vm_call_general and vm_call_super_method as the same function?
I couldn't find the reason at <URL:http://msdn.microsoft.com/library/vstudio/z8y1yy88>.

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

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/