[lldb/Interpreter] Conform ScriptedProcessPythonInterface to SWIG python types

This patch should address the compiler warnings due to mismatch type
comparaison.

Differential Revision: https://reviews.llvm.org/D105788

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
Med Ismail Bennani 2021-07-22 20:47:25 +00:00
parent 9dbc4b09af
commit 3d4cadfb26
2 changed files with 31 additions and 19 deletions

View File

@ -63,7 +63,13 @@ Status ScriptedProcessPythonInterface::Resume() {
}
bool ScriptedProcessPythonInterface::ShouldStop() {
return GetGenericInteger("shuold_stop");
llvm::Optional<unsigned long long> should_stop =
GetGenericInteger("should_stop");
if (!should_stop)
return false;
return static_cast<bool>(*should_stop);
}
Status ScriptedProcessPythonInterface::Stop() {
@ -134,21 +140,21 @@ Status ScriptedProcessPythonInterface::GetStatusFromMethod(
return Status("Returned object is null.");
}
size_t
llvm::Optional<unsigned long long>
ScriptedProcessPythonInterface::GetGenericInteger(llvm::StringRef method_name) {
Locker py_lock(&m_interpreter, Locker::AcquireLock | Locker::NoSTDIN,
Locker::FreeLock);
if (!m_object_instance_sp)
return LLDB_INVALID_ADDRESS;
return llvm::None;
if (!m_object_instance_sp)
return LLDB_INVALID_ADDRESS;
return llvm::None;
PythonObject implementor(PyRefType::Borrowed,
(PyObject *)m_object_instance_sp->GetValue());
if (!implementor.IsAllocated())
return LLDB_INVALID_ADDRESS;
return llvm::None;
PythonObject pmeth(
PyRefType::Owned,
@ -158,12 +164,12 @@ ScriptedProcessPythonInterface::GetGenericInteger(llvm::StringRef method_name) {
PyErr_Clear();
if (!pmeth.IsAllocated())
return LLDB_INVALID_ADDRESS;
return llvm::None;
if (PyCallable_Check(pmeth.get()) == 0) {
if (PyErr_Occurred())
PyErr_Clear();
return LLDB_INVALID_ADDRESS;
return llvm::None;
}
if (PyErr_Occurred())
@ -179,11 +185,15 @@ ScriptedProcessPythonInterface::GetGenericInteger(llvm::StringRef method_name) {
PyErr_Clear();
}
if (py_return.get()) {
auto size = py_return.AsUnsignedLongLong();
return (size) ? *size : LLDB_INVALID_ADDRESS;
}
return LLDB_INVALID_ADDRESS;
if (!py_return.get())
return llvm::None;
llvm::Expected<unsigned long long> size = py_return.AsUnsignedLongLong();
// FIXME: Handle error.
if (!size)
return llvm::None;
return *size;
}
lldb::MemoryRegionInfoSP
@ -280,15 +290,17 @@ StructuredData::DictionarySP ScriptedProcessPythonInterface::GetLoadedImages() {
}
lldb::pid_t ScriptedProcessPythonInterface::GetProcessID() {
size_t pid = GetGenericInteger("get_process_id");
return (pid >= std::numeric_limits<lldb::pid_t>::max())
? LLDB_INVALID_PROCESS_ID
: pid;
llvm::Optional<unsigned long long> pid = GetGenericInteger("get_process_id");
return (!pid) ? LLDB_INVALID_PROCESS_ID : *pid;
}
bool ScriptedProcessPythonInterface::IsAlive() {
return GetGenericInteger("is_alive");
llvm::Optional<unsigned long long> is_alive = GetGenericInteger("is_alive");
if (!is_alive)
return false;
return static_cast<bool>(*is_alive);
}
#endif

View File

@ -51,7 +51,7 @@ public:
bool IsAlive() override;
protected:
size_t GetGenericInteger(llvm::StringRef method_name);
llvm::Optional<uint64_t> GetGenericInteger(llvm::StringRef method_name);
Status GetStatusFromMethod(llvm::StringRef method_name);
private: