fmt.Fprintf("%d", 8)
Since all interface data fields are now pointers, an int must be allocated and
initialized to 8 so that it can be put in an interface{} to pass to Fprintf.
Since we know the 8 doesn't escape, we could instead allocate that 8 on the stack and
have the interface data word point to that stack slot. To be safe, we can only do this
when the resulting interface{} doesn't escape. We probably also need to be sure the
conversion happens at most once so the stack slot is not reused.
We could have a special convT2Enoescape call for the compiler to use when it knows the
result doesn't escape. Maybe also convT2I, assertT2E, ...
fmt.Fprintf("%d", 8) Since all interface data fields are now pointers, an int must be allocated and initialized to 8 so that it can be put in an interface{} to pass to Fprintf. Since we know the 8 doesn't escape, we could instead allocate that 8 on the stack and have the interface data word point to that stack slot. To be safe, we can only do this when the resulting interface{} doesn't escape. We probably also need to be sure the conversion happens at most once so the stack slot is not reused. We could have a special convT2Enoescape call for the compiler to use when it knows the result doesn't escape. Maybe also convT2I, assertT2E, ...