mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
malloc introspection is a platform feature that is unavailable on OpenBSD. There is no workaround for the feature, so we have to assume that allocations succeed in allocating exactly the amount of memory requested, and nothing more. Here a new mallocSize shim is introduced so the feature check for malloc introspection is pushed to the shims, rather than using os checks directly from Swift. Not every use of malloc_size has been converted yet; ManagedBuffer.swift still remains. However, this module requires special care to fix, which will be done separately.
44 lines
1.5 KiB
Swift
44 lines
1.5 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// Additions to 'SwiftShims' that can be written in Swift.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import SwiftShims
|
|
|
|
#if _runtime(_ObjC)
|
|
@inlinable
|
|
internal func _makeSwiftNSFastEnumerationState()
|
|
-> _SwiftNSFastEnumerationState {
|
|
return _SwiftNSFastEnumerationState(
|
|
state: 0, itemsPtr: nil, mutationsPtr: nil,
|
|
extra: (0, 0, 0, 0, 0))
|
|
}
|
|
|
|
/// A dummy value to be used as the target for `mutationsPtr` in fast
|
|
/// enumeration implementations.
|
|
@usableFromInline
|
|
internal var _fastEnumerationStorageMutationsTarget: CUnsignedLong = 0
|
|
|
|
/// A dummy pointer to be used as `mutationsPtr` in fast enumeration
|
|
/// implementations.
|
|
@usableFromInline
|
|
internal let _fastEnumerationStorageMutationsPtr =
|
|
UnsafeMutablePointer<CUnsignedLong>(Builtin.addressof(&_fastEnumerationStorageMutationsTarget))
|
|
#endif
|
|
|
|
@usableFromInline @_alwaysEmitIntoClient
|
|
internal func _mallocSize(ofAllocation ptr: UnsafeRawPointer) -> Int? {
|
|
return _swift_stdlib_has_malloc_size() ? _swift_stdlib_malloc_size(ptr) : nil
|
|
}
|