Skip to content

Commit ead37d6

Browse files
committed
Apply code review advice
1 parent 01c80c9 commit ead37d6

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

lldb/source/Plugins/LanguageRuntime/Swift/SwiftTask.cpp

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,51 @@
55
using namespace llvm;
66
using namespace lldb;
77

8-
lldb_private::ThreadTask::ThreadTask(tid_t tid, addr_t async_ctx,
9-
ExecutionContext &exe_ctx)
8+
namespace lldb_private {
9+
10+
ThreadTask::ThreadTask(tid_t tid, addr_t async_ctx, ExecutionContext &exe_ctx)
1011
: Thread(exe_ctx.GetProcessRef(), tid, true),
11-
m_concrete_reg_ctx_sp(exe_ctx.GetFrameSP()->GetRegisterContext()) {
12+
m_reg_info_sp(exe_ctx.GetFrameSP()->GetRegisterContext()) {
1213
m_async_ctx = async_ctx;
13-
auto ptr_size = exe_ctx.GetTargetRef().GetArchitecture().GetAddressByteSize();
14+
uint32_t ptr_size =
15+
exe_ctx.GetTargetRef().GetArchitecture().GetAddressByteSize();
1416
// A simplified description of AsyncContext. See swift/Task/ABI.h
1517
// struct AsyncContext {
1618
// AsyncContext *Parent; // offset 0
1719
// TaskContinuationFunction *ResumeParent; // offset 8
1820
// };
19-
auto resume_offset = ptr_size; // offsetof(AsyncContext, ResumeParent)
20-
auto resume_ptr = async_ctx + resume_offset;
21+
uint32_t resume_offset = ptr_size; // offsetof(AsyncContext, ResumeParent)
22+
uint32_t resume_ptr = async_ctx + resume_offset;
2123
Status status;
22-
m_pc = exe_ctx.GetProcessRef().ReadPointerFromMemory(resume_ptr, status);
24+
m_resume_fn =
25+
exe_ctx.GetProcessRef().ReadPointerFromMemory(resume_ptr, status);
2326
}
2427

2528
RegisterContextSP lldb_private::ThreadTask::GetRegisterContext() {
2629
if (!m_async_reg_ctx_sp)
2730
m_async_reg_ctx_sp = std::make_shared<RegisterContextTask>(
28-
*this, m_concrete_reg_ctx_sp, m_pc, m_async_ctx);
31+
*this, m_reg_info_sp, m_resume_fn, m_async_ctx);
2932
return m_async_reg_ctx_sp;
3033
}
3134

32-
lldb_private::RegisterContextTask::RegisterContextTask(
33-
Thread &thread, RegisterContextSP reg_info_sp, addr_t pc, addr_t async_ctx)
35+
RegisterContextTask::RegisterContextTask(Thread &thread,
36+
RegisterContextSP reg_info_sp,
37+
addr_t resume_fn, addr_t async_ctx)
3438
: RegisterContext(thread, 0), m_reg_info_sp(reg_info_sp),
35-
m_async_ctx(async_ctx), m_pc(pc) {
39+
m_async_ctx(async_ctx), m_resume_fn(resume_fn) {
3640
auto &target = thread.GetProcess()->GetTarget();
3741
auto triple = target.GetArchitecture().GetTriple();
3842
if (auto regnums = GetAsyncUnwindRegisterNumbers(triple.getArch()))
3943
m_async_ctx_regnum = regnums->async_ctx_regnum;
4044
}
4145

42-
bool lldb_private::RegisterContextTask::ReadRegister(
43-
const RegisterInfo *reg_info, RegisterValue &reg_value) {
46+
bool RegisterContextTask::ReadRegister(const RegisterInfo *reg_info,
47+
RegisterValue &reg_value) {
48+
if (!reg_info)
49+
return false;
50+
4451
if (reg_info->kinds[eRegisterKindGeneric] == LLDB_REGNUM_GENERIC_PC) {
45-
reg_value = m_pc;
52+
reg_value = m_resume_fn;
4653
return true;
4754
}
4855
if (reg_info->kinds[eRegisterKindLLDB] == m_async_ctx_regnum) {
@@ -51,3 +58,5 @@ bool lldb_private::RegisterContextTask::ReadRegister(
5158
}
5259
return false;
5360
}
61+
62+
} // namespace lldb_private

lldb/source/Plugins/LanguageRuntime/Swift/SwiftTask.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ class ThreadTask : public Thread {
3434

3535
private:
3636
/// A register context that is the source of `RegisterInfo` data.
37-
RegisterContextSP m_concrete_reg_ctx_sp;
37+
RegisterContextSP m_reg_info_sp;
3838
/// Lazily initialized `RegisterContextTask`.
3939
RegisterContextSP m_async_reg_ctx_sp;
4040
/// The Task's async context.
4141
addr_t m_async_ctx = LLDB_INVALID_ADDRESS;
4242
/// The address of the async context's resume function.
43-
addr_t m_pc = LLDB_INVALID_ADDRESS;
43+
addr_t m_resume_fn = LLDB_INVALID_ADDRESS;
4444
};
4545

4646
/// A Swift Task specific register context. Supporting class for `ThreadTask`,
4747
/// see its documentation for details.
4848
class RegisterContextTask : public RegisterContext {
4949
public:
50-
RegisterContextTask(Thread &thread, RegisterContextSP reg_info_sp, addr_t pc,
51-
addr_t async_ctx);
50+
RegisterContextTask(Thread &thread, RegisterContextSP reg_info_sp,
51+
addr_t resume_fn, addr_t async_ctx);
5252

5353
/// RegisterContextTask supports readonly from only two (necessary)
5454
/// registers. Namely, the pc and the async context registers.
@@ -87,7 +87,7 @@ class RegisterContextTask : public RegisterContext {
8787
/// The Task's async context.
8888
RegisterValue m_async_ctx;
8989
/// The address of the async context's resume function.
90-
RegisterValue m_pc;
90+
RegisterValue m_resume_fn;
9191
};
9292

9393
} // namespace lldb_private

0 commit comments

Comments
 (0)