I assume you want to add an interp * to NYTP_file. I tried something similar in https://github.com/rurban/Cpanel-JSON-XS/issues/16 . Adding the interp * to a C struct turned out to be slower than passing it on C stack. In my patch I added dTHX (which is 4.3 times slower slower than passing interp * on c stack according to my post http://perlmonks.org/?node_id=995649 and 5 ns slower). So you want FileHandle.xs to not be using dTHX all over the place? For FileHandle.xs to use a NYTP_file to store the interp *. a "dNFTHX" (declare NYTP_file thead context) macro will still be needed everywhere where I have dTHX or some variant of dTHX now, since perl must have a C auto called "my_perl" in scope. Something like
```
#define dNFTHX dTHXa(file->cxt)
```
But unlike dTHX (which calls Perl_get_context() the func), it can optimize away by C compiler if its not needed since its not a func call.

I dont want to blindly put dNFTHX at the start of every FileHandle.xs func since that wastes registers/C stack to keep it "live" around function calls that do not use THX.