This is great!
On Tue, Mar 26, 2019 at 2:55 PM Jonas Devlieghere via lldb-commits <lldb-commits@lists.llvm.org> wrote: > > Author: jdevlieghere > Date: Tue Mar 26 14:57:02 2019 > New Revision: 357034 > > URL: http://llvm.org/viewvc/llvm-project?rev=357034&view=rev > Log: > [Python] Remove dynamic indirection > > Now that the Python plugin relies on the SWIG symbols, we no longer need > to dynamically resolve these functions. > > Modified: > lldb/trunk/source/API/SystemInitializerFull.cpp > lldb/trunk/source/API/SystemInitializerFull.h > > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h > > Modified: lldb/trunk/source/API/SystemInitializerFull.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SystemInitializerFull.cpp?rev=357034&r1=357033&r2=357034&view=diff > ============================================================================== > --- lldb/trunk/source/API/SystemInitializerFull.cpp (original) > +++ lldb/trunk/source/API/SystemInitializerFull.cpp Tue Mar 26 14:57:02 2019 > @@ -142,7 +142,6 @@ llvm::Error SystemInitializerFull::Initi > #endif > > #if !defined(LLDB_DISABLE_PYTHON) > - ScriptInterpreterPython::InitializeSWIG(); > ScriptInterpreterPython::Initialize(); > #endif > > > Modified: lldb/trunk/source/API/SystemInitializerFull.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SystemInitializerFull.h?rev=357034&r1=357033&r2=357034&view=diff > ============================================================================== > --- lldb/trunk/source/API/SystemInitializerFull.h (original) > +++ lldb/trunk/source/API/SystemInitializerFull.h Tue Mar 26 14:57:02 2019 > @@ -27,9 +27,6 @@ public: > > llvm::Error Initialize() override; > void Terminate() override; > - > -private: > - void InitializeSWIG(); > }; > > } // namespace lldb_private > > Modified: > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp?rev=357034&r1=357033&r2=357034&view=diff > ============================================================================== > --- > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > (original) > +++ > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > Tue Mar 26 14:57:02 2019 > @@ -71,10 +71,9 @@ extern "C" void init_lldb(void); > #define LLDBSwigPyInit init_lldb > #endif > > -// these are the Pythonic implementations of the required callbacks these are > -// scripting-language specific, which is why they belong here we still need > to > -// use function pointers to them instead of relying on linkage-time > resolution > -// because the SWIG stuff and this file get built at different times > +// These prototypes are the Pythonic implementations of the required > callbacks. > +// Although these are scripting-language specific, their definition depends > on > +// the public API. > extern "C" bool LLDBSwigPythonBreakpointCallbackFunction( > const char *python_function_name, const char *session_dictionary_name, > const lldb::StackFrameSP &sb_frame, > @@ -194,67 +193,6 @@ LLDBSWIGPython_GetDynamicSetting(void *m > > #endif > > -ScriptInterpreterPython::SWIGInitCallback > - ScriptInterpreterPython::g_swig_init_callback = nullptr; > -ScriptInterpreterPython::SWIGBreakpointCallbackFunction > - ScriptInterpreterPython::g_swig_breakpoint_callback = nullptr; > -ScriptInterpreterPython::SWIGWatchpointCallbackFunction > - ScriptInterpreterPython::g_swig_watchpoint_callback = nullptr; > -ScriptInterpreterPython::SWIGPythonTypeScriptCallbackFunction > - ScriptInterpreterPython::g_swig_typescript_callback = nullptr; > -ScriptInterpreterPython::SWIGPythonCreateSyntheticProvider > - ScriptInterpreterPython::g_swig_synthetic_script = nullptr; > -ScriptInterpreterPython::SWIGPythonCreateCommandObject > - ScriptInterpreterPython::g_swig_create_cmd = nullptr; > -ScriptInterpreterPython::SWIGPythonCalculateNumChildren > - ScriptInterpreterPython::g_swig_calc_children = nullptr; > -ScriptInterpreterPython::SWIGPythonGetChildAtIndex > - ScriptInterpreterPython::g_swig_get_child_index = nullptr; > -ScriptInterpreterPython::SWIGPythonGetIndexOfChildWithName > - ScriptInterpreterPython::g_swig_get_index_child = nullptr; > -ScriptInterpreterPython::SWIGPythonCastPyObjectToSBValue > - ScriptInterpreterPython::g_swig_cast_to_sbvalue = nullptr; > -ScriptInterpreterPython::SWIGPythonGetValueObjectSPFromSBValue > - ScriptInterpreterPython::g_swig_get_valobj_sp_from_sbvalue = nullptr; > -ScriptInterpreterPython::SWIGPythonUpdateSynthProviderInstance > - ScriptInterpreterPython::g_swig_update_provider = nullptr; > -ScriptInterpreterPython::SWIGPythonMightHaveChildrenSynthProviderInstance > - ScriptInterpreterPython::g_swig_mighthavechildren_provider = nullptr; > -ScriptInterpreterPython::SWIGPythonGetValueSynthProviderInstance > - ScriptInterpreterPython::g_swig_getvalue_provider = nullptr; > -ScriptInterpreterPython::SWIGPythonCallCommand > - ScriptInterpreterPython::g_swig_call_command = nullptr; > -ScriptInterpreterPython::SWIGPythonCallCommandObject > - ScriptInterpreterPython::g_swig_call_command_object = nullptr; > -ScriptInterpreterPython::SWIGPythonCallModuleInit > - ScriptInterpreterPython::g_swig_call_module_init = nullptr; > -ScriptInterpreterPython::SWIGPythonCreateOSPlugin > - ScriptInterpreterPython::g_swig_create_os_plugin = nullptr; > -ScriptInterpreterPython::SWIGPythonCreateFrameRecognizer > - ScriptInterpreterPython::g_swig_create_frame_recognizer = nullptr; > -ScriptInterpreterPython::SWIGPythonGetRecognizedArguments > - ScriptInterpreterPython::g_swig_get_recognized_arguments = nullptr; > -ScriptInterpreterPython::SWIGPythonScriptKeyword_Process > - ScriptInterpreterPython::g_swig_run_script_keyword_process = nullptr; > -ScriptInterpreterPython::SWIGPythonScriptKeyword_Thread > - ScriptInterpreterPython::g_swig_run_script_keyword_thread = nullptr; > -ScriptInterpreterPython::SWIGPythonScriptKeyword_Target > - ScriptInterpreterPython::g_swig_run_script_keyword_target = nullptr; > -ScriptInterpreterPython::SWIGPythonScriptKeyword_Frame > - ScriptInterpreterPython::g_swig_run_script_keyword_frame = nullptr; > -ScriptInterpreterPython::SWIGPythonScriptKeyword_Value > - ScriptInterpreterPython::g_swig_run_script_keyword_value = nullptr; > -ScriptInterpreterPython::SWIGPython_GetDynamicSetting > - ScriptInterpreterPython::g_swig_plugin_get = nullptr; > -ScriptInterpreterPython::SWIGPythonCreateScriptedThreadPlan > - ScriptInterpreterPython::g_swig_thread_plan_script = nullptr; > -ScriptInterpreterPython::SWIGPythonCallThreadPlan > - ScriptInterpreterPython::g_swig_call_thread_plan = nullptr; > -ScriptInterpreterPython::SWIGPythonCreateScriptedBreakpointResolver > - ScriptInterpreterPython::g_swig_bkpt_resolver_script = nullptr; > -ScriptInterpreterPython::SWIGPythonCallBreakpointResolver > - ScriptInterpreterPython::g_swig_call_bkpt_resolver = nullptr; > - > static bool g_initialized = false; > > namespace { > @@ -276,8 +214,7 @@ public: > InitializePythonHome(); > > // Register _lldb as a built-in module. > - PyImport_AppendInittab("_lldb", > - ScriptInterpreterPython::g_swig_init_callback); > + PyImport_AppendInittab("_lldb", LLDBSwigPyInit); > > // Python < 3.2 and Python >= 3.2 reversed the ordering requirements for > // calling `Py_Initialize` and `PyEval_InitThreads`. < 3.2 requires that you > @@ -1678,8 +1615,8 @@ StructuredData::GenericSP ScriptInterpre > { > Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, > Locker::FreeLock); > - ret_val = > - g_swig_create_frame_recognizer(class_name, > m_dictionary_name.c_str()); > + ret_val = LLDBSWIGPython_CreateFrameRecognizer(class_name, > + > m_dictionary_name.c_str()); > } > > return StructuredData::GenericSP(new StructuredPythonObject(ret_val)); > @@ -1700,9 +1637,9 @@ lldb::ValueObjectListSP ScriptInterprete > > if (!implementor.IsAllocated()) return ValueObjectListSP(); > > - PythonObject py_return( > - PyRefType::Owned, > - (PyObject *)g_swig_get_recognized_arguments(implementor.get(), > frame_sp)); > + PythonObject py_return(PyRefType::Owned, > + (PyObject *)LLDBSwigPython_GetRecognizedArguments( > + implementor.get(), frame_sp)); > > // if it fails, print the error but otherwise go on > if (PyErr_Occurred()) { > @@ -1715,8 +1652,8 @@ lldb::ValueObjectListSP ScriptInterprete > for (size_t i = 0; i < result_list.GetSize(); i++) { > PyObject *item = result_list.GetItemAtIndex(i).get(); > lldb::SBValue *sb_value_ptr = > - (lldb::SBValue *)g_swig_cast_to_sbvalue(item); > - auto valobj_sp = g_swig_get_valobj_sp_from_sbvalue(sb_value_ptr); > + (lldb::SBValue *)LLDBSWIGPython_CastPyObjectToSBValue(item); > + auto valobj_sp = > LLDBSWIGPython_GetValueObjectSPFromSBValue(sb_value_ptr); > if (valobj_sp) result->Append(valobj_sp); > } > return result; > @@ -1737,8 +1674,8 @@ StructuredData::GenericSP ScriptInterpre > { > Locker py_lock(this, Locker::AcquireLock | Locker::NoSTDIN, > Locker::FreeLock); > - ret_val = g_swig_create_os_plugin(class_name, m_dictionary_name.c_str(), > - process_sp); > + ret_val = LLDBSWIGPythonCreateOSPlugin( > + class_name, m_dictionary_name.c_str(), process_sp); > } > > return StructuredData::GenericSP(new StructuredPythonObject(ret_val)); > @@ -2022,7 +1959,7 @@ StructuredData::ObjectSP ScriptInterpret > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > > - ret_val = g_swig_thread_plan_script( > + ret_val = LLDBSwigPythonCreateScriptedThreadPlan( > class_name, python_interpreter->m_dictionary_name.c_str(), > thread_plan_sp); > } > @@ -2039,7 +1976,7 @@ bool ScriptInterpreterPython::ScriptedTh > if (generic) { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - explains_stop = g_swig_call_thread_plan( > + explains_stop = LLDBSWIGPythonCallThreadPlan( > generic->GetValue(), "explains_stop", event, script_error); > if (script_error) > return true; > @@ -2056,8 +1993,8 @@ bool ScriptInterpreterPython::ScriptedTh > if (generic) { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - should_stop = g_swig_call_thread_plan(generic->GetValue(), "should_stop", > - event, script_error); > + should_stop = LLDBSWIGPythonCallThreadPlan( > + generic->GetValue(), "should_stop", event, script_error); > if (script_error) > return true; > } > @@ -2073,8 +2010,8 @@ bool ScriptInterpreterPython::ScriptedTh > if (generic) { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - is_stale = g_swig_call_thread_plan(generic->GetValue(), "is_stale", > nullptr, > - script_error); > + is_stale = LLDBSWIGPythonCallThreadPlan(generic->GetValue(), "is_stale", > + nullptr, script_error); > if (script_error) > return true; > } > @@ -2090,8 +2027,8 @@ lldb::StateType ScriptInterpreterPython: > if (generic) { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - should_step = g_swig_call_thread_plan(generic->GetValue(), "should_step", > - NULL, script_error); > + should_step = LLDBSWIGPythonCallThreadPlan( > + generic->GetValue(), "should_step", NULL, script_error); > if (script_error) > should_step = true; > } > @@ -2128,9 +2065,9 @@ ScriptInterpreterPython::CreateScriptedB > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > > - ret_val = g_swig_bkpt_resolver_script( > - class_name, python_interpreter->m_dictionary_name.c_str(), > - args_data, bkpt_sp); > + ret_val = LLDBSwigPythonCreateScriptedBreakpointResolver( > + class_name, python_interpreter->m_dictionary_name.c_str(), args_data, > + bkpt_sp); > } > > return StructuredData::GenericSP(new StructuredPythonObject(ret_val)); > @@ -2145,9 +2082,8 @@ ScriptInterpreterPython::ScriptedBreakpo > if (implementor_sp) { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - should_continue > - = g_swig_call_bkpt_resolver(implementor_sp->GetValue(), > "__callback__", > - sym_ctx); > + should_continue = LLDBSwigPythonCallBreakpointResolver( > + implementor_sp->GetValue(), "__callback__", sym_ctx); > if (PyErr_Occurred()) { > PyErr_Print(); > PyErr_Clear(); > @@ -2163,8 +2099,8 @@ ScriptInterpreterPython::ScriptedBreakpo > if (implementor_sp) { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - depth_as_int > - = g_swig_call_bkpt_resolver(implementor_sp->GetValue(), > "__get_depth__", nullptr); > + depth_as_int = LLDBSwigPythonCallBreakpointResolver( > + implementor_sp->GetValue(), "__get_depth__", nullptr); > if (PyErr_Occurred()) { > PyErr_Print(); > PyErr_Clear(); > @@ -2199,8 +2135,7 @@ ScriptInterpreterPython::LoadPluginModul > StructuredData::DictionarySP ScriptInterpreterPython::GetDynamicSettings( > StructuredData::ObjectSP plugin_module_sp, Target *target, > const char *setting_name, lldb_private::Status &error) { > - if (!plugin_module_sp || !target || !setting_name || !setting_name[0] || > - !g_swig_plugin_get) > + if (!plugin_module_sp || !target || !setting_name || !setting_name[0]) > return StructuredData::DictionarySP(); > StructuredData::Generic *generic = plugin_module_sp->GetAsGeneric(); > if (!generic) > @@ -2211,8 +2146,8 @@ StructuredData::DictionarySP ScriptInter > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > TargetSP target_sp(target->shared_from_this()); > reply_pyobj.Reset(PyRefType::Owned, > - (PyObject *)g_swig_plugin_get(generic->GetValue(), > - setting_name, target_sp)); > + (PyObject *)LLDBSWIGPython_GetDynamicSetting( > + generic->GetValue(), setting_name, target_sp)); > > PythonDictionary py_dict(PyRefType::Borrowed, reply_pyobj.get()); > return py_dict.CreateStructuredDictionary(); > @@ -2247,7 +2182,7 @@ ScriptInterpreterPython::CreateSynthetic > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_synthetic_script( > + ret_val = LLDBSwigPythonCreateSyntheticProvider( > class_name, python_interpreter->m_dictionary_name.c_str(), valobj); > } > > @@ -2270,8 +2205,8 @@ ScriptInterpreterPython::CreateScriptCom > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = > - g_swig_create_cmd(class_name, m_dictionary_name.c_str(), > debugger_sp); > + ret_val = LLDBSwigPythonCreateCommandObject( > + class_name, m_dictionary_name.c_str(), debugger_sp); > } > > return StructuredData::GenericSP(new StructuredPythonObject(ret_val)); > @@ -2369,9 +2304,9 @@ bool ScriptInterpreterPython::GetScripte > { > TypeSummaryOptionsSP options_sp(new TypeSummaryOptions(options)); > > - static Timer::Category func_cat("g_swig_typescript_callback"); > - Timer scoped_timer(func_cat, "g_swig_typescript_callback"); > - ret_val = g_swig_typescript_callback( > + static Timer::Category func_cat("LLDBSwigPythonCallTypeScript"); > + Timer scoped_timer(func_cat, "LLDBSwigPythonCallTypeScript"); > + ret_val = LLDBSwigPythonCallTypeScript( > python_function_name, GetSessionDictionary().get(), valobj, > &new_callee, options_sp, retval); > } > @@ -2437,7 +2372,7 @@ bool ScriptInterpreterPython::Breakpoint > Locker py_lock(python_interpreter, Locker::AcquireLock | > Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_breakpoint_callback( > + ret_val = LLDBSwigPythonBreakpointCallbackFunction( > python_function_name, > python_interpreter->m_dictionary_name.c_str(), stop_frame_sp, > bp_loc_sp); > @@ -2485,7 +2420,7 @@ bool ScriptInterpreterPython::Watchpoint > Locker py_lock(python_interpreter, Locker::AcquireLock | > Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_watchpoint_callback( > + ret_val = LLDBSwigPythonWatchpointCallbackFunction( > python_function_name, > python_interpreter->m_dictionary_name.c_str(), stop_frame_sp, > wp_sp); > @@ -2510,15 +2445,12 @@ size_t ScriptInterpreterPython::Calculat > if (!implementor) > return 0; > > - if (!g_swig_calc_children) > - return 0; > - > size_t ret_val = 0; > > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_calc_children(implementor, max); > + ret_val = LLDBSwigPython_CalculateNumChildren(implementor, max); > } > > return ret_val; > @@ -2536,22 +2468,19 @@ lldb::ValueObjectSP ScriptInterpreterPyt > if (!implementor) > return lldb::ValueObjectSP(); > > - if (!g_swig_get_child_index || !g_swig_cast_to_sbvalue) > - return lldb::ValueObjectSP(); > > lldb::ValueObjectSP ret_val; > - > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - void *child_ptr = g_swig_get_child_index(implementor, idx); > + void *child_ptr = LLDBSwigPython_GetChildAtIndex(implementor, idx); > if (child_ptr != nullptr && child_ptr != Py_None) { > lldb::SBValue *sb_value_ptr = > - (lldb::SBValue *)g_swig_cast_to_sbvalue(child_ptr); > + (lldb::SBValue *)LLDBSWIGPython_CastPyObjectToSBValue(child_ptr); > if (sb_value_ptr == nullptr) > Py_XDECREF(child_ptr); > else > - ret_val = g_swig_get_valobj_sp_from_sbvalue(sb_value_ptr); > + ret_val = LLDBSWIGPython_GetValueObjectSPFromSBValue(sb_value_ptr); > } else { > Py_XDECREF(child_ptr); > } > @@ -2572,15 +2501,12 @@ int ScriptInterpreterPython::GetIndexOfC > if (!implementor) > return UINT32_MAX; > > - if (!g_swig_get_index_child) > - return UINT32_MAX; > - > int ret_val = UINT32_MAX; > > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_get_index_child(implementor, child_name); > + ret_val = LLDBSwigPython_GetIndexOfChildWithName(implementor, > child_name); > } > > return ret_val; > @@ -2600,13 +2526,10 @@ bool ScriptInterpreterPython::UpdateSynt > if (!implementor) > return ret_val; > > - if (!g_swig_update_provider) > - return ret_val; > - > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_update_provider(implementor); > + ret_val = LLDBSwigPython_UpdateSynthProviderInstance(implementor); > } > > return ret_val; > @@ -2626,13 +2549,12 @@ bool ScriptInterpreterPython::MightHaveC > if (!implementor) > return ret_val; > > - if (!g_swig_mighthavechildren_provider) > - return ret_val; > > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_mighthavechildren_provider(implementor); > + ret_val = > + LLDBSwigPython_MightHaveChildrenSynthProviderInstance(implementor); > } > > return ret_val; > @@ -2652,21 +2574,17 @@ lldb::ValueObjectSP ScriptInterpreterPyt > if (!implementor) > return ret_val; > > - if (!g_swig_getvalue_provider || !g_swig_cast_to_sbvalue || > - !g_swig_get_valobj_sp_from_sbvalue) > - return ret_val; > - > { > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - void *child_ptr = g_swig_getvalue_provider(implementor); > + void *child_ptr = > LLDBSwigPython_GetValueSynthProviderInstance(implementor); > if (child_ptr != nullptr && child_ptr != Py_None) { > lldb::SBValue *sb_value_ptr = > - (lldb::SBValue *)g_swig_cast_to_sbvalue(child_ptr); > + (lldb::SBValue *)LLDBSWIGPython_CastPyObjectToSBValue(child_ptr); > if (sb_value_ptr == nullptr) > Py_XDECREF(child_ptr); > else > - ret_val = g_swig_get_valobj_sp_from_sbvalue(sb_value_ptr); > + ret_val = LLDBSWIGPython_GetValueObjectSPFromSBValue(sb_value_ptr); > } else { > Py_XDECREF(child_ptr); > } > @@ -2754,15 +2672,12 @@ bool ScriptInterpreterPython::RunScriptF > error.SetErrorString("no function to execute"); > return false; > } > - if (!g_swig_run_script_keyword_process) { > - error.SetErrorString("internal helper function missing"); > - return false; > - } > + > { > ProcessSP process_sp(process->shared_from_this()); > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_run_script_keyword_process( > + ret_val = LLDBSWIGPythonRunScriptKeywordProcess( > impl_function, m_dictionary_name.c_str(), process_sp, output); > if (!ret_val) > error.SetErrorString("python script evaluation failed"); > @@ -2783,15 +2698,12 @@ bool ScriptInterpreterPython::RunScriptF > error.SetErrorString("no function to execute"); > return false; > } > - if (!g_swig_run_script_keyword_thread) { > - error.SetErrorString("internal helper function missing"); > - return false; > - } > + > { > ThreadSP thread_sp(thread->shared_from_this()); > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_run_script_keyword_thread( > + ret_val = LLDBSWIGPythonRunScriptKeywordThread( > impl_function, m_dictionary_name.c_str(), thread_sp, output); > if (!ret_val) > error.SetErrorString("python script evaluation failed"); > @@ -2812,15 +2724,12 @@ bool ScriptInterpreterPython::RunScriptF > error.SetErrorString("no function to execute"); > return false; > } > - if (!g_swig_run_script_keyword_target) { > - error.SetErrorString("internal helper function missing"); > - return false; > - } > + > { > TargetSP target_sp(target->shared_from_this()); > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_run_script_keyword_target( > + ret_val = LLDBSWIGPythonRunScriptKeywordTarget( > impl_function, m_dictionary_name.c_str(), target_sp, output); > if (!ret_val) > error.SetErrorString("python script evaluation failed"); > @@ -2841,15 +2750,12 @@ bool ScriptInterpreterPython::RunScriptF > error.SetErrorString("no function to execute"); > return false; > } > - if (!g_swig_run_script_keyword_frame) { > - error.SetErrorString("internal helper function missing"); > - return false; > - } > + > { > StackFrameSP frame_sp(frame->shared_from_this()); > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_run_script_keyword_frame( > + ret_val = LLDBSWIGPythonRunScriptKeywordFrame( > impl_function, m_dictionary_name.c_str(), frame_sp, output); > if (!ret_val) > error.SetErrorString("python script evaluation failed"); > @@ -2870,15 +2776,12 @@ bool ScriptInterpreterPython::RunScriptF > error.SetErrorString("no function to execute"); > return false; > } > - if (!g_swig_run_script_keyword_value) { > - error.SetErrorString("internal helper function missing"); > - return false; > - } > + > { > ValueObjectSP value_sp(value->GetSP()); > Locker py_lock(this, > Locker::AcquireLock | Locker::InitSession | > Locker::NoSTDIN); > - ret_val = g_swig_run_script_keyword_value( > + ret_val = LLDBSWIGPythonRunScriptKeywordValue( > impl_function, m_dictionary_name.c_str(), value_sp, output); > if (!ret_val) > error.SetErrorString("python script evaluation failed"); > @@ -2906,11 +2809,6 @@ bool ScriptInterpreterPython::LoadScript > return false; > } > > - if (!g_swig_call_module_init) { > - error.SetErrorString("internal helper function missing"); > - return false; > - } > - > lldb::DebuggerSP debugger_sp = > m_interpreter.GetDebugger().shared_from_this(); > > { > @@ -3030,8 +2928,8 @@ bool ScriptInterpreterPython::LoadScript > > // if we are here, everything worked > // call __lldb_init_module(debugger,dict) > - if (!g_swig_call_module_init(basename.c_str(), m_dictionary_name.c_str(), > - debugger_sp)) { > + if (!LLDBSwigPythonCallModuleInit(basename.c_str(), > + m_dictionary_name.c_str(), > debugger_sp)) { > error.SetErrorString("calling __lldb_init_module failed"); > return false; > } > @@ -3103,11 +3001,6 @@ bool ScriptInterpreterPython::RunScriptB > return false; > } > > - if (!g_swig_call_command) { > - error.SetErrorString("no helper function to run scripted commands"); > - return false; > - } > - > lldb::DebuggerSP debugger_sp = > m_interpreter.GetDebugger().shared_from_this(); > lldb::ExecutionContextRefSP exe_ctx_ref_sp(new > ExecutionContextRef(exe_ctx)); > > @@ -3129,9 +3022,9 @@ bool ScriptInterpreterPython::RunScriptB > SynchronicityHandler synch_handler(debugger_sp, synchronicity); > > std::string args_str = args.str(); > - ret_val = g_swig_call_command(impl_function, m_dictionary_name.c_str(), > - debugger_sp, args_str.c_str(), cmd_retobj, > - exe_ctx_ref_sp); > + ret_val = LLDBSwigPythonCallCommand( > + impl_function, m_dictionary_name.c_str(), debugger_sp, > args_str.c_str(), > + cmd_retobj, exe_ctx_ref_sp); > } > > if (!ret_val) > @@ -3152,11 +3045,6 @@ bool ScriptInterpreterPython::RunScriptB > return false; > } > > - if (!g_swig_call_command_object) { > - error.SetErrorString("no helper function to run scripted commands"); > - return false; > - } > - > lldb::DebuggerSP debugger_sp = > m_interpreter.GetDebugger().shared_from_this(); > lldb::ExecutionContextRefSP exe_ctx_ref_sp(new > ExecutionContextRef(exe_ctx)); > > @@ -3178,9 +3066,9 @@ bool ScriptInterpreterPython::RunScriptB > SynchronicityHandler synch_handler(debugger_sp, synchronicity); > > std::string args_str = args.str(); > - ret_val = g_swig_call_command_object(impl_obj_sp->GetValue(), > debugger_sp, > - args_str.c_str(), cmd_retobj, > - exe_ctx_ref_sp); > + ret_val = LLDBSwigPythonCallCommandObject(impl_obj_sp->GetValue(), > + debugger_sp, args_str.c_str(), > + cmd_retobj, exe_ctx_ref_sp); > } > > if (!ret_val) > @@ -3397,96 +3285,6 @@ ScriptInterpreterPython::AcquireInterpre > return py_lock; > } > > -void ScriptInterpreterPython::InitializeSWIG() { > -#if !defined(LLDB_DISABLE_PYTHON) > - InitializeInterpreter( > - LLDBSwigPyInit, LLDBSwigPythonBreakpointCallbackFunction, > - LLDBSwigPythonWatchpointCallbackFunction, LLDBSwigPythonCallTypeScript, > - LLDBSwigPythonCreateSyntheticProvider, > LLDBSwigPythonCreateCommandObject, > - LLDBSwigPython_CalculateNumChildren, LLDBSwigPython_GetChildAtIndex, > - LLDBSwigPython_GetIndexOfChildWithName, > - LLDBSWIGPython_CastPyObjectToSBValue, > - LLDBSWIGPython_GetValueObjectSPFromSBValue, > - LLDBSwigPython_UpdateSynthProviderInstance, > - LLDBSwigPython_MightHaveChildrenSynthProviderInstance, > - LLDBSwigPython_GetValueSynthProviderInstance, > LLDBSwigPythonCallCommand, > - LLDBSwigPythonCallCommandObject, LLDBSwigPythonCallModuleInit, > - LLDBSWIGPythonCreateOSPlugin, LLDBSWIGPython_CreateFrameRecognizer, > - LLDBSwigPython_GetRecognizedArguments, > - LLDBSWIGPythonRunScriptKeywordProcess, > - LLDBSWIGPythonRunScriptKeywordThread, > - LLDBSWIGPythonRunScriptKeywordTarget, > LLDBSWIGPythonRunScriptKeywordFrame, > - LLDBSWIGPythonRunScriptKeywordValue, LLDBSWIGPython_GetDynamicSetting, > - LLDBSwigPythonCreateScriptedThreadPlan, LLDBSWIGPythonCallThreadPlan, > - LLDBSwigPythonCreateScriptedBreakpointResolver, > - LLDBSwigPythonCallBreakpointResolver); > -#endif > -} > - > -void ScriptInterpreterPython::InitializeInterpreter( > - SWIGInitCallback swig_init_callback, > - SWIGBreakpointCallbackFunction swig_breakpoint_callback, > - SWIGWatchpointCallbackFunction swig_watchpoint_callback, > - SWIGPythonTypeScriptCallbackFunction swig_typescript_callback, > - SWIGPythonCreateSyntheticProvider swig_synthetic_script, > - SWIGPythonCreateCommandObject swig_create_cmd, > - SWIGPythonCalculateNumChildren swig_calc_children, > - SWIGPythonGetChildAtIndex swig_get_child_index, > - SWIGPythonGetIndexOfChildWithName swig_get_index_child, > - SWIGPythonCastPyObjectToSBValue swig_cast_to_sbvalue, > - SWIGPythonGetValueObjectSPFromSBValue swig_get_valobj_sp_from_sbvalue, > - SWIGPythonUpdateSynthProviderInstance swig_update_provider, > - SWIGPythonMightHaveChildrenSynthProviderInstance > - swig_mighthavechildren_provider, > - SWIGPythonGetValueSynthProviderInstance swig_getvalue_provider, > - SWIGPythonCallCommand swig_call_command, > - SWIGPythonCallCommandObject swig_call_command_object, > - SWIGPythonCallModuleInit swig_call_module_init, > - SWIGPythonCreateOSPlugin swig_create_os_plugin, > - SWIGPythonCreateFrameRecognizer swig_create_frame_recognizer, > - SWIGPythonGetRecognizedArguments swig_get_recognized_arguments, > - SWIGPythonScriptKeyword_Process swig_run_script_keyword_process, > - SWIGPythonScriptKeyword_Thread swig_run_script_keyword_thread, > - SWIGPythonScriptKeyword_Target swig_run_script_keyword_target, > - SWIGPythonScriptKeyword_Frame swig_run_script_keyword_frame, > - SWIGPythonScriptKeyword_Value swig_run_script_keyword_value, > - SWIGPython_GetDynamicSetting swig_plugin_get, > - SWIGPythonCreateScriptedThreadPlan swig_thread_plan_script, > - SWIGPythonCallThreadPlan swig_call_thread_plan, > - SWIGPythonCreateScriptedBreakpointResolver swig_bkpt_resolver_script, > - SWIGPythonCallBreakpointResolver swig_call_bkpt_resolver) { > - g_swig_init_callback = swig_init_callback; > - g_swig_breakpoint_callback = swig_breakpoint_callback; > - g_swig_watchpoint_callback = swig_watchpoint_callback; > - g_swig_typescript_callback = swig_typescript_callback; > - g_swig_synthetic_script = swig_synthetic_script; > - g_swig_create_cmd = swig_create_cmd; > - g_swig_calc_children = swig_calc_children; > - g_swig_get_child_index = swig_get_child_index; > - g_swig_get_index_child = swig_get_index_child; > - g_swig_cast_to_sbvalue = swig_cast_to_sbvalue; > - g_swig_get_valobj_sp_from_sbvalue = swig_get_valobj_sp_from_sbvalue; > - g_swig_update_provider = swig_update_provider; > - g_swig_mighthavechildren_provider = swig_mighthavechildren_provider; > - g_swig_getvalue_provider = swig_getvalue_provider; > - g_swig_call_command = swig_call_command; > - g_swig_call_command_object = swig_call_command_object; > - g_swig_call_module_init = swig_call_module_init; > - g_swig_create_os_plugin = swig_create_os_plugin; > - g_swig_create_frame_recognizer = swig_create_frame_recognizer; > - g_swig_get_recognized_arguments = swig_get_recognized_arguments; > - g_swig_run_script_keyword_process = swig_run_script_keyword_process; > - g_swig_run_script_keyword_thread = swig_run_script_keyword_thread; > - g_swig_run_script_keyword_target = swig_run_script_keyword_target; > - g_swig_run_script_keyword_frame = swig_run_script_keyword_frame; > - g_swig_run_script_keyword_value = swig_run_script_keyword_value; > - g_swig_plugin_get = swig_plugin_get; > - g_swig_thread_plan_script = swig_thread_plan_script; > - g_swig_call_thread_plan = swig_call_thread_plan; > - g_swig_bkpt_resolver_script = swig_bkpt_resolver_script; > - g_swig_call_bkpt_resolver = swig_call_bkpt_resolver; > -} > - > void ScriptInterpreterPython::InitializePrivate() { > if (g_initialized) > return; > @@ -3502,8 +3300,7 @@ void ScriptInterpreterPython::Initialize > // initialization. > InitializePythonRAII initialize_guard; > > - if (g_swig_init_callback) > - g_swig_init_callback(); > + LLDBSwigPyInit(); > > // Update the path python uses to search for modules to include the current > // directory. > > Modified: > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h?rev=357034&r1=357033&r2=357034&view=diff > ============================================================================== > --- > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h > (original) > +++ > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h > Tue Mar 26 14:57:02 2019 > @@ -304,7 +304,6 @@ public: > //------------------------------------------------------------------ > // Static Functions > //------------------------------------------------------------------ > - static void InitializeSWIG(); > static void Initialize(); > > static void Terminate(); > @@ -365,156 +364,9 @@ public: > PyGILState_STATE m_GILState; > }; > > - // FIXME: This is currently used from the InitializePythonRAII. Make this > - // private when we're able to break the dependency. > -#if PY_MAJOR_VERSION >= 3 > - typedef PyObject *(*SWIGInitCallback)(void); > -#else > - typedef void (*SWIGInitCallback)(void); > -#endif > - static SWIGInitCallback g_swig_init_callback; > - > protected: > - typedef bool (*SWIGBreakpointCallbackFunction)( > - const char *python_function_name, const char *session_dictionary_name, > - const lldb::StackFrameSP &frame_sp, > - const lldb::BreakpointLocationSP &bp_loc_sp); > - > - typedef bool (*SWIGWatchpointCallbackFunction)( > - const char *python_function_name, const char *session_dictionary_name, > - const lldb::StackFrameSP &frame_sp, const lldb::WatchpointSP &wp_sp); > - > - typedef bool (*SWIGPythonTypeScriptCallbackFunction)( > - const char *python_function_name, void *session_dictionary, > - const lldb::ValueObjectSP &valobj_sp, void **pyfunct_wrapper, > - const lldb::TypeSummaryOptionsSP &options, std::string &retval); > - > - typedef void *(*SWIGPythonCreateSyntheticProvider)( > - const char *python_class_name, const char *session_dictionary_name, > - const lldb::ValueObjectSP &valobj_sp); > - > - typedef void *(*SWIGPythonCreateCommandObject)( > - const char *python_class_name, const char *session_dictionary_name, > - const lldb::DebuggerSP debugger_sp); > - > - typedef void *(*SWIGPythonCreateScriptedThreadPlan)( > - const char *python_class_name, const char *session_dictionary_name, > - const lldb::ThreadPlanSP &thread_plan_sp); > - > - typedef bool (*SWIGPythonCallThreadPlan)(void *implementor, > - const char *method_name, > - Event *event_sp, bool &got_error); > - > - typedef void *(*SWIGPythonCreateScriptedBreakpointResolver)( > - const char *python_class_name, const char *session_dictionary_name, > - lldb_private::StructuredDataImpl *args_impl, lldb::BreakpointSP > &bkpt_sp); > - > - typedef unsigned int (*SWIGPythonCallBreakpointResolver)( > - void *implementor, const char *method_name, > - lldb_private::SymbolContext *sym_ctx); > - > - typedef void *(*SWIGPythonCreateOSPlugin)(const char *python_class_name, > - const char > *session_dictionary_name, > - const lldb::ProcessSP > &process_sp); > - > - typedef void *(*SWIGPythonCreateFrameRecognizer)( > - const char *python_class_name, const char *session_dictionary_name); > - > - typedef void *(*SWIGPythonGetRecognizedArguments)( > - void *implementor, const lldb::StackFrameSP &frame_sp); > - > - typedef size_t (*SWIGPythonCalculateNumChildren)(void *implementor, > - uint32_t max); > - > - typedef void *(*SWIGPythonGetChildAtIndex)(void *implementor, uint32_t > idx); > - > - typedef int (*SWIGPythonGetIndexOfChildWithName)(void *implementor, > - const char *child_name); > - > - typedef void *(*SWIGPythonCastPyObjectToSBValue)(void *data); > - > - typedef lldb::ValueObjectSP (*SWIGPythonGetValueObjectSPFromSBValue)( > - void *data); > - > - typedef bool (*SWIGPythonUpdateSynthProviderInstance)(void *data); > - > - typedef bool (*SWIGPythonMightHaveChildrenSynthProviderInstance)(void > *data); > - > - typedef void *(*SWIGPythonGetValueSynthProviderInstance)(void > *implementor); > - > - typedef bool (*SWIGPythonCallCommand)( > - const char *python_function_name, const char *session_dictionary_name, > - lldb::DebuggerSP &debugger, const char *args, > - lldb_private::CommandReturnObject &cmd_retobj, > - lldb::ExecutionContextRefSP exe_ctx_ref_sp); > - > - typedef bool (*SWIGPythonCallCommandObject)( > - void *implementor, lldb::DebuggerSP &debugger, const char *args, > - lldb_private::CommandReturnObject &cmd_retobj, > - lldb::ExecutionContextRefSP exe_ctx_ref_sp); > - > - typedef bool (*SWIGPythonCallModuleInit)(const char *python_module_name, > - const char > *session_dictionary_name, > - lldb::DebuggerSP &debugger); > - > - typedef bool (*SWIGPythonScriptKeyword_Process)( > - const char *python_function_name, const char *session_dictionary_name, > - lldb::ProcessSP &process, std::string &output); > - > - typedef bool (*SWIGPythonScriptKeyword_Thread)( > - const char *python_function_name, const char *session_dictionary_name, > - lldb::ThreadSP &thread, std::string &output); > - > - typedef bool (*SWIGPythonScriptKeyword_Target)( > - const char *python_function_name, const char *session_dictionary_name, > - lldb::TargetSP &target, std::string &output); > - > - typedef bool (*SWIGPythonScriptKeyword_Frame)( > - const char *python_function_name, const char *session_dictionary_name, > - lldb::StackFrameSP &frame, std::string &output); > - > - typedef bool (*SWIGPythonScriptKeyword_Value)( > - const char *python_function_name, const char *session_dictionary_name, > - lldb::ValueObjectSP &value, std::string &output); > - > - typedef void *(*SWIGPython_GetDynamicSetting)( > - void *module, const char *setting, const lldb::TargetSP &target_sp); > - > static void InitializePrivate(); > > - static void InitializeInterpreter( > - SWIGInitCallback python_swig_init_callback, > - SWIGBreakpointCallbackFunction swig_breakpoint_callback, > - SWIGWatchpointCallbackFunction swig_watchpoint_callback, > - SWIGPythonTypeScriptCallbackFunction swig_typescript_callback, > - SWIGPythonCreateSyntheticProvider swig_synthetic_script, > - SWIGPythonCreateCommandObject swig_create_cmd, > - SWIGPythonCalculateNumChildren swig_calc_children, > - SWIGPythonGetChildAtIndex swig_get_child_index, > - SWIGPythonGetIndexOfChildWithName swig_get_index_child, > - SWIGPythonCastPyObjectToSBValue swig_cast_to_sbvalue, > - SWIGPythonGetValueObjectSPFromSBValue swig_get_valobj_sp_from_sbvalue, > - SWIGPythonUpdateSynthProviderInstance swig_update_provider, > - SWIGPythonMightHaveChildrenSynthProviderInstance > - swig_mighthavechildren_provider, > - SWIGPythonGetValueSynthProviderInstance swig_getvalue_provider, > - SWIGPythonCallCommand swig_call_command, > - SWIGPythonCallCommandObject swig_call_command_object, > - SWIGPythonCallModuleInit swig_call_module_init, > - SWIGPythonCreateOSPlugin swig_create_os_plugin, > - SWIGPythonCreateFrameRecognizer swig_create_frame_recognizer, > - SWIGPythonGetRecognizedArguments swig_get_recognized_arguments, > - SWIGPythonScriptKeyword_Process swig_run_script_keyword_process, > - SWIGPythonScriptKeyword_Thread swig_run_script_keyword_thread, > - SWIGPythonScriptKeyword_Target swig_run_script_keyword_target, > - SWIGPythonScriptKeyword_Frame swig_run_script_keyword_frame, > - SWIGPythonScriptKeyword_Value swig_run_script_keyword_value, > - SWIGPython_GetDynamicSetting swig_plugin_get, > - SWIGPythonCreateScriptedThreadPlan swig_thread_plan_script, > - SWIGPythonCallThreadPlan swig_call_thread_plan, > - SWIGPythonCreateScriptedBreakpointResolver swig_bkpt_resolver_script, > - SWIGPythonCallBreakpointResolver swig_call_breakpoint_resolver); > - > class SynchronicityHandler { > private: > lldb::DebuggerSP m_debugger_sp; > @@ -587,38 +439,6 @@ protected: > bool m_valid_session; > uint32_t m_lock_count; > PyThreadState *m_command_thread_state; > - > - static SWIGBreakpointCallbackFunction g_swig_breakpoint_callback; > - static SWIGWatchpointCallbackFunction g_swig_watchpoint_callback; > - static SWIGPythonTypeScriptCallbackFunction g_swig_typescript_callback; > - static SWIGPythonCreateSyntheticProvider g_swig_synthetic_script; > - static SWIGPythonCreateCommandObject g_swig_create_cmd; > - static SWIGPythonCalculateNumChildren g_swig_calc_children; > - static SWIGPythonGetChildAtIndex g_swig_get_child_index; > - static SWIGPythonGetIndexOfChildWithName g_swig_get_index_child; > - static SWIGPythonCastPyObjectToSBValue g_swig_cast_to_sbvalue; > - static SWIGPythonGetValueObjectSPFromSBValue > - g_swig_get_valobj_sp_from_sbvalue; > - static SWIGPythonUpdateSynthProviderInstance g_swig_update_provider; > - static SWIGPythonMightHaveChildrenSynthProviderInstance > - g_swig_mighthavechildren_provider; > - static SWIGPythonGetValueSynthProviderInstance g_swig_getvalue_provider; > - static SWIGPythonCallCommand g_swig_call_command; > - static SWIGPythonCallCommandObject g_swig_call_command_object; > - static SWIGPythonCallModuleInit g_swig_call_module_init; > - static SWIGPythonCreateOSPlugin g_swig_create_os_plugin; > - static SWIGPythonCreateFrameRecognizer g_swig_create_frame_recognizer; > - static SWIGPythonGetRecognizedArguments g_swig_get_recognized_arguments; > - static SWIGPythonScriptKeyword_Process g_swig_run_script_keyword_process; > - static SWIGPythonScriptKeyword_Thread g_swig_run_script_keyword_thread; > - static SWIGPythonScriptKeyword_Target g_swig_run_script_keyword_target; > - static SWIGPythonScriptKeyword_Frame g_swig_run_script_keyword_frame; > - static SWIGPythonScriptKeyword_Value g_swig_run_script_keyword_value; > - static SWIGPython_GetDynamicSetting g_swig_plugin_get; > - static SWIGPythonCreateScriptedThreadPlan g_swig_thread_plan_script; > - static SWIGPythonCallThreadPlan g_swig_call_thread_plan; > - static SWIGPythonCreateScriptedBreakpointResolver > g_swig_bkpt_resolver_script; > - static SWIGPythonCallBreakpointResolver g_swig_call_bkpt_resolver; > }; > > } // namespace lldb_private > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits