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