This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG3d4cadfb2643: [lldb/Interpreter] Conform 
ScriptedProcessPythonInterface to SWIG python types (authored by mib).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105788/new/

https://reviews.llvm.org/D105788

Files:
  
lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp
  lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h

Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
@@ -51,7 +51,7 @@
   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:
Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.cpp
@@ -63,7 +63,13 @@
 }
 
 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 @@
   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 @@
     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 @@
     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 @@
 }
 
 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
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to