Skip to content

Commit 1445314

Browse files
committed
Reflection: Remove StartAddress from ReflectionInfo.
We now get the local/remote mapping from RemoteRef when we need it.
1 parent 633471c commit 1445314

File tree

4 files changed

+6
-31
lines changed

4 files changed

+6
-31
lines changed

include/swift/Reflection/ReflectionContext.h

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -237,18 +237,13 @@ class ReflectionContext
237237
ReflStrMdSec.first == nullptr)
238238
return false;
239239

240-
auto LocalStartAddress = reinterpret_cast<uint64_t>(SectBuf.get());
241-
auto RemoteStartAddress = static_cast<uint64_t>(RangeStart);
242-
243240
ReflectionInfo info = {
244241
{FieldMdSec.first, FieldMdSec.second},
245242
{AssocTySec.first, AssocTySec.second},
246243
{BuiltinTySec.first, BuiltinTySec.second},
247244
{CaptureSec.first, CaptureSec.second},
248245
{TypeRefMdSec.first, TypeRefMdSec.second},
249-
{ReflStrMdSec.first, ReflStrMdSec.second},
250-
LocalStartAddress,
251-
RemoteStartAddress};
246+
{ReflStrMdSec.first, ReflStrMdSec.second}};
252247

253248
this->addReflectionInfo(info);
254249

@@ -346,19 +341,13 @@ class ReflectionContext
346341
ReflStrMdSec.first == nullptr)
347342
return false;
348343

349-
auto LocalStartAddress = reinterpret_cast<uintptr_t>(DOSHdrBuf.get());
350-
auto RemoteStartAddress =
351-
static_cast<uintptr_t>(ImageStart.getAddressData());
352-
353344
ReflectionInfo Info = {
354345
{FieldMdSec.first, FieldMdSec.second},
355346
{AssocTySec.first, AssocTySec.second},
356347
{BuiltinTySec.first, BuiltinTySec.second},
357348
{CaptureSec.first, CaptureSec.second},
358349
{TypeRefMdSec.first, TypeRefMdSec.second},
359-
{ReflStrMdSec.first, ReflStrMdSec.second},
360-
LocalStartAddress,
361-
RemoteStartAddress};
350+
{ReflStrMdSec.first, ReflStrMdSec.second}};
362351
this->addReflectionInfo(Info);
363352
return true;
364353
}
@@ -466,19 +455,13 @@ class ReflectionContext
466455
ReflStrMdSec.first == nullptr)
467456
return false;
468457

469-
auto LocalStartAddress = reinterpret_cast<uint64_t>(Buf.get());
470-
auto RemoteStartAddress =
471-
static_cast<uint64_t>(ImageStart.getAddressData());
472-
473458
ReflectionInfo info = {
474459
{FieldMdSec.first, FieldMdSec.second},
475460
{AssocTySec.first, AssocTySec.second},
476461
{BuiltinTySec.first, BuiltinTySec.second},
477462
{CaptureSec.first, CaptureSec.second},
478463
{TypeRefMdSec.first, TypeRefMdSec.second},
479-
{ReflStrMdSec.first, ReflStrMdSec.second},
480-
LocalStartAddress,
481-
RemoteStartAddress};
464+
{ReflStrMdSec.first, ReflStrMdSec.second}};
482465

483466
this->addReflectionInfo(info);
484467

include/swift/Reflection/TypeRefBuilder.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,6 @@ struct ReflectionInfo {
203203
CaptureSection Capture;
204204
GenericSection TypeReference;
205205
GenericSection ReflectionString;
206-
207-
uint64_t LocalStartAddress;
208-
uint64_t RemoteStartAddress;
209206
};
210207

211208
struct ClosureContextInfo {

stdlib/public/Reflection/TypeRefBuilder.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,15 +268,13 @@ TypeRefBuilder::getBuiltinTypeInfo(const TypeRef *TR) {
268268
return nullptr;
269269
}
270270

271-
// TODO: This can probably be eliminated.
272271
RemoteRef<CaptureDescriptor>
273272
TypeRefBuilder::getCaptureDescriptor(uint64_t RemoteAddress) {
274273
for (auto Info : ReflectionInfos) {
275274
for (auto CD : Info.Capture) {
276-
auto OtherAddr = (reinterpret_cast<uint64_t>(CD.getLocalBuffer()) -
277-
Info.LocalStartAddress + Info.RemoteStartAddress);
278-
if (OtherAddr == RemoteAddress)
275+
if (RemoteAddress == CD.getAddressData()) {
279276
return CD;
277+
}
280278
}
281279
}
282280

stdlib/public/SwiftRemoteMirror/SwiftRemoteMirror.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,7 @@ swift_reflection_addReflectionInfo(SwiftReflectionContextRef ContextRef,
149149
sectionFromInfo<BuiltinTypeDescriptorIterator>(Info, Info.builtin_types),
150150
sectionFromInfo<CaptureDescriptorIterator>(Info, Info.capture),
151151
sectionFromInfo<const void *>(Info, Info.type_references),
152-
sectionFromInfo<const void *>(Info, Info.reflection_strings),
153-
Info.LocalStartAddress,
154-
Info.RemoteStartAddress
155-
};
152+
sectionFromInfo<const void *>(Info, Info.reflection_strings)};
156153

157154
Context->addReflectionInfo(ContextInfo);
158155
}

0 commit comments

Comments
 (0)