Skip to content

Commit 659c1bc

Browse files
committed
Revert "[IRGen] Add parameter flags to function type metadata"
This reverts commit b33a6c7.
1 parent 3718539 commit 659c1bc

File tree

9 files changed

+151
-325
lines changed

9 files changed

+151
-325
lines changed

include/swift/AST/Types.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1451,26 +1451,11 @@ class ParameterTypeFlags {
14511451
: value - ParameterTypeFlags::Shared);
14521452
}
14531453

1454-
ParameterTypeFlags withAutoClosure(bool isAutoClosure) const {
1455-
return ParameterTypeFlags(isAutoClosure
1456-
? value | ParameterTypeFlags::AutoClosure
1457-
: value - ParameterTypeFlags::AutoClosure);
1458-
}
1459-
14601454
bool operator ==(const ParameterTypeFlags &other) const {
14611455
return value.toRaw() == other.value.toRaw();
14621456
}
14631457

14641458
uint8_t toRaw() const { return value.toRaw(); }
1465-
1466-
static ParameterTypeFlags fromRaw(uint8_t value) {
1467-
return ParameterTypeFlags()
1468-
.withVariadic(value & Variadic)
1469-
.withAutoClosure(value & AutoClosure)
1470-
.withEscaping(value & Escaping)
1471-
.withInOut(value & InOut)
1472-
.withShared(value & Shared);
1473-
}
14741459
};
14751460

14761461
/// ParenType - A paren type is a type that's been written in parentheses.

include/swift/Remote/MetadataReader.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ template <typename BuiltType> class FunctionParam {
5353
void setVariadic() { Flags = Flags.withVariadic(true); }
5454
void setShared() { Flags = Flags.withShared(true); }
5555
void setInOut() { Flags = Flags.withInOut(true); }
56-
void setFlags(ParameterTypeFlags flags) { Flags = flags; };
5756

5857
FunctionParam withLabel(StringRef label) const {
5958
return FunctionParam(label, Type, Flags);
@@ -805,17 +804,22 @@ class MetadataReader {
805804
sizeof(TargetFunctionTypeMetadata<Runtime>);
806805
for (StoredPointer i = 0; i < Function->getNumArguments(); ++i,
807806
ArgumentAddress += sizeof(StoredPointer)) {
808-
StoredPointer ParameterAddress;
807+
StoredPointer FlaggedArgumentAddress;
809808
if (!Reader->readInteger(RemoteAddress(ArgumentAddress),
810-
&ParameterAddress))
809+
&FlaggedArgumentAddress))
811810
return BuiltType();
812811

813812
FunctionParam<BuiltType> Param;
814-
if (auto ParamTypeRef = readTypeFromMetadata(ParameterAddress)) {
815-
auto ParameterFlags = Function->getParameterFlags(i);
816813

814+
// TODO: Use target-agnostic FlaggedPointer to mask this!
815+
const auto InOutMask = (StoredPointer) 1;
816+
// FIXME: Add import parameter related flags from metadata
817+
if ((FlaggedArgumentAddress & InOutMask) != 0)
818+
Param.setInOut();
819+
820+
FlaggedArgumentAddress &= ~InOutMask;
821+
if (auto ParamTypeRef = readTypeFromMetadata(FlaggedArgumentAddress)) {
817822
Param.setType(ParamTypeRef);
818-
Param.setFlags(ParameterTypeFlags::fromRaw(ParameterFlags));
819823
Parameters.push_back(std::move(Param));
820824
} else {
821825
return BuiltType();

include/swift/Runtime/Metadata.h

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1745,7 +1745,9 @@ using EnumMetadata = TargetEnumMetadata<InProcess>;
17451745
template <typename Runtime>
17461746
struct TargetFunctionTypeMetadata : public TargetMetadata<Runtime> {
17471747
using StoredSize = typename Runtime::StoredSize;
1748-
using Argument = const TargetMetadata<Runtime> *;
1748+
1749+
// TODO: Make this target agnostic
1750+
using Argument = FlaggedPointer<const TargetMetadata<Runtime> *, 0>;
17491751

17501752
TargetFunctionTypeFlags<StoredSize> Flags;
17511753

@@ -1759,15 +1761,7 @@ struct TargetFunctionTypeMetadata : public TargetMetadata<Runtime> {
17591761
TargetPointer<Runtime, const Argument> getArguments() const {
17601762
return reinterpret_cast<TargetPointer<Runtime, const Argument>>(this + 1);
17611763
}
1762-
1763-
uint32_t getParameterFlags(unsigned index) const {
1764-
auto numParams = getNumArguments();
1765-
assert(index < numParams);
1766-
auto *flags = reinterpret_cast<const uint32_t *>(this + 1 +
1767-
numParams * sizeof(Argument));
1768-
return flags[index];
1769-
}
1770-
1764+
17711765
StoredSize getNumArguments() const {
17721766
return Flags.getNumArguments();
17731767
}
@@ -2653,13 +2647,6 @@ swift_getFunctionTypeMetadata1(FunctionTypeFlags flags,
26532647
const void *arg0,
26542648
const Metadata *resultMetadata);
26552649

2656-
SWIFT_RUNTIME_EXPORT
2657-
const FunctionTypeMetadata *
2658-
swift_getFunctionTypeMetadata1WithFlags(FunctionTypeFlags flags,
2659-
const void *arg0,
2660-
const uint32_t *paramFlags,
2661-
const Metadata *resultMetadata);
2662-
26632650
SWIFT_RUNTIME_EXPORT
26642651
const FunctionTypeMetadata *
26652652
swift_getFunctionTypeMetadata2(FunctionTypeFlags flags,
@@ -2669,28 +2656,11 @@ swift_getFunctionTypeMetadata2(FunctionTypeFlags flags,
26692656

26702657
SWIFT_RUNTIME_EXPORT
26712658
const FunctionTypeMetadata *
2672-
swift_getFunctionTypeMetadata2WithFlags(FunctionTypeFlags flags,
2673-
const void *arg0,
2674-
const void *arg1,
2675-
const uint32_t *paramFlags,
2676-
const Metadata *resultMetadata);
2677-
2678-
SWIFT_RUNTIME_EXPORT
2679-
const FunctionTypeMetadata *swift_getFunctionTypeMetadata3(
2680-
FunctionTypeFlags flags,
2681-
const void *arg0,
2682-
const void *arg1,
2683-
const void *arg2,
2684-
const Metadata *resultMetadata);
2685-
2686-
SWIFT_RUNTIME_EXPORT
2687-
const FunctionTypeMetadata *swift_getFunctionTypeMetadata3WithFlags(
2688-
FunctionTypeFlags flags,
2689-
const void *arg0,
2690-
const void *arg1,
2691-
const void *arg2,
2692-
const uint32_t *paramFlags,
2693-
const Metadata *resultMetadata);
2659+
swift_getFunctionTypeMetadata3(FunctionTypeFlags flags,
2660+
const void *arg0,
2661+
const void *arg1,
2662+
const void *arg2,
2663+
const Metadata *resultMetadata);
26942664

26952665
/// \brief Fetch a uniqued metadata for a thin function type.
26962666
SWIFT_RUNTIME_EXPORT

include/swift/Runtime/RuntimeFunctions.def

Lines changed: 8 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -765,66 +765,22 @@ FUNCTION(GetFunctionMetadata, swift_getFunctionTypeMetadata, DefaultCC,
765765
ARGS(Int8PtrTy->getPointerTo(0)),
766766
ATTRS(NoUnwind, ReadNone))
767767

768-
// Metadata *swift_getFunctionTypeMetadata1(unsigned long flags,
769-
// const void *arg0,
770-
// const Metadata *resultMetadata);
768+
// Metadata *swift_getFunctionTypeMetadata1(unsigned long flags, const void *arg0, const Metadata *resultMetadata);
771769
FUNCTION(GetFunctionMetadata1, swift_getFunctionTypeMetadata1, DefaultCC,
772-
RETURNS(TypeMetadataPtrTy),
773-
ARGS(SizeTy, Int8PtrTy, TypeMetadataPtrTy),
774-
ATTRS(NoUnwind, ReadNone))
775-
776-
// Metadata *swift_getFunctionTypeMetadata1WithFlags(unsigned long flags,
777-
// const void *arg0,
778-
// const uint32_t *paramFlags,
779-
// const Metadata *resultMetadata);
780-
FUNCTION(GetFunctionMetadata1WithFlags, swift_getFunctionTypeMetadata1WithFlags,
781-
DefaultCC,
782770
RETURNS(TypeMetadataPtrTy),
783-
ARGS(SizeTy, Int8PtrTy, Int32Ty->getPointerTo(), TypeMetadataPtrTy),
771+
ARGS(SizeTy, Int8PtrTy, TypeMetadataPtrTy),
784772
ATTRS(NoUnwind, ReadNone))
785773

786-
// Metadata *swift_getFunctionTypeMetadata2(unsigned long flags,
787-
// const void *arg0,
788-
// const void *arg1,
789-
// const Metadata *resultMetadata);
790-
FUNCTION(GetFunctionMetadata2, swift_getFunctionTypeMetadata2,
791-
DefaultCC,
792-
RETURNS(TypeMetadataPtrTy),
793-
ARGS(SizeTy, Int8PtrTy, Int8PtrTy, TypeMetadataPtrTy),
794-
ATTRS(NoUnwind, ReadNone))
795-
796-
// Metadata *swift_getFunctionTypeMetadata2WithFlags(unsigned long flags,
797-
// const void *arg0,
798-
// const void *arg1,
799-
// const uint32_t *paramFlags,
800-
// const Metadata *resultMetadata);
801-
FUNCTION(GetFunctionMetadata2WithFlags, swift_getFunctionTypeMetadata2WithFlags,
802-
DefaultCC,
774+
// Metadata *swift_getFunctionTypeMetadata2(unsigned long flags, const void *arg0, const void *arg1, const Metadata *resultMetadata);
775+
FUNCTION(GetFunctionMetadata2, swift_getFunctionTypeMetadata2, DefaultCC,
803776
RETURNS(TypeMetadataPtrTy),
804-
ARGS(SizeTy, Int8PtrTy, Int8PtrTy, Int32Ty->getPointerTo(), TypeMetadataPtrTy),
777+
ARGS(SizeTy, Int8PtrTy, Int8PtrTy, TypeMetadataPtrTy),
805778
ATTRS(NoUnwind, ReadNone))
806779

807-
// Metadata *swift_getFunctionTypeMetadata3(unsigned long flags,
808-
// const void *arg0,
809-
// const void *arg1,
810-
// const void *arg2,
811-
// const Metadata *resultMetadata);
812-
FUNCTION(GetFunctionMetadata3, swift_getFunctionTypeMetadata3,
813-
DefaultCC,
814-
RETURNS(TypeMetadataPtrTy),
815-
ARGS(SizeTy, Int8PtrTy, Int8PtrTy, Int8PtrTy, TypeMetadataPtrTy),
816-
ATTRS(NoUnwind, ReadNone))
817-
818-
// Metadata *swift_getFunctionTypeMetadata3WithFlags(unsigned long flags,
819-
// const void *arg0,
820-
// const void *arg1,
821-
// const void *arg2,
822-
// const uint32_t *paramFlags,
823-
// const Metadata *resultMetadata);
824-
FUNCTION(GetFunctionMetadata3WithFlags, swift_getFunctionTypeMetadata3WithFlags,
825-
DefaultCC,
780+
// Metadata *swift_getFunctionTypeMetadata3(unsigned long flags, const void *arg0, const void *arg1, const void *arg2, const Metadata *resultMetadata);
781+
FUNCTION(GetFunctionMetadata3, swift_getFunctionTypeMetadata3, DefaultCC,
826782
RETURNS(TypeMetadataPtrTy),
827-
ARGS(SizeTy, Int8PtrTy, Int8PtrTy, Int8PtrTy, Int32Ty->getPointerTo(), TypeMetadataPtrTy),
783+
ARGS(SizeTy, Int8PtrTy, Int8PtrTy, Int8PtrTy, TypeMetadataPtrTy),
828784
ATTRS(NoUnwind, ReadNone))
829785

830786
// Metadata *swift_getForeignTypeMetadata(Metadata *nonUnique);

0 commit comments

Comments
 (0)