Commits
Dave Abrahams committed b297c1f51bc
Make better use of Builtin.BridgeObject bits We used to reserve a specific spare bit to say "this is a native object." Now, we're going to say, "if *any* spare bit is set, this is a native object." At the cost of having no spare bits to work with in the non-native case, this allows us to store a number in 1..<4 (actually 0..<4, at some cost in speed for the 0 case) along with any native object on all platforms. This half bit advantage is important on 32-bit platforms, we have only spare 2 bits to work with. Given that on the 64-bit platforms there are *no* spare bits in the case where the object is a non-native tagged pointer, we have no guarantee of being able to store extra information along with an arbitrary non-native object. Giving up the ability to store bits for *all* non-native objects (even non-tagged ones) is therefore not much of a sacrifice. Fixes <rdar://problem/18920415> More useful spare bits in Builtin.BridgeObject Swift SVN r23345