stdlib: small improvements for StringObject.

1) don't use stringObjectOr for plain integer bits masks
2) no need to clear the extra bits on initialization.
This commit is contained in:
Erik Eckstein
2018-06-05 17:47:39 -07:00
parent a5b33396ce
commit 063e5792b8

View File

@@ -247,8 +247,7 @@ extension _StringObject {
internal
static var _variantMask: UInt {
@inline(__always)
get { return UInt(Builtin.stringObjectOr_Int64(
_isValueBit._value, _subVariantBit._value)) }
get { return _isValueBit | _subVariantBit }
}
@inlinable
@@ -861,7 +860,7 @@ extension _StringObject {
self.init(.strong(Builtin.reinterpretCast(_payloadBits)), bits)
#else
_sanityCheck(_payloadBits & ~_StringObject._payloadMask == 0)
var rawBits = _payloadBits & _StringObject._payloadMask
var rawBits = _payloadBits
if isValue {
var rawBitsBuiltin = Builtin.stringObjectOr_Int64(
rawBits._value, _StringObject._isValueBit._value)