-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[pulse] Summary specialization of objc blocks
Summary: This replaces previous specialisation of blocks with summary specialisation. - Rather than passing a block variable in a Call expression in the frontend, we now introduce a builtin `__call_objc_block` to handle calling blocks and the specialisation, seems better than continue to overcomplicate the execution of calls in Pulse. Downside is that this builtin needs to be modelled in all checkers, in particular we are missing precision in the performance checkers because of this. Given they are not enabled, we can leave this to be done later if it will be needed again. - We add a new type name where we can store the block procname to be put in the DynamicType attribute and retrieve it again after. - The tests mostly are ok. The main problem seems to be that we don't execute correctly when there is aliasing when calling a method that executes a parameter block. This can happen often when then we need to pass self to that method, and the block itself also captures self. We may need to look into combining dynamic type specialisation and alias specialisation in the future. Reviewed By: davidpichardie Differential Revision: D52960209 fbshipit-source-id: b0702846f641b649cbc7fb3757604f1a502fa346
- Loading branch information
1 parent
07fdaae
commit 8f98065
Showing
33 changed files
with
217 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.