Project

General

Profile

« Previous | Next » 

Revision 545d6820

Added by nagachika (Tomoyuki Chikanaga) almost 4 years ago

merge revision(s) fb4cf204a662a8cd9dafef6f31f2bd0db9129abe,fa0279d947c3962c3f8c32852278d3ebb964cb19: [Backport #17725]

    use me->def instead of me for opt_table

    `vm_opt_method_table` is me=>bop table to manage the optimized
    methods (by specialized instruction). However, `me` can be invalidated
    to invalidate the method cache entry.
    [Bug #17725]

    To solve the issue, use `me-def` instead of `me` which simply copied
    at invalidation timing.

    A test by @jeremyevans https://github.com/ruby/ruby/pull/4376
    ---
     test/ruby/test_method.rb | 15 +++++++++++++++
     vm.c                     | 11 +++++------
     2 files changed, 20 insertions(+), 6 deletions(-)

    should not share same `def` for specialized method

    Because the key of redefine table is `def`, `def` should be
    unique for each optimized method (`alias` is not allowed).
    ---
     array.c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)