File tree Expand file tree Collapse file tree 3 files changed +13
-5
lines changed Expand file tree Collapse file tree 3 files changed +13
-5
lines changed Original file line number Diff line number Diff line change @@ -274,7 +274,7 @@ internal struct _ContiguousArrayBuffer<Element>: _ArrayBufferProtocol {
274
274
realMinimumCapacity. _builtinWordValue, Element . self)
275
275
276
276
let storageAddr = UnsafeMutableRawPointer ( Builtin . bridgeToRawPointer ( _storage) )
277
- if let allocSize = _mallocSize ( ofAllocation: storageAddr) {
277
+ if let allocSize = _mallocSizeIfHeap ( ofAllocation: storageAddr) {
278
278
let endAddr = storageAddr + allocSize
279
279
let realCapacity = endAddr. assumingMemoryBound ( to: Element . self) - firstElementAddress
280
280
_initStorageHeader (
Original file line number Diff line number Diff line change @@ -37,9 +37,17 @@ internal let _fastEnumerationStorageMutationsPtr =
37
37
UnsafeMutablePointer < CUnsignedLong > ( Builtin . addressof ( & _fastEnumerationStorageMutationsTarget) )
38
38
#endif
39
39
40
+
41
+
42
+
40
43
@usableFromInline @_alwaysEmitIntoClient @_effects ( readonly)
41
44
internal func _mallocSize( ofAllocation ptr: UnsafeRawPointer ) -> Int ? {
42
- return !Builtin. isOnStack ( ptr) && _swift_stdlib_has_malloc_size ( ) ?
43
- _swift_stdlib_malloc_size ( ptr) :
44
- nil
45
+ return _swift_stdlib_has_malloc_size ( ) ? _swift_stdlib_malloc_size ( ptr) : nil
45
46
}
47
+
48
+ @inline ( __always) @inlinable @_effects ( readonly)
49
+ internal func _mallocSizeIfHeap( ofAllocation ptr: UnsafeRawPointer ) -> Int ? {
50
+ if !Builtin. isOnStack ( ptr) { return nil }
51
+ return _mallocSize ( ofAllocation: ptr)
52
+ }
53
+
Original file line number Diff line number Diff line change @@ -206,7 +206,7 @@ fileprivate func _allocate<T: AnyObject>(
206
206
let totalTailBytes = total - numHeaderBytes
207
207
208
208
let object = tailAllocator ( totalTailBytes)
209
- if let allocSize = _mallocSize ( ofAllocation:
209
+ if let allocSize = _mallocSizeIfHeap ( ofAllocation:
210
210
UnsafeRawPointer ( Builtin . bridgeToRawPointer ( object) ) ) {
211
211
_internalInvariant ( allocSize % MemoryLayout< Int> . stride == 0 )
212
212
You can’t perform that action at this time.
0 commit comments