llvm-project
3c8e9499 - Handle accelerated ObjC Class method dispatchs. (#188392)

Commit
17 days ago
Handle accelerated ObjC Class method dispatchs. (#188392) On Darwin, clang added a new objc class method dispatch, turned on by the flag: `-fobjc-msgsend-class-selector-stubs`. These stubs are like the accelerated stubs added previously for method selectors. This patch adds support for stepping through them. I had previously handled the method stubs by figuring out the object -> class and then used the selector encoded in the stub name. But that depended on all the stubs setting the object into arg1 before calling the stub, which not all the stubs do anymore. Since all the stubs do some work and then call objc_msgSend, instead of trying to predict what the stub is going to do, I just let it run to the objc_msgSend and then figure out how to go from there - at that point arg1 and arg2 are correctly set, so I can use the regular objc_msgSend trampoline for that. That change meant I was no longer using the "find the implementation" method that was passing in the selector string that we pulled from the stub name, so this patch also removes that.
Author
Parents
Loading