From: Heesob Park <phasis@...>
Date: 2012-12-14T18:28:58+09:00
Subject: [ruby-core:50896] Re: [ruby-trunk - Bug #7556] test error on refinement

2012/12/14 shugo (Shugo Maeda) <redmine@ruby-lang.org>
>
>
> Issue #7556 has been updated by shugo (Shugo Maeda).
>
>
> phasis68 (Heesob Park) wrote:
> > It seems that inline or __inline is not respected by the compiler
> > (ignored by compiler cost/benefit analyzer)
> >
> > Refer to http://en.wikipedia.org/wiki/Inline_function
>
> I know it, but I don't know why __forceinline prevent user functions (in
> this case, vm_call_general and vm_call_super_method) to be optimized into a
> single function.
>
The __forceinline keyword overrides the cost/benefit analysis and
relies on the judgment of the programmer instead.
Using __forceinline insures that all functions which call
vm_call_method function have the inline expanded code instead of
vm_call_method function call.
Thus, vm_call_general and vm_call_super_method are separated function.