@@ -356,10 +356,7 @@ knowhow NQPClassHOW {
356
356
@ mro_reversed . unshift ($ _ );
357
357
}
358
358
for @ mro_reversed {
359
- my % methods := $ _ . HOW . method_table($ _ );
360
- for % methods {
361
- % cache {$ _ . key } := $ _ . value ;
362
- }
359
+ % cache . update($ _ . HOW . method_table($ _ ));
363
360
}
364
361
pir::publish_method_cache($ obj , % cache );
365
362
pir::set_method_cache_authoritativeness__0Pi($ obj , 1 );
@@ -377,13 +374,12 @@ knowhow NQPClassHOW {
377
374
378
375
method publish_parrot_vtable_mapping ($ obj ) {
379
376
my % mapping ;
377
+ my @ mro_reversed ;
380
378
for @ ! mro {
381
- my % map := $ _ . HOW . parrot_vtable_mappings($ _ , : local(1 ));
382
- for % map {
383
- unless % mapping {$ _ . key } {
384
- % mapping {$ _ . key } := $ _ . value ;
385
- }
386
- }
379
+ @ mro_reversed . unshift ($ _ );
380
+ }
381
+ for @ mro_reversed {
382
+ % mapping . update($ _ . HOW . parrot_vtable_mappings($ _ , : local(1 )));
387
383
}
388
384
if + % mapping {
389
385
pir::stable_publish_vtable_mapping__vPP($ obj , % mapping );
@@ -392,13 +388,12 @@ knowhow NQPClassHOW {
392
388
393
389
method publish_parrot_vtablee_handler_mapping ($ obj ) {
394
390
my % mapping ;
391
+ my @ mro_reversed ;
395
392
for @ ! mro {
396
- my % map := $ _ . HOW . parrot_vtable_handler_mappings($ _ , : local(1 ));
397
- for % map {
398
- unless % mapping {$ _ . key } {
399
- % mapping {$ _ . key } := $ _ . value ;
400
- }
401
- }
393
+ @ mro_reversed . unshift ($ _ );
394
+ }
395
+ for @ mro_reversed {
396
+ % mapping . update($ _ . HOW . parrot_vtable_handler_mappings($ _ , : local(1 )));
402
397
}
403
398
if + % mapping {
404
399
pir::stable_publish_vtable_handler_mapping__vPP($ obj , % mapping );
0 commit comments