Skip to content

Commit 6d1866f

Browse files
committed
[StringGuts] Clean-up in preparation for merge.
Clean up a lot of the scattered utility functions, FIXMEs, etc in preparation for the merge to master.
1 parent 90e8947 commit 6d1866f

File tree

8 files changed

+50
-113
lines changed

8 files changed

+50
-113
lines changed

stdlib/public/SwiftShims/LibcShims.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,6 @@ SWIFT_RUNTIME_STDLIB_INTERNAL
204204
int _stdlib_thread_setspecific(__swift_thread_key_t key,
205205
const void * _Nullable value);
206206

207-
208-
// FIXME remove
209-
SWIFT_RUNTIME_STDLIB_INTERFACE
210-
void _swift_stdlib_print_hex(__swift_uintptr_t value, int newline);
211-
212-
213207
// TODO: Remove horrible workaround when importer does Float80 <-> long double.
214208
#if (defined __i386__ || defined __x86_64__) && !defined _MSC_VER
215209
static inline SWIFT_ALWAYS_INLINE

stdlib/public/core/Builtin.swift

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -460,14 +460,10 @@ func _getNonTagBits(_ x: Builtin.BridgeObject) -> UInt {
460460
>> _objectPointerLowSpareBitShift
461461
}
462462

463-
// TODO (StringGuts): remove
464-
public typealias _BuiltinBridgeObject = Builtin.BridgeObject
465-
public typealias _BuiltinNativeObject = Builtin.NativeObject
466-
467463
// Values -> BridgeObject
468464
@inline(__always)
469465
@_inlineable
470-
public func _bridgeObject(fromNative x: AnyObject) -> _BuiltinBridgeObject {
466+
public func _bridgeObject(fromNative x: AnyObject) -> Builtin.BridgeObject {
471467
_sanityCheck(!_isObjCTaggedPointer(x))
472468
let object = Builtin.castToBridgeObject(x, 0._builtinWordValue)
473469
_sanityCheck(_isNativePointer(object))
@@ -478,7 +474,7 @@ public func _bridgeObject(fromNative x: AnyObject) -> _BuiltinBridgeObject {
478474
@_inlineable
479475
public func _bridgeObject(
480476
fromNonTaggedObjC x: AnyObject
481-
) -> _BuiltinBridgeObject {
477+
) -> Builtin.BridgeObject {
482478
_sanityCheck(!_isObjCTaggedPointer(x))
483479
let object = _makeObjCBridgeObject(x)
484480
_sanityCheck(_isNonTaggedObjCPointer(object))
@@ -487,16 +483,16 @@ public func _bridgeObject(
487483

488484
@inline(__always)
489485
@_inlineable
490-
public func _bridgeObject(fromTagged x: UInt) -> _BuiltinBridgeObject {
486+
public func _bridgeObject(fromTagged x: UInt) -> Builtin.BridgeObject {
491487
_sanityCheck(x & _objCTaggedPointerBits != 0)
492-
let object: _BuiltinBridgeObject = Builtin.reinterpretCast(x)
488+
let object: Builtin.BridgeObject = Builtin.reinterpretCast(x)
493489
_sanityCheck(_isTaggedObject(object))
494490
return object
495491
}
496492

497493
@inline(__always)
498494
@_inlineable
499-
public func _bridgeObject(taggingPayload x: UInt) -> _BuiltinBridgeObject {
495+
public func _bridgeObject(taggingPayload x: UInt) -> Builtin.BridgeObject {
500496
let shifted = x &<< _objectPointerLowSpareBitShift
501497
_sanityCheck(x == (shifted &>> _objectPointerLowSpareBitShift),
502498
"out-of-range: limited bit range requires some zero top bits")
@@ -508,39 +504,39 @@ public func _bridgeObject(taggingPayload x: UInt) -> _BuiltinBridgeObject {
508504
// BridgeObject -> Values
509505
@inline(__always)
510506
@_inlineable
511-
public func _bridgeObject(toNative x: _BuiltinBridgeObject) -> AnyObject {
507+
public func _bridgeObject(toNative x: Builtin.BridgeObject) -> AnyObject {
512508
_sanityCheck(_isNativePointer(x))
513509
return Builtin.castReferenceFromBridgeObject(x)
514510
}
515511

516512
@inline(__always)
517513
@_inlineable
518514
public func _bridgeObject(
519-
toNonTaggedObjC x: _BuiltinBridgeObject
515+
toNonTaggedObjC x: Builtin.BridgeObject
520516
) -> AnyObject {
521517
_sanityCheck(_isNonTaggedObjCPointer(x))
522518
return Builtin.castReferenceFromBridgeObject(x)
523519
}
524520

525521
@inline(__always)
526522
@_inlineable
527-
public func _bridgeObject(toTagged x: _BuiltinBridgeObject) -> UInt {
523+
public func _bridgeObject(toTagged x: Builtin.BridgeObject) -> UInt {
528524
_sanityCheck(_isTaggedObject(x))
529525
let bits = _bitPattern(x)
530526
_sanityCheck(bits & _objCTaggedPointerBits != 0)
531527
return bits
532528
}
533529
@inline(__always)
534530
@_inlineable
535-
public func _bridgeObject(toTagPayload x: _BuiltinBridgeObject) -> UInt {
531+
public func _bridgeObject(toTagPayload x: Builtin.BridgeObject) -> UInt {
536532
return _getNonTagBits(x)
537533
}
538534

539535
@inline(__always)
540536
@_inlineable
541537
public func _bridgeObject(
542-
fromNativeObject x: _BuiltinNativeObject
543-
) -> _BuiltinBridgeObject {
538+
fromNativeObject x: Builtin.NativeObject
539+
) -> Builtin.BridgeObject {
544540
return _bridgeObject(fromNative: _nativeObject(toNative: x))
545541
}
546542

@@ -550,7 +546,7 @@ public func _bridgeObject(
550546

551547
@inline(__always)
552548
@_inlineable
553-
public func _nativeObject(fromNative x: AnyObject) -> _BuiltinNativeObject {
549+
public func _nativeObject(fromNative x: AnyObject) -> Builtin.NativeObject {
554550
_sanityCheck(!_isObjCTaggedPointer(x))
555551
let native = Builtin.unsafeCastToNativeObject(x)
556552
// _sanityCheck(native == Builtin.castToNativeObject(x))
@@ -559,14 +555,14 @@ public func _nativeObject(fromNative x: AnyObject) -> _BuiltinNativeObject {
559555
@inline(__always)
560556
@_inlineable
561557
public func _nativeObject(
562-
fromBridge x: _BuiltinBridgeObject
563-
) -> _BuiltinNativeObject {
558+
fromBridge x: Builtin.BridgeObject
559+
) -> Builtin.NativeObject {
564560
return _nativeObject(fromNative: _bridgeObject(toNative: x))
565561
}
566562

567563
@inline(__always)
568564
@_inlineable
569-
public func _nativeObject(toNative x: _BuiltinNativeObject) -> AnyObject {
565+
public func _nativeObject(toNative x: Builtin.NativeObject) -> AnyObject {
570566
return Builtin.castFromNativeObject(x)
571567
}
572568

@@ -575,7 +571,7 @@ extension ManagedBufferPointer {
575571
// FIXME: String Guts
576572
@inline(__always)
577573
@_inlineable
578-
public init(_nativeObject buffer: _BuiltinNativeObject) {
574+
public init(_nativeObject buffer: Builtin.NativeObject) {
579575
self._nativeBuffer = buffer
580576
}
581577
}

stdlib/public/core/CString.swift

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,9 @@ internal func _decodeCString<Encoding : _UnicodeEncoding>(
195195
-> (result: String, repairsMade: Bool)? {
196196

197197
let buffer = UnsafeBufferPointer<Encoding.CodeUnit>(
198-
start: cString,
199-
count: length)
198+
start: cString, count: length)
200199

201200
let (guts, hadError) = _StringGuts.fromCodeUnits(
202-
buffer,
203-
encoding: encoding,
204-
repairIllFormedSequences: isRepairing)
205-
return guts.map {
206-
(result: String($0), repairsMade: hadError)
207-
}
201+
buffer, encoding: encoding, repairIllFormedSequences: isRepairing)
202+
return guts.map { (result: String($0), repairsMade: hadError) }
208203
}

stdlib/public/core/StringBridge.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,10 +369,8 @@ extension String {
369369

370370
@_fixed_layout // FIXME(sil-serialize-all)
371371
public class _SwiftNativeNSString {
372-
@_inlineable // FIXME(sil-serialize-all)
373372
@_versioned // FIXME(sil-serialize-all)
374373
internal init() {}
375-
@_inlineable // FIXME(sil-serialize-all)
376374
deinit {}
377375
}
378376

stdlib/public/core/StringComparable.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ extension _UnmanagedString where CodeUnit == UInt8 {
7474
extension _StringGuts {
7575

7676
//
77-
// HACK HACK HACK: Work around for ARC :-(
77+
// FIXME(TODO: JIRA): HACK HACK HACK: Work around for ARC :-(
7878
//
7979
@inline(never)
8080
@effects(readonly)

stdlib/public/core/StringGuts.swift

Lines changed: 28 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ extension _StringGuts {
210210
#if _runtime(_ObjC)
211211
extension _StringGuts {
212212
//
213-
// HACK HACK HACK: Work around for ARC :-(
214-
// @inline(never) // Hide CF dependency
213+
// FIXME(TODO: JIRA): HACK HACK HACK: Work around for ARC :-(
214+
//
215215
@_versioned
216216
@effects(readonly)
217217
internal static func getCocoaLength(_unsafeBitPattern: UInt) -> Int {
@@ -568,69 +568,30 @@ extension _StringGuts {
568568
}
569569
}
570570

571-
// Internal hex dumping function. Useful because `print` is implemented in the
572-
// stdlib through a series of very high level String calls, resulting in
573-
// infinite recursion.
574-
@_versioned
575-
internal func internalDumpHexImpl(_ x: UInt, newline: Bool) {
576-
_swift_stdlib_print_hex(x, newline ? 1 : 0)
577-
}
578-
@_versioned
579-
internal func internalDumpHex(_ x: _BuiltinNativeObject, newline: Bool) {
580-
internalDumpHexImpl(Builtin.reinterpretCast(x), newline: newline)
581-
}
582-
@_versioned
583-
internal func internalDumpHex(_ x: UInt, newline: Bool = true) {
584-
internalDumpHexImpl(x, newline: newline)
585-
}
586-
@_versioned
587-
internal func internalDumpHex(_ x: UInt64, newline: Bool = true) {
588-
#if arch(i386) || arch(arm)
589-
internalDumpHexImpl(UInt(truncatingIfNeeded: x >> 32), newline: false)
590-
internalDumpHexImpl(UInt(truncatingIfNeeded: x), newline: newline)
591-
#else
592-
internalDumpHexImpl(UInt(x), newline: newline)
593-
#endif
594-
}
595-
@_versioned
596-
internal func internalDumpHex(_ x: AnyObject, newline: Bool = true) {
597-
internalDumpHexImpl(Builtin.reinterpretCast(x), newline: newline)
598-
}
599-
@_versioned
600-
internal func internalDumpHex(_ x: UnsafeRawPointer?, newline: Bool = true) {
601-
internalDumpHexImpl(Builtin.reinterpretCast(x), newline: newline)
602-
}
603-
@_versioned
604-
internal func internalDumpHex(_ x: Bool, newline: Bool = true) {
605-
internalDumpHexImpl(x ? 1 : 0, newline: newline)
606-
}
607-
608571
extension _StringGuts {
609572
// FIXME: Remove
610573
public func _dump() {
611-
print("_StringGuts(", terminator: "")
612-
internalDumpHex(rawBits.0, newline: false)
613-
print(" ", terminator: "")
614-
internalDumpHex(rawBits.1, newline: false)
615-
print(": ", terminator: "")
616-
_dumpContents()
617-
if isASCII {
618-
print(" <ascii>", terminator: "")
574+
func printHex(_ uint: UInt, newline: Bool = true) {
575+
print(String(uint, radix: 16), terminator: newline ? "\n" : "")
619576
}
620-
else {
621-
print(" <utf16>", terminator: "")
577+
func fromAny(_ x: AnyObject) -> UInt {
578+
return Builtin.reinterpretCast(x)
579+
}
580+
func fromPtr(_ x: UnsafeMutableRawPointer) -> UInt {
581+
return Builtin.reinterpretCast(x)
622582
}
623-
print(")")
624-
}
625583

626-
// FIXME: Remove
627-
internal func _dumpContents() {
584+
print("_StringGuts(", terminator: "")
585+
printHex(UInt(rawBits.0), newline: false)
586+
print(" ", terminator: "")
587+
printHex(UInt(rawBits.1), newline: false)
588+
print(": ", terminator: "")
628589
if _object.isNative {
629590
let storage = _object.nativeRawStorage
630591
print("native ", terminator: "")
631-
internalDumpHex(storage, newline: false)
592+
printHex(Builtin.reinterpretCast(storage), newline: false)
632593
print(" start: ", terminator: "")
633-
internalDumpHex(storage.rawStart, newline: false)
594+
printHex(Builtin.reinterpretCast(storage.rawStart), newline: false)
634595
print(" count: ", terminator: "")
635596
print(storage.count, terminator: "")
636597
print("/", terminator: "")
@@ -640,10 +601,10 @@ extension _StringGuts {
640601
#if _runtime(_ObjC)
641602
if _object.isCocoa {
642603
print("cocoa ", terminator: "")
643-
internalDumpHex(_object.asCocoaObject, newline: false)
604+
printHex(Builtin.reinterpretCast(_object.asCocoaObject), newline: false)
644605
print(" start: ", terminator: "")
645606
if _object.isContiguous {
646-
internalDumpHex(_cocoaRawStart, newline: false)
607+
printHex(Builtin.reinterpretCast(_cocoaRawStart), newline: false)
647608
} else {
648609
print("<opaque>", terminator: "")
649610
}
@@ -654,29 +615,36 @@ extension _StringGuts {
654615
#else
655616
if _object.isOpaque {
656617
print("opaque ", terminator: "")
657-
internalDumpHex(_object.asOpaqueObject, newline: false)
618+
printHex(Builtin.reinterpretCast(_object.asOpaqueObject), newline: false)
658619
print(" count: ", terminator: "")
659620
print(_opaqueCount, terminator: "")
660621
return
661622
}
662623
#endif
663624
if _object.isUnmanaged {
664625
print("unmanaged ", terminator: "")
665-
internalDumpHex(_unmanagedRawStart, newline: false)
626+
printHex(Builtin.reinterpretCast(_unmanagedRawStart), newline: false)
666627
print(" count: ", terminator: "")
667628
print(_unmanagedCount, terminator: "")
668629
return
669630
}
670631
#if _runtime(_ObjC)
671632
if _object.isSmall {
672633
print("small cocoa ", terminator: "")
673-
internalDumpHex(_taggedCocoaObject, newline: false)
634+
printHex(Builtin.reinterpretCast(_taggedCocoaObject), newline: false)
674635
print(" count: ", terminator: "")
675636
print(_taggedCocoaCount, terminator: "")
676637
return
677638
}
678639
#endif
679640
print("error", terminator: "")
641+
if isASCII {
642+
print(" <ascii>", terminator: "")
643+
}
644+
else {
645+
print(" <utf16>", terminator: "")
646+
}
647+
print(")")
680648
}
681649
}
682650

stdlib/public/core/StringObject.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ struct _StringObject {
4848
// provides us the runtime functionality we want.
4949
@_versioned
5050
internal
51-
var _object: _BuiltinBridgeObject
51+
var _object: Builtin.BridgeObject
5252
#endif
5353

5454
#if arch(i386) || arch(arm)
@@ -66,7 +66,7 @@ struct _StringObject {
6666
@_inlineable
6767
@inline(__always)
6868
internal
69-
init(_ object: _BuiltinBridgeObject) {
69+
init(_ object: Builtin.BridgeObject) {
7070
self._object = object
7171
_invariantCheck()
7272
}

stdlib/public/stubs/LibcShims.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -329,17 +329,3 @@ swift::_stdlib_cxx11_mt19937_uniform(__swift_uint32_t upper_bound) {
329329
std::uniform_int_distribution<__swift_uint32_t> RandomUniform(0, upper_bound);
330330
return RandomUniform(getGlobalMT19937());
331331
}
332-
333-
// FIXME remove
334-
SWIFT_RUNTIME_STDLIB_INTERFACE
335-
void swift::_swift_stdlib_print_hex(__swift_uintptr_t value, int newline) {
336-
if (sizeof(value) == 4) {
337-
printf("%08tX", value);
338-
} else {
339-
printf("%016tX", value);
340-
}
341-
if (newline) {
342-
printf("\n");
343-
}
344-
}
345-

0 commit comments

Comments
 (0)