Expand description
Transform method calls on &dyn Trait
to vtable function pointer calls.
This pass converts direct method calls on trait objects into calls through vtable function pointers. For example:
ⓘ
let x: &dyn Trait = &obj;
x.method(args);
is transformed from:
@0 := call <dyn Trait as Trait>::method(x, args)
to:
@0 := (move (*@receiver.ptr_metadata).method_check)(move (@receiver), move (@args)) // Call through function pointer