From: John McCall
This section describes the requirements of the current ARC -implementation in Clang on the Objective-C runtime. It is not part of -the ARC language specification; instead, it is effectively a -language-specific ABI supplement, akin to the Itanium ABI for C++.
+This section describes the interaction between the ARC runtime and
+the code generated by the ARC compiler. This is not part of the ARC
+language specification; instead, it is effectively a language-specific
+ABI supplement, akin to the Itanium
generic ABI for C++.
Ownership qualification does not alter the storage requirements for -an object, except that __weak objects must always be -appropriately aligned for an object of type id.
+objects, except that it is undefined behavior if a __weak +object is inadequately aligned for an object of type id. The +other qualifiers may be used on explicitly under-aligned memory.The runtime tracks __weak objects which holds non-null values. It is undefined behavior to direct modify a __weak @@ -1674,6 +1675,15 @@ may be left as null.
on src.Precondition: value is null or a pointer to a +valid object.
+If value is null, this call has no effect. Otherwise, it +performs a release operation exactly as if the object had been sent +the release message.
+Precondition: value is null or a pointer to a @@ -1735,15 +1745,6 @@ a retain operation is performed on the block exactly as if it had been sent the retain message.
Precondition: value is null or a pointer to a -valid object.
-If value is null, this call has no effect. Otherwise, it -performs a release operation exactly as if the object had been sent -the release message.
-Precondition: object is a valid pointer to