Skip to content

Commit a19a70e

Browse files
committed
Switch all request infrastructure to SWIFT_REQUEST
Formally define the Zones in the TypeID header. This is not its final resting place.
1 parent 5ec344b commit a19a70e

19 files changed

+77
-67
lines changed

include/swift/AST/ASTTypeIDs.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,8 @@ class Type;
3636
struct TypePair;
3737
enum class AncestryFlags : uint8_t;
3838

39-
#define SWIFT_AST_TYPEID_ZONE 1
40-
4139
// Define the AST type zone (zone 1)
42-
#define SWIFT_TYPEID_ZONE SWIFT_AST_TYPEID_ZONE
40+
#define SWIFT_TYPEID_ZONE AST
4341
#define SWIFT_TYPEID_HEADER "swift/AST/ASTTypeIDZone.def"
4442
#include "swift/Basic/DefineTypeIDZone.h"
4543

include/swift/AST/AccessRequests.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,24 +97,21 @@ class DefaultAndMaxAccessLevelRequest :
9797
void cacheResult(DefaultAndMax value) const;
9898
};
9999

100-
/// The zone number for access-control requests.
101-
#define SWIFT_ACCESS_REQUESTS_TYPEID_ZONE 11
102-
103-
#define SWIFT_TYPEID_ZONE SWIFT_ACCESS_REQUESTS_TYPEID_ZONE
100+
#define SWIFT_TYPEID_ZONE AccessControl
104101
#define SWIFT_TYPEID_HEADER "swift/AST/AccessTypeIDZone.def"
105102
#include "swift/Basic/DefineTypeIDZone.h"
106103
#undef SWIFT_TYPEID_ZONE
107104
#undef SWIFT_TYPEID_HEADER
108105

109106
// Set up reporting of evaluated requests.
110-
#define SWIFT_TYPEID(RequestType) \
107+
#define SWIFT_REQUEST(Zone, RequestType) \
111108
template<> \
112109
inline void reportEvaluatedRequest(UnifiedStatsReporter &stats, \
113110
const RequestType &request) { \
114111
++stats.getFrontendCounters().RequestType; \
115112
}
116113
#include "swift/AST/AccessTypeIDZone.def"
117-
#undef SWIFT_TYPEID
114+
#undef SWIFT_REQUEST
118115

119116
} // end namespace swift
120117

include/swift/AST/Evaluator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ class Evaluator {
249249
///
250250
/// These functions will be called to evaluate any requests within that
251251
/// zone.
252-
void registerRequestFunctions(uint8_t zoneID,
252+
void registerRequestFunctions(Zone zone,
253253
ArrayRef<AbstractRequestFunction *> functions);
254254

255255
/// Evaluate the given request and produce its result,

include/swift/AST/NameLookupRequests.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,7 @@ class GetDestructorRequest :
254254
void cacheResult(DestructorDecl *value) const;
255255
};
256256

257-
/// The zone number for name-lookup requests.
258-
#define SWIFT_NAME_LOOKUP_REQUESTS_TYPEID_ZONE 9
259-
260-
#define SWIFT_TYPEID_ZONE SWIFT_NAME_LOOKUP_REQUESTS_TYPEID_ZONE
257+
#define SWIFT_TYPEID_ZONE NameLookup
261258
#define SWIFT_TYPEID_HEADER "swift/AST/NameLookupTypeIDZone.def"
262259
#include "swift/Basic/DefineTypeIDZone.h"
263260
#undef SWIFT_TYPEID_ZONE
@@ -268,14 +265,14 @@ template<typename Request>
268265
void reportEvaluatedRequest(UnifiedStatsReporter &stats,
269266
const Request &request);
270267

271-
#define SWIFT_TYPEID(RequestType) \
268+
#define SWIFT_REQUEST(Zone, RequestType) \
272269
template<> \
273270
inline void reportEvaluatedRequest(UnifiedStatsReporter &stats, \
274271
const RequestType &request) { \
275272
++stats.getFrontendCounters().RequestType; \
276273
}
277274
#include "swift/AST/NameLookupTypeIDZone.def"
278-
#undef SWIFT_TYPEID
275+
#undef SWIFT_REQUEST
279276

280277
} // end namespace swift
281278

