mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Some notes: 1. Even though I refactored out AccessSet/Access from Exclusivity.cpp -> ExclusivityPrivate.h, I left the actual implementations of insert/remove in Exclusivity.cpp to allow for the most aggressive optimization for use in Exclusivity.cpp without exposing a bunch of internal details to other parts of the runtime. Smaller routines like getHead() and manipulating the linked list directly I left as methods that can be used by other parts of the runtime. I am going to use these methods to enable backwards deployment of exclusivity support for concurrency. 2. I moved function replacements out of the Exclusivity header/cpp files since it has nothing to do with Exclusivity beyond taking advantage of the TLS context that we are already using.
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
//===--- SwiftTLSContext.h ------------------------------------------------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2021 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_RUNTIME_SWIFTTLSCONTEXT_H
|
|
#define SWIFT_RUNTIME_SWIFTTLSCONTEXT_H
|
|
|
|
#include "ExclusivityPrivate.h"
|
|
|
|
namespace swift {
|
|
namespace runtime {
|
|
|
|
class SwiftTLSContext {
|
|
public:
|
|
/// The set of tracked accesses.
|
|
AccessSet accessSet;
|
|
|
|
// The "implicit" boolean parameter which is passed to a dynamically
|
|
// replaceable function.
|
|
// If true, the original function should be executed instead of the
|
|
// replacement function.
|
|
bool CallOriginalOfReplacedFunction = false;
|
|
|
|
static SwiftTLSContext &get();
|
|
};
|
|
|
|
} // namespace runtime
|
|
} // namespace swift
|
|
|
|
#endif
|