diff options
Diffstat (limited to 'source/Plugins/Language/Java')
| -rw-r--r-- | source/Plugins/Language/Java/JavaFormatterFunctions.cpp | 281 | ||||
| -rw-r--r-- | source/Plugins/Language/Java/JavaFormatterFunctions.h | 19 | ||||
| -rw-r--r-- | source/Plugins/Language/Java/JavaLanguage.cpp | 114 | ||||
| -rw-r--r-- | source/Plugins/Language/Java/JavaLanguage.h | 38 | 
4 files changed, 204 insertions, 248 deletions
| diff --git a/source/Plugins/Language/Java/JavaFormatterFunctions.cpp b/source/Plugins/Language/Java/JavaFormatterFunctions.cpp index 29e6ad0ee89f..286651a64409 100644 --- a/source/Plugins/Language/Java/JavaFormatterFunctions.cpp +++ b/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/source/Plugins/Language/Java/JavaFormatterFunctions.h b/source/Plugins/Language/Java/JavaFormatterFunctions.h index f9588c5590ae..d1983429529c 100644 --- a/source/Plugins/Language/Java/JavaFormatterFunctions.h +++ b/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/source/Plugins/Language/Java/JavaLanguage.cpp b/source/Plugins/Language/Java/JavaLanguage.cpp index a4f883f68827..f58b51f53e76 100644 --- a/source/Plugins/Language/Java/JavaLanguage.cpp +++ b/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/source/Plugins/Language/Java/JavaLanguage.h b/source/Plugins/Language/Java/JavaLanguage.h index 164facd27ab5..6cf27ab5ffa4 100644 --- a/source/Plugins/Language/Java/JavaLanguage.h +++ b/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 | 
