+A small note on the choice of magic_reg for different JIT backends: the IMT
+method identifier doesn't necessarily need to be stored in a register, though
+doing so is fast and the JIT code has already the infrastructure to handle this
+case in an arch-independent way. A JIT porter just needs to #define
+MONO_ARCH_IMT_REG to the chosen register. Note that this register should be
+part of the MONO_ARCH_CALLEE_REGS set as it will be handled by the local register
+allocator (see mini/inssel.brg) and it must not be part of the registers used for
+argument passing as you'd overwrite an argument in that case.
+Also note that the method-specific trampoline code should make sure to preserve
+this register (but it should already if it's in MONO_ARCH_CALLEE_REGS as
+it could have been used for a vtable indirect call).
+
+Note that in the case of a nono-colliding IMT slot, the interface call
+instruction sequence becomes equivalent to a virtual call, as the IMT slot
+will contain the direct trampoline for the method and the magic trampoline will
+set the slot to the method's native code address once it is compiled.
+