include/swift/AST/TypeCheckRequests.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,24 +1150,21 @@ inline bool AnyValue::Holder<Type>::equals(const HolderBase &other) const {
11501150

11511151
void simple_display(llvm::raw_ostream &out, Type value);
11521152

1153-
/// The zone number for the type checker.
1154-
#define SWIFT_TYPE_CHECKER_REQUESTS_TYPEID_ZONE 10
1155-
1156-
#define SWIFT_TYPEID_ZONE SWIFT_TYPE_CHECKER_REQUESTS_TYPEID_ZONE
1153+
#define SWIFT_TYPEID_ZONE TypeChecker
11571154
#define SWIFT_TYPEID_HEADER "swift/AST/TypeCheckerTypeIDZone.def"
11581155
#include "swift/Basic/DefineTypeIDZone.h"
11591156
#undef SWIFT_TYPEID_ZONE
11601157
#undef SWIFT_TYPEID_HEADER
11611158

11621159
// Set up reporting of evaluated requests.
1163-
#define SWIFT_TYPEID(RequestType) \
1160+
#define SWIFT_REQUEST(Zone, RequestType) \
11641161
template<> \
11651162
inline void reportEvaluatedRequest(UnifiedStatsReporter &stats, \
11661163
const RequestType &request) { \
11671164
++stats.getFrontendCounters().RequestType; \
11681165
}
11691166
#include "swift/AST/TypeCheckerTypeIDZone.def"
1170-
#undef SWIFT_TYPEID
1167+
#undef SWIFT_REQUEST
11711168

11721169
} // end namespace swift
11731170

include/swift/Basic/DefineTypeIDZone.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@
3333

3434
// Define a TypeID where the type name and internal name are the same.
3535
#define SWIFT_TYPEID(Type) SWIFT_TYPEID_NAMED(Type, Type)
36+
#define SWIFT_REQUEST(Zone, Type) SWIFT_TYPEID_NAMED(Type, Type)
3637

