Displaying 1 result from an estimated 1 matches for "bjc_msgsend".
Did you mean:
objc_msgsend
2020 Oct 12
2
[RFC] Analysis and runtime check of objc_direct/objc_non_runtime_protocol
...interface A (Private)
- (void)foo;
@end
// impl.mm:
#include “public.h”
@implementation A
- (void)foo __attribute__((objc_direct)) {}
@end
// test.mm:
#include “private.h”
void test(A *a) { [a foo]; }
→ When compiling test.mm, foo is not treated as direct, and IR codegen will
generate a call to bjc_msgSend. When compiling impl.mm, foo is direct and
is removed from the ObjC metadata.
We should emit an error message from the global analysis if there exists an
objc_msgSend callsite that targets a direct method. With this global
analysis, we can claim the invariant that within the link unit, all
callsit...