Devirtualize calls made on a mojo::InterfacePtr<T>

This patch devirtualizes calls to interface methods made through a
mojo::InterfacePtr<T> and mojo::AssociatedInterfacePtr<T> by making
get() and the -> and . operators return the proxy type directly and
marking the interface methods on the proxy as final.

The motivation of this change is performance and binary size. The non-
virtual call sites are slightly smaller but not enough to effect the
complete binary. Performance should be net-positive but as yet has not
been accurately measured.

Bug: None
Change-Id: I463bc32c1989853606d118f57ded5c9dd9f34e2f
Reviewed-on: https://chromium-review.googlesource.com/747884
Commit-Queue: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Yuzhu Shen <yzshen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513030}

CrOS-Libchrome-Original-Commit: 91165cea768b42e1852756f9c67a468cf8825181
5 files changed
tree: 2e90892473297b242fb5ff57e485c9c0406afab3
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/