From e724aab52f17ec7cbc07128640151258140864d3 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Wed, 2 Nov 2022 13:57:49 -0700 Subject: [PATCH] [lldb] Add an option for playground transformation "high performance" mode Add an option to control "high performance" mode for Swift Playgrounds transformations. rdar://101554275 (cherry picked from commit a83966d65be024d46ccb5b8e141c06fa9d4dc288) --- lldb/include/lldb/API/SBExpressionOptions.h | 5 +++++ lldb/include/lldb/Target/Target.h | 9 +++++++++ lldb/source/API/SBExpressionOptions.cpp | 9 +++++++++ .../ExpressionParser/Swift/SwiftExpressionParser.cpp | 4 +++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lldb/include/lldb/API/SBExpressionOptions.h b/lldb/include/lldb/API/SBExpressionOptions.h index 779a32f9cdda0..2b506b45a6e67 100644 --- a/lldb/include/lldb/API/SBExpressionOptions.h +++ b/lldb/include/lldb/API/SBExpressionOptions.h @@ -74,6 +74,11 @@ class LLDB_API SBExpressionOptions { void SetPlaygroundTransformEnabled(bool enable_playground_transform = true); + bool GetPlaygroundTransformHighPerformance() const; + + void + SetPlaygroundTransformHighPerformance(bool playground_transforms_hp = true); + bool GetREPLMode() const; void SetREPLMode(bool enable_repl_mode = true); diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h index cd8c16c32a55e..0f0c27f885d89 100644 --- a/lldb/include/lldb/Target/Target.h +++ b/lldb/include/lldb/Target/Target.h @@ -433,6 +433,14 @@ class EvaluateExpressionOptions { m_language = lldb::eLanguageTypeSwift; } + bool GetPlaygroundTransformHighPerformance() const { + return m_playground_transforms_hp; + } + + void SetPlaygroundTransformHighPerformance(bool b) { + m_playground_transforms_hp = b; + } + void SetCancelCallback(lldb::ExpressionCancelCallback callback, void *baton) { m_cancel_callback_baton = baton; m_cancel_callback = callback; @@ -500,6 +508,7 @@ class EvaluateExpressionOptions { bool m_trap_exceptions = true; bool m_repl = false; bool m_playground = false; + bool m_playground_transforms_hp = true; bool m_generate_debug_info = false; bool m_ansi_color_errors = false; bool m_result_is_internal = false; diff --git a/lldb/source/API/SBExpressionOptions.cpp b/lldb/source/API/SBExpressionOptions.cpp index b574f6fb21c54..15b86ce4c217f 100644 --- a/lldb/source/API/SBExpressionOptions.cpp +++ b/lldb/source/API/SBExpressionOptions.cpp @@ -174,6 +174,15 @@ void SBExpressionOptions::SetPlaygroundTransformEnabled( m_opaque_up->SetPlaygroundTransformEnabled(enable_playground_transform); } +bool SBExpressionOptions::GetPlaygroundTransformHighPerformance() const { + return m_opaque_up->GetPlaygroundTransformHighPerformance(); +} + +void SBExpressionOptions::SetPlaygroundTransformHighPerformance( + bool playground_transforms_hp) { + m_opaque_up->SetPlaygroundTransformHighPerformance(playground_transforms_hp); +} + bool SBExpressionOptions::GetREPLMode() const { return m_opaque_up->GetREPLEnabled(); } diff --git a/lldb/source/Plugins/ExpressionParser/Swift/SwiftExpressionParser.cpp b/lldb/source/Plugins/ExpressionParser/Swift/SwiftExpressionParser.cpp index 57b466a784076..e9dff211e0f9b 100644 --- a/lldb/source/Plugins/ExpressionParser/Swift/SwiftExpressionParser.cpp +++ b/lldb/source/Plugins/ExpressionParser/Swift/SwiftExpressionParser.cpp @@ -1567,7 +1567,9 @@ unsigned SwiftExpressionParser::Parse(DiagnosticManager &diagnostic_manager, return 1; } } else { - swift::performPlaygroundTransform(parsed_expr->source_file, true); + swift::performPlaygroundTransform( + parsed_expr->source_file, + m_options.GetPlaygroundTransformHighPerformance()); } // FIXME: We now should have to do the name binding and type