-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[WIP] Runtime: Put ObjC class wrapper unwrapping behind a runtime call. #12732
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Runtime: Put ObjC class wrapper unwrapping behind a runtime call. #12732
Conversation
@swift-ci Please test |
@swift-ci Please benchmark |
Build failed |
Build comment file:Optimized (O)Regression (2)
Improvement (1)
No Changes (331)
Unoptimized (Onone)Regression (2)
Improvement (2)
No Changes (330)
Hardware Overview
|
@eeckstein Do the benchmark numbers look acceptable? Hard to tell whether .9 is inside the noise floor or not. |
This is a small code size win, and also gives us some abstraction so that future cooperative ObjC compilers/runtimes might be able to interoperate ObjC class objects with Swift type metadata efficiently than they currently are in the fragile Swift runtime. While I'm here, I also noticed that swift_getObjCClassMetadata was unnecessarily getting exposed in non-ObjC-interop runtime builds, so I fixed that as well.
ba5145f
to
95d2510
Compare
@swift-ci Please test |
1 similar comment
@swift-ci Please test |
@swift-ci Please test source compatibility |
1 similar comment
@swift-ci Please test source compatibility |
Build failed |
@swift-ci please test os x |
The benchmark numbers are totally reasonable (and probably noise at all). |
Thanks Erik! |
@swift-ci Please test source compatibility |
This is a small code size win, and also gives us some abstraction so that future cooperative ObjC compilers/runtimes might be able to interoperate ObjC class objects with Swift type metadata efficiently than they currently are in the fragile Swift runtime.
While I'm here, I also noticed that swift_getObjCClassMetadata was unnecessarily getting exposed in non-ObjC-interop runtime builds, so I fixed that as well.
[WIP] while performance impact is measured.