I have a question about what value is passed to the C++ member function to invoke. When I disassemble a C++ member function like
void myClass::memberFunction() const;
I suppose it passed one implicit parameter this as the first and only parameter, but in fact, there could be two or more parameters passed.
I disassembled libobjc.A.dylib (iOS14.8-arm64e) with hopper. this function class_rw::method() const has no parameters, so I consider it pass only this pointer as the only parameter, but it has another (x1) parameter passed.
Then actual code is opensource on apple
https://opensource.apple.com/source/objc4/objc4-818.2/runtime/objc-runtime-new.mm.auto.html
And the snapshot is like

It seems the compiler auto-generated additional variables for this member function. My question is that:
This should only happen when we put the implementation in the class declaration right? This seems non-portable for classes that hides its implementation in another cpp file.
Is there a name for such an implicit added variable? I mean when we develop a compiler for c++, what do we call for such optimization?