3738
// First pass: put all of the names into an enum so we get values for them.
38-
template<> struct TypeIDZoneTypes<SWIFT_TYPEID_ZONE> {
39+
template<> struct TypeIDZoneTypes<Zone::SWIFT_TYPEID_ZONE> {
3940
enum Types : uint8_t {
4041
#define SWIFT_TYPEID_NAMED(Type, Name) Name,
4142
#define SWIFT_TYPEID_TEMPLATE1_NAMED(Template, Name, Param1, Arg1) Name,
@@ -48,9 +49,10 @@ template<> struct TypeIDZoneTypes<SWIFT_TYPEID_ZONE> {
4849
// Second pass: create specializations of TypeID for these types.
4950
#define SWIFT_TYPEID_NAMED(Type, Name) \
5051
template<> struct TypeID<Type> { \
51-
static const uint8_t zoneID = SWIFT_TYPEID_ZONE; \
52+
static const uint8_t zoneID = \
53+
static_cast<uint8_t>(Zone::SWIFT_TYPEID_ZONE); \
5254
static const uint8_t localID = \
53-
TypeIDZoneTypes<SWIFT_TYPEID_ZONE>::Name; \
55+
TypeIDZoneTypes<Zone::SWIFT_TYPEID_ZONE>::Name; \
5456
\
5557
static const uint64_t value = formTypeID(zoneID, localID); \
5658
\
@@ -61,8 +63,8 @@ template<> struct TypeID<Type> { \
6163
template<Param1> struct TypeID<Template<Arg1>> { \
6264
private: \
6365
static const uint64_t templateID = \
64-
formTypeID(SWIFT_TYPEID_ZONE, \
65-
TypeIDZoneTypes<SWIFT_TYPEID_ZONE>::Name); \
66+
formTypeID(static_cast<uint8_t>(Zone::SWIFT_TYPEID_ZONE), \
67+
TypeIDZoneTypes<Zone::SWIFT_TYPEID_ZONE>::Name); \
6668
\
6769
public: \
6870
static const uint64_t value = \
@@ -76,6 +78,9 @@ public: \
7678
template<Param1> const uint64_t TypeID<Template<Arg1>>::value;
7779

7880
#include SWIFT_TYPEID_HEADER
81+
82+
#undef SWIFT_REQUEST
83+
7984
#undef SWIFT_TYPEID_NAMED
8085
#undef SWIFT_TYPEID_TEMPLATE1_NAMED
8186

include/swift/Basic/ImplementTypeIDZone.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#endif
3434

3535
// Define a TypeID where the type name and internal name are the same.
36+
#define SWIFT_REQUEST(Zone, Type) SWIFT_TYPEID_NAMED(Type, Type)
3637
#define SWIFT_TYPEID(Type) SWIFT_TYPEID_NAMED(Type, Type)
3738

3839
// Out-of-line definitions.
@@ -43,6 +44,8 @@
4344

4445
#include SWIFT_TYPEID_HEADER
4546

47+
#undef SWIFT_REQUEST
48+
4649
#undef SWIFT_TYPEID_NAMED
4750
#undef SWIFT_TYPEID_TEMPLATE1_NAMED
4851

include/swift/Basic/TypeID.h

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@
2727

2828
namespace swift {
2929

30+
enum class Zone : uint8_t {
31+
C = 0,
32+
AST = 1,
33+
AccessControl = 11,
34+
IDETypes = 136,
35+
IDE = 137,
36+
IDETypeChecking = 97,
37+
NameLookup = 9,
38+
TypeChecker = 10,
39+
// N.B. This is not a formal zone and exists solely to support the unit tests.
40+
ArithmeticEvaluator = 255,
41+
};
42+
43+
static_assert(std::is_same<std::underlying_type<Zone>::type, uint8_t>::value,
44+
"underlying type is no longer uint8_t!");
45+
3046
/// Form a unique 64-bit integer value describing the type `T`.
3147
///
3248
/// This template needs to be specialized for every type that can
@@ -37,15 +53,15 @@ struct TypeID;
3753

3854
/// Template whose specializations provide the set of type IDs within a
3955
/// given zone.
40-
template<uint8_t Zone> struct TypeIDZoneTypes;
56+
template<Zone Zone> struct TypeIDZoneTypes;
4157

4258
/// Form a type ID given a zone and type value.
4359
constexpr uint64_t formTypeID(uint8_t zone, uint8_t type) {
4460
return (uint64_t(zone) << 8) | uint64_t(type);
4561
}
4662

4763
// Define the C type zone (zone 0).
48-
#define SWIFT_TYPEID_ZONE 0
64+
#define SWIFT_TYPEID_ZONE C
4965
#define SWIFT_TYPEID_HEADER "swift/Basic/CTypeIDZone.def"
5066
#include "swift/Basic/DefineTypeIDZone.h"
5167

include/swift/IDE/IDERequests.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,22 +282,21 @@ class ResolveProtocolNameRequest:
282282
};
283283

284284
/// The zone number for the IDE.
285-
#define SWIFT_IDE_REQUESTS_TYPEID_ZONE 137
286-
#define SWIFT_TYPEID_ZONE SWIFT_IDE_REQUESTS_TYPEID_ZONE
285+
#define SWIFT_TYPEID_ZONE IDE
287286
#define SWIFT_TYPEID_HEADER "swift/IDE/IDERequestIDZone.def"
288287
#include "swift/Basic/DefineTypeIDZone.h"
289288
#undef SWIFT_TYPEID_ZONE
290289
#undef SWIFT_TYPEID_HEADER
291290

292291
// Set up reporting of evaluated requests.
293-
#define SWIFT_TYPEID(RequestType) \
292+
#define SWIFT_REQUEST(Zone, RequestType) \
294293
template<> \
295294
inline void reportEvaluatedRequest(UnifiedStatsReporter &stats, \
296295
const RequestType &request) { \
297296
++stats.getFrontendCounters().RequestType; \
298297
}
299298
#include "swift/IDE/IDERequestIDZone.def"
300-
#undef SWIFT_TYPEID
299+
#undef SWIFT_REQUEST
301300

302301
} // end namespace swift
303302

include/swift/IDE/IDETypeIDs.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
#include "swift/Basic/TypeID.h"
2121
namespace swift {
2222

23-
#define SWIFT_IDE_TYPEID_ZONE 136
24-
#define SWIFT_TYPEID_ZONE SWIFT_IDE_TYPEID_ZONE
23+
#define SWIFT_TYPEID_ZONE IDETypes
2524
#define SWIFT_TYPEID_HEADER "swift/IDE/IDETypeIDZone.def"
2625
#include "swift/Basic/DefineTypeIDZone.h"
2726

include/swift/Sema/IDETypeCheckingRequests.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,22 +258,21 @@ class HasDynamicMemberLookupAttributeRequest:
258258
};
259259

260260
/// The zone number for the IDE.
261-
#define SWIFT_IDE_TYPE_CHECK_REQUESTS_TYPEID_ZONE 97
262-
#define SWIFT_TYPEID_ZONE SWIFT_IDE_TYPE_CHECK_REQUESTS_TYPEID_ZONE
261+
#define SWIFT_TYPEID_ZONE IDETypeChecking
263262
#define SWIFT_TYPEID_HEADER "swift/Sema/IDETypeCheckingRequestIDZone.def"
264263
#include "swift/Basic/DefineTypeIDZone.h"
265264
#undef SWIFT_TYPEID_ZONE
266265
#undef SWIFT_TYPEID_HEADER
267266

268267
// Set up reporting of evaluated requests.
269-
#define SWIFT_TYPEID(RequestType) \
268+
#define SWIFT_REQUEST(Zone, RequestType) \
270269
template<> \
271270
inline void reportEvaluatedRequest(UnifiedStatsReporter &stats, \
272271
const RequestType &request) { \
273272
++stats.getFrontendCounters().RequestType; \
274273
}
275274
#include "swift/Sema/IDETypeCheckingRequestIDZone.def"
276-
#undef SWIFT_TYPEID
275+
#undef SWIFT_REQUEST
277276

278277
} // end namespace swift
279278

lib/AST/AccessRequests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ using namespace swift;
2525

2626
namespace swift {
2727
// Implement the access-control type zone.
28-
#define SWIFT_TYPEID_ZONE SWIFT_ACCESSS_REQUESTS_TYPEID_ZONE
28+
#define SWIFT_TYPEID_ZONE AccessControl
2929
#define SWIFT_TYPEID_HEADER "swift/AST/AccessTypeIDZone.def"
3030
#include "swift/Basic/ImplementTypeIDZone.h"
3131
#undef SWIFT_TYPEID_ZONE
@@ -321,13 +321,13 @@ DefaultAndMaxAccessLevelRequest::cacheResult(
321321

322322
// Define request evaluation functions for each of the access requests.
323323
static AbstractRequestFunction *accessRequestFunctions[] = {
324-
#define SWIFT_TYPEID(Name) \
324+
#define SWIFT_REQUEST(Zone, Name) \
325325
reinterpret_cast<AbstractRequestFunction *>(&Name::evaluateRequest),
326326
#include "swift/AST/AccessTypeIDZone.def"
327-
#undef SWIFT_TYPEID
327+
#undef SWIFT_REQUEST
328328
};
329329

330330
void swift::registerAccessRequestFunctions(Evaluator &evaluator) {
331-
evaluator.registerRequestFunctions(SWIFT_ACCESS_REQUESTS_TYPEID_ZONE,
331+
evaluator.registerRequestFunctions(Zone::AccessControl,
332332
accessRequestFunctions);
333333
}

lib/AST/Evaluator.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ Evaluator::getAbstractRequestFunction(uint8_t zoneID, uint8_t requestID) const {
5050
}
5151

5252
void Evaluator::registerRequestFunctions(
53-
uint8_t zoneID,
53+
Zone zone,
5454
ArrayRef<AbstractRequestFunction *> functions) {
55+
uint8_t zoneID = static_cast<uint8_t>(zone);
5556
#ifndef NDEBUG
5657
for (const auto &zone : requestFunctionsByZone) {
5758
assert(zone.first != zoneID);

lib/AST/NameLookupRequests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ using namespace swift;
2121

2222
namespace swift {
2323
// Implement the name lookup type zone.
24-
#define SWIFT_TYPEID_ZONE SWIFT_NAME_LOOKUP_REQUESTS_TYPEID_ZONE
24+
#define SWIFT_TYPEID_ZONE NameLookup
2525
#define SWIFT_TYPEID_HEADER "swift/AST/NameLookupTypeIDZone.def"
2626
#include "swift/Basic/ImplementTypeIDZone.h"
2727
#undef SWIFT_TYPEID_ZONE
@@ -113,13 +113,13 @@ void GetDestructorRequest::cacheResult(DestructorDecl *value) const {
113113

114114
// Define request evaluation functions for each of the name lookup requests.
115115
static AbstractRequestFunction *nameLookupRequestFunctions[] = {
116-
#define SWIFT_TYPEID(Name) \
116+
#define SWIFT_REQUEST(Zone, Name) \
117117
reinterpret_cast<AbstractRequestFunction *>(&Name::evaluateRequest),
118118
#include "swift/AST/NameLookupTypeIDZone.def"
119-
#undef SWIFT_TYPEID
119+
#undef SWIFT_REQUEST
120120
};
121121

122122
void swift::registerNameLookupRequestFunctions(Evaluator &evaluator) {
123-
evaluator.registerRequestFunctions(SWIFT_NAME_LOOKUP_REQUESTS_TYPEID_ZONE,
123+
evaluator.registerRequestFunctions(Zone::NameLookup,
124124
nameLookupRequestFunctions);
125125
}

lib/AST/TypeCheckRequests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ using namespace swift;
2323

2424
namespace swift {
2525
// Implement the type checker type zone (zone 10).
26-
#define SWIFT_TYPEID_ZONE SWIFT_TYPE_CHECKER_REQUESTS_TYPEID_ZONE
26+
#define SWIFT_TYPEID_ZONE TypeChecker
2727
#define SWIFT_TYPEID_HEADER "swift/AST/TypeCheckerTypeIDZone.def"
2828
#include "swift/Basic/ImplementTypeIDZone.h"
2929
#undef SWIFT_TYPEID_ZONE

lib/IDE/IDERequests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ using namespace swift::ide;
2929

3030
namespace swift {
3131
// Implement the IDE type zone.
32-
#define SWIFT_TYPEID_ZONE SWIFT_IDE_REQUESTS_TYPEID_ZONE
32+
#define SWIFT_TYPEID_ZONE IDE
3333
#define SWIFT_TYPEID_HEADER "swift/IDE/IDERequestIDZone.def"
3434
#include "swift/Basic/ImplementTypeIDZone.h"
3535
#undef SWIFT_TYPEID_ZONE
@@ -38,14 +38,14 @@ namespace swift {
3838

3939
// Define request evaluation functions for each of the IDE requests.
4040
static AbstractRequestFunction *ideRequestFunctions[] = {
41-
#define SWIFT_TYPEID(Name) \
41+
#define SWIFT_REQUEST(Zone, Name) \
4242
reinterpret_cast<AbstractRequestFunction *>(&Name::evaluateRequest),
4343
#include "swift/IDE/IDERequestIDZone.def"
44-
#undef SWIFT_TYPEID
44+
#undef SWIFT_REQUEST
4545
};
4646

4747
void swift::registerIDERequestFunctions(Evaluator &evaluator) {
48-
evaluator.registerRequestFunctions(SWIFT_IDE_REQUESTS_TYPEID_ZONE,
48+
evaluator.registerRequestFunctions(Zone::IDE,
4949
ideRequestFunctions);
5050
registerIDETypeCheckRequestFunctions(evaluator);
5151
}

lib/Sema/IDETypeCheckingRequests.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ using namespace swift;
2525

2626
namespace swift {
2727
// Implement the IDE type zone.
28-
#define SWIFT_TYPEID_ZONE SWIFT_IDE_TYPE_CHECK_REQUESTS_TYPEID_ZONE
28+
#define SWIFT_TYPEID_ZONE IDETypeChecking
2929
#define SWIFT_TYPEID_HEADER "swift/Sema/IDETypeCheckingRequestIDZone.def"
3030
#include "swift/Basic/ImplementTypeIDZone.h"
3131
#undef SWIFT_TYPEID_ZONE
@@ -34,14 +34,14 @@ namespace swift {
3434

3535
// Define request evaluation functions for each of the IDE type check requests.
3636
static AbstractRequestFunction *ideTypeCheckRequestFunctions[] = {
37-
#define SWIFT_TYPEID(Name) \
37+
#define SWIFT_REQUEST(Zone, Name) \
3838
reinterpret_cast<AbstractRequestFunction *>(&Name::evaluateRequest),
3939
#include "swift/Sema/IDETypeCheckingRequestIDZone.def"
40-
#undef SWIFT_TYPEID
40+
#undef SWIFT_REQUEST
4141
};
4242

4343
void swift::registerIDETypeCheckRequestFunctions(Evaluator &evaluator) {
44-
evaluator.registerRequestFunctions(SWIFT_IDE_TYPE_CHECK_REQUESTS_TYPEID_ZONE,
44+
evaluator.registerRequestFunctions(Zone::IDETypeChecking,
4545
ideTypeCheckRequestFunctions);
4646
}
4747

0 commit comments

Comments
 (0)