diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Plugins/Language/Java')
4 files changed, 204 insertions, 248 deletions
diff --git a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.cpp b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.cpp index 29e6ad0..286651a 100644 --- a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.cpp +++ b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.cpp @@ -20,167 +20,148 @@ using namespace lldb; using namespace lldb_private; using namespace lldb_private::formatters; -namespace -{ +namespace { -class JavaArraySyntheticFrontEnd : public SyntheticChildrenFrontEnd -{ +class JavaArraySyntheticFrontEnd : public SyntheticChildrenFrontEnd { public: - JavaArraySyntheticFrontEnd(lldb::ValueObjectSP valobj_sp) : - SyntheticChildrenFrontEnd(*valobj_sp) - { - if (valobj_sp) - Update(); - } - - size_t - CalculateNumChildren() override - { - ValueObjectSP valobj = GetDereferencedValueObject(); - if (!valobj) - return 0; - - CompilerType type = valobj->GetCompilerType(); - uint32_t size = JavaASTContext::CalculateArraySize(type, *valobj); - if (size == UINT32_MAX) - return 0; - return size; - } - - lldb::ValueObjectSP - GetChildAtIndex(size_t idx) override - { - ValueObjectSP valobj = GetDereferencedValueObject(); - if (!valobj) - return nullptr; - - ProcessSP process_sp = valobj->GetProcessSP(); - if (!process_sp) - return nullptr; - - CompilerType type = valobj->GetCompilerType(); - CompilerType element_type = type.GetArrayElementType(); - lldb::addr_t address = valobj->GetAddressOf() + JavaASTContext::CalculateArrayElementOffset(type, idx); - - Error error; - size_t byte_size = element_type.GetByteSize(nullptr); - DataBufferSP buffer_sp(new DataBufferHeap(byte_size, 0)); - size_t bytes_read = process_sp->ReadMemory(address, buffer_sp->GetBytes(), byte_size, error); - if (error.Fail() || byte_size != bytes_read) - return nullptr; - - StreamString name; - name.Printf("[%" PRIu64 "]", (uint64_t)idx); - DataExtractor data(buffer_sp, process_sp->GetByteOrder(), process_sp->GetAddressByteSize()); - return CreateValueObjectFromData(name.GetData(), data, valobj->GetExecutionContextRef(), - element_type); - } - - bool - Update() override - { - return false; - } - - bool - MightHaveChildren() override - { - return true; - } - - size_t - GetIndexOfChildWithName(const ConstString &name) override - { - return ExtractIndexFromString(name.GetCString()); - } + JavaArraySyntheticFrontEnd(lldb::ValueObjectSP valobj_sp) + : SyntheticChildrenFrontEnd(*valobj_sp) { + if (valobj_sp) + Update(); + } + + size_t CalculateNumChildren() override { + ValueObjectSP valobj = GetDereferencedValueObject(); + if (!valobj) + return 0; + + CompilerType type = valobj->GetCompilerType(); + uint32_t size = JavaASTContext::CalculateArraySize(type, *valobj); + if (size == UINT32_MAX) + return 0; + return size; + } + + lldb::ValueObjectSP GetChildAtIndex(size_t idx) override { + ValueObjectSP valobj = GetDereferencedValueObject(); + if (!valobj) + return nullptr; + + ProcessSP process_sp = valobj->GetProcessSP(); + if (!process_sp) + return nullptr; + + CompilerType type = valobj->GetCompilerType(); + CompilerType element_type = type.GetArrayElementType(); + lldb::addr_t address = + valobj->GetAddressOf() + + JavaASTContext::CalculateArrayElementOffset(type, idx); + + Error error; + size_t byte_size = element_type.GetByteSize(nullptr); + DataBufferSP buffer_sp(new DataBufferHeap(byte_size, 0)); + size_t bytes_read = process_sp->ReadMemory(address, buffer_sp->GetBytes(), + byte_size, error); + if (error.Fail() || byte_size != bytes_read) + return nullptr; + + StreamString name; + name.Printf("[%" PRIu64 "]", (uint64_t)idx); + DataExtractor data(buffer_sp, process_sp->GetByteOrder(), + process_sp->GetAddressByteSize()); + return CreateValueObjectFromData( + name.GetString(), data, valobj->GetExecutionContextRef(), element_type); + } + + bool Update() override { return false; } + + bool MightHaveChildren() override { return true; } + + size_t GetIndexOfChildWithName(const ConstString &name) override { + return ExtractIndexFromString(name.GetCString()); + } private: - ValueObjectSP - GetDereferencedValueObject() - { - if (!m_backend.IsPointerOrReferenceType()) - return m_backend.GetSP(); - - Error error; - return m_backend.Dereference(error); - } + ValueObjectSP GetDereferencedValueObject() { + if (!m_backend.IsPointerOrReferenceType()) + return m_backend.GetSP(); + + Error error; + return m_backend.Dereference(error); + } }; } // end of anonymous namespace -bool -lldb_private::formatters::JavaStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &opts) -{ - if (valobj.IsPointerOrReferenceType()) - { - Error error; - ValueObjectSP deref = valobj.Dereference(error); - if (error.Fail()) - return false; - return JavaStringSummaryProvider(*deref, stream, opts); - } - - ProcessSP process_sp = valobj.GetProcessSP(); - if (!process_sp) - return false; - - ConstString data_name("value"); - ConstString length_name("count"); - - ValueObjectSP length_sp = valobj.GetChildMemberWithName(length_name, true); - ValueObjectSP data_sp = valobj.GetChildMemberWithName(data_name, true); - if (!data_sp || !length_sp) - return false; - - bool success = false; - uint64_t length = length_sp->GetValueAsUnsigned(0, &success); - if (!success) - return false; - - if (length == 0) - { - stream.Printf("\"\""); - return true; - } - lldb::addr_t valobj_addr = data_sp->GetAddressOf(); - - StringPrinter::ReadStringAndDumpToStreamOptions options(valobj); - options.SetLocation(valobj_addr); - options.SetProcessSP(process_sp); - options.SetStream(&stream); - options.SetSourceSize(length); - options.SetNeedsZeroTermination(false); - options.SetLanguage(eLanguageTypeJava); - - if (StringPrinter::ReadStringAndDumpToStream<StringPrinter::StringElementType::UTF16>(options)) - return true; - - stream.Printf("Summary Unavailable"); +bool lldb_private::formatters::JavaStringSummaryProvider( + ValueObject &valobj, Stream &stream, const TypeSummaryOptions &opts) { + if (valobj.IsPointerOrReferenceType()) { + Error error; + ValueObjectSP deref = valobj.Dereference(error); + if (error.Fail()) + return false; + return JavaStringSummaryProvider(*deref, stream, opts); + } + + ProcessSP process_sp = valobj.GetProcessSP(); + if (!process_sp) + return false; + + ConstString data_name("value"); + ConstString length_name("count"); + + ValueObjectSP length_sp = valobj.GetChildMemberWithName(length_name, true); + ValueObjectSP data_sp = valobj.GetChildMemberWithName(data_name, true); + if (!data_sp || !length_sp) + return false; + + bool success = false; + uint64_t length = length_sp->GetValueAsUnsigned(0, &success); + if (!success) + return false; + + if (length == 0) { + stream.Printf("\"\""); + return true; + } + lldb::addr_t valobj_addr = data_sp->GetAddressOf(); + + StringPrinter::ReadStringAndDumpToStreamOptions options(valobj); + options.SetLocation(valobj_addr); + options.SetProcessSP(process_sp); + options.SetStream(&stream); + options.SetSourceSize(length); + options.SetNeedsZeroTermination(false); + options.SetLanguage(eLanguageTypeJava); + + if (StringPrinter::ReadStringAndDumpToStream< + StringPrinter::StringElementType::UTF16>(options)) return true; + + stream.Printf("Summary Unavailable"); + return true; } -bool -lldb_private::formatters::JavaArraySummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) -{ - if (valobj.IsPointerOrReferenceType()) - { - Error error; - ValueObjectSP deref = valobj.Dereference(error); - if (error.Fail()) - return false; - return JavaArraySummaryProvider(*deref, stream, options); - } - - CompilerType type = valobj.GetCompilerType(); - uint32_t size = JavaASTContext::CalculateArraySize(type, valobj); - if (size == UINT32_MAX) - return false; - stream.Printf("[%u]{...}", size); - return true; +bool lldb_private::formatters::JavaArraySummaryProvider( + ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) { + if (valobj.IsPointerOrReferenceType()) { + Error error; + ValueObjectSP deref = valobj.Dereference(error); + if (error.Fail()) + return false; + return JavaArraySummaryProvider(*deref, stream, options); + } + + CompilerType type = valobj.GetCompilerType(); + uint32_t size = JavaASTContext::CalculateArraySize(type, valobj); + if (size == UINT32_MAX) + return false; + stream.Printf("[%u]{...}", size); + return true; } -SyntheticChildrenFrontEnd* -lldb_private::formatters::JavaArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP valobj_sp) -{ - return valobj_sp ? new JavaArraySyntheticFrontEnd(valobj_sp) : nullptr; +SyntheticChildrenFrontEnd * +lldb_private::formatters::JavaArraySyntheticFrontEndCreator( + CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp) { + return valobj_sp ? new JavaArraySyntheticFrontEnd(valobj_sp) : nullptr; } diff --git a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.h b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.h index f9588c5..d198342 100644 --- a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.h +++ b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaFormatterFunctions.h @@ -16,19 +16,18 @@ // Project includes #include "lldb/lldb-forward.h" -namespace lldb_private -{ -namespace formatters -{ +namespace lldb_private { +namespace formatters { -bool -JavaStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options); +bool JavaStringSummaryProvider(ValueObject &valobj, Stream &stream, + const TypeSummaryOptions &options); -bool -JavaArraySummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options); +bool JavaArraySummaryProvider(ValueObject &valobj, Stream &stream, + const TypeSummaryOptions &options); -SyntheticChildrenFrontEnd* -JavaArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP valobj_sp); +SyntheticChildrenFrontEnd * +JavaArraySyntheticFrontEndCreator(CXXSyntheticChildren *, + lldb::ValueObjectSP valobj_sp); } // namespace formatters } // namespace lldb_private diff --git a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.cpp b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.cpp index a4f883f..f58b51f 100644 --- a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.cpp +++ b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.cpp @@ -29,84 +29,72 @@ using namespace lldb; using namespace lldb_private; using namespace lldb_private::formatters; -void -JavaLanguage::Initialize() -{ - PluginManager::RegisterPlugin(GetPluginNameStatic(), "Java Language", CreateInstance); +void JavaLanguage::Initialize() { + PluginManager::RegisterPlugin(GetPluginNameStatic(), "Java Language", + CreateInstance); } -void -JavaLanguage::Terminate() -{ - PluginManager::UnregisterPlugin(CreateInstance); +void JavaLanguage::Terminate() { + PluginManager::UnregisterPlugin(CreateInstance); } -lldb_private::ConstString -JavaLanguage::GetPluginNameStatic() -{ - static ConstString g_name("Java"); - return g_name; +lldb_private::ConstString JavaLanguage::GetPluginNameStatic() { + static ConstString g_name("Java"); + return g_name; } -lldb_private::ConstString -JavaLanguage::GetPluginName() -{ - return GetPluginNameStatic(); +lldb_private::ConstString JavaLanguage::GetPluginName() { + return GetPluginNameStatic(); } -uint32_t -JavaLanguage::GetPluginVersion() -{ - return 1; -} +uint32_t JavaLanguage::GetPluginVersion() { return 1; } -Language * -JavaLanguage::CreateInstance(lldb::LanguageType language) -{ - if (language == eLanguageTypeJava) - return new JavaLanguage(); - return nullptr; +Language *JavaLanguage::CreateInstance(lldb::LanguageType language) { + if (language == eLanguageTypeJava) + return new JavaLanguage(); + return nullptr; } -bool -JavaLanguage::IsNilReference(ValueObject &valobj) -{ - if (!valobj.GetCompilerType().IsReferenceType()) - return false; +bool JavaLanguage::IsNilReference(ValueObject &valobj) { + if (!valobj.GetCompilerType().IsReferenceType()) + return false; - // If we failed to read the value then it is not a nil reference. - return valobj.GetValueAsUnsigned(UINT64_MAX) == 0; + // If we failed to read the value then it is not a nil reference. + return valobj.GetValueAsUnsigned(UINT64_MAX) == 0; } -lldb::TypeCategoryImplSP -JavaLanguage::GetFormatters() -{ - static std::once_flag g_initialize; - static TypeCategoryImplSP g_category; - - std::call_once(g_initialize, [this]() -> void { - DataVisualization::Categories::GetCategory(GetPluginName(), g_category); - if (g_category) - { - const char* array_regexp = "^.*\\[\\]&?$"; - - lldb::TypeSummaryImplSP string_summary_sp(new CXXFunctionSummaryFormat( - TypeSummaryImpl::Flags().SetDontShowChildren(true), lldb_private::formatters::JavaStringSummaryProvider, - "java.lang.String summary provider")); - g_category->GetTypeSummariesContainer()->Add(ConstString("java::lang::String"), string_summary_sp); - - lldb::TypeSummaryImplSP array_summary_sp(new CXXFunctionSummaryFormat( - TypeSummaryImpl::Flags().SetDontShowChildren(true), lldb_private::formatters::JavaArraySummaryProvider, - "Java array summary provider")); - g_category->GetRegexTypeSummariesContainer()->Add(RegularExpressionSP(new RegularExpression(array_regexp)), - array_summary_sp); +lldb::TypeCategoryImplSP JavaLanguage::GetFormatters() { + static std::once_flag g_initialize; + static TypeCategoryImplSP g_category; + + std::call_once(g_initialize, [this]() -> void { + DataVisualization::Categories::GetCategory(GetPluginName(), g_category); + if (g_category) { + llvm::StringRef array_regexp("^.*\\[\\]&?$"); + + lldb::TypeSummaryImplSP string_summary_sp(new CXXFunctionSummaryFormat( + TypeSummaryImpl::Flags().SetDontShowChildren(true), + lldb_private::formatters::JavaStringSummaryProvider, + "java.lang.String summary provider")); + g_category->GetTypeSummariesContainer()->Add( + ConstString("java::lang::String"), string_summary_sp); + + lldb::TypeSummaryImplSP array_summary_sp(new CXXFunctionSummaryFormat( + TypeSummaryImpl::Flags().SetDontShowChildren(true), + lldb_private::formatters::JavaArraySummaryProvider, + "Java array summary provider")); + g_category->GetRegexTypeSummariesContainer()->Add( + RegularExpressionSP(new RegularExpression(array_regexp)), + array_summary_sp); #ifndef LLDB_DISABLE_PYTHON - AddCXXSynthetic(g_category, lldb_private::formatters::JavaArraySyntheticFrontEndCreator, - "Java array synthetic children", ConstString(array_regexp), - SyntheticChildren::Flags().SetCascades(true), true); + AddCXXSynthetic( + g_category, + lldb_private::formatters::JavaArraySyntheticFrontEndCreator, + "Java array synthetic children", ConstString(array_regexp), + SyntheticChildren::Flags().SetCascades(true), true); #endif - } - }); - return g_category; + } + }); + return g_category; } diff --git a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.h b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.h index 164facd..6cf27ab 100644 --- a/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.h +++ b/contrib/llvm/tools/lldb/source/Plugins/Language/Java/JavaLanguage.h @@ -22,41 +22,29 @@ #include "lldb/Target/Language.h" #include "lldb/lldb-private.h" -namespace lldb_private -{ +namespace lldb_private { -class JavaLanguage : public Language -{ +class JavaLanguage : public Language { public: - lldb::LanguageType - GetLanguageType() const override - { - return lldb::eLanguageTypeJava; - } + lldb::LanguageType GetLanguageType() const override { + return lldb::eLanguageTypeJava; + } - static void - Initialize(); + static void Initialize(); - static void - Terminate(); + static void Terminate(); - static lldb_private::Language * - CreateInstance(lldb::LanguageType language); + static lldb_private::Language *CreateInstance(lldb::LanguageType language); - static lldb_private::ConstString - GetPluginNameStatic(); + static lldb_private::ConstString GetPluginNameStatic(); - ConstString - GetPluginName() override; + ConstString GetPluginName() override; - uint32_t - GetPluginVersion() override; + uint32_t GetPluginVersion() override; - bool - IsNilReference(ValueObject &valobj) override; + bool IsNilReference(ValueObject &valobj) override; - lldb::TypeCategoryImplSP - GetFormatters() override; + lldb::TypeCategoryImplSP GetFormatters() override; }; } // namespace lldb_private |