From 0dc04da5c58c693a2705ea61bfe5123c87d83edf Mon Sep 17 00:00:00 2001 From: Altai-man Date: Fri, 1 May 2020 16:54:15 +0300 Subject: [PATCH] Revert "Merge pull request #3517 from vrurg/rakudo_3499" This reverts commit 0f223ac9d4acee63746e3ad57da5ef3f1a0820e3, reversing changes made to 8454f8dbffdbc613248d2167a022a83c10c2e8ec. --- src/Perl6/Metamodel/Dispatchers.nqp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/Perl6/Metamodel/Dispatchers.nqp b/src/Perl6/Metamodel/Dispatchers.nqp index a0ddbeab431..b6de877ffe8 100644 --- a/src/Perl6/Metamodel/Dispatchers.nqp +++ b/src/Perl6/Metamodel/Dispatchers.nqp @@ -77,16 +77,9 @@ class Perl6::Metamodel::BaseDispatcher { } method shift_callee() { - my @call := [nqp::null(), nqp::null()]; - if self.last_candidate { - if $!next_dispatcher { - @call := $!next_dispatcher.shift_callee; - } - } - else { - @call := self.get_call; - } - @call; + my $callee := @!candidates[$!idx]; + ++$!idx; + nqp::decont($callee) } method add_from_mro(@methods, $class, $sub, :$skip_first = 0) { @@ -135,7 +128,8 @@ class Perl6::Metamodel::MethodDispatcher is Perl6::Metamodel::BaseDispatcher { method vivify_for($sub, $lexpad, $args) { my $obj := $lexpad; - my @methods := self.add_from_mro([], $obj, $sub); + my $class := nqp::getlexrel($lexpad, '::?CLASS'); + my @methods := self.add_from_mro([], $class, $sub); self.new(:candidates(@methods), :obj($obj), :idx(1)) }