| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -74,6 +74,7 @@ class TypeSystem : public PluginInterface | |
| eKindClang, | ||
| eKindSwift, | ||
| eKindGo, | ||
| eKindJava, | ||
| kNumKinds | ||
| }; | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,5 @@ | ||
| add_subdirectory(CPlusPlus) | ||
| add_subdirectory(Go) | ||
| add_subdirectory(Java) | ||
| add_subdirectory(ObjC) | ||
| add_subdirectory(ObjCPlusPlus) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| add_lldb_library(lldbPluginJavaLanguage | ||
| JavaFormatterFunctions.cpp | ||
| JavaLanguage.cpp | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| //===-- JavaFormatterFunctions.cpp-------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| // C Includes | ||
| // C++ Includes | ||
| // Other libraries and framework includes | ||
| // Project includes | ||
| #include "JavaFormatterFunctions.h" | ||
| #include "lldb/DataFormatters/FormattersHelpers.h" | ||
| #include "lldb/DataFormatters/StringPrinter.h" | ||
|
|
||
| using namespace lldb; | ||
| using namespace lldb_private; | ||
| using namespace lldb_private::formatters; | ||
|
|
||
| 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; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| //===-- JavaFormatterFunctions.h---------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #ifndef liblldb_JavaFormatterFunctions_h_ | ||
| #define liblldb_JavaFormatterFunctions_h_ | ||
|
|
||
| // C Includes | ||
| // C++ Includes | ||
| // Other libraries and framework includes | ||
| // Project includes | ||
| #include "lldb/lldb-forward.h" | ||
|
|
||
| namespace lldb_private | ||
| { | ||
| namespace formatters | ||
| { | ||
|
|
||
| bool | ||
| JavaStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options); | ||
|
|
||
| } // namespace formatters | ||
| } // namespace lldb_private | ||
|
|
||
| #endif // liblldb_JavaFormatterFunctions_h_ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| //===-- JavaLanguage.cpp ----------------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| // C Includes | ||
| #include <string.h> | ||
| // C++ Includes | ||
| #include <functional> | ||
| #include <mutex> | ||
|
|
||
| // Other libraries and framework includes | ||
| #include "llvm/ADT/StringRef.h" | ||
|
|
||
| // Project includes | ||
| #include "JavaFormatterFunctions.h" | ||
| #include "JavaLanguage.h" | ||
| #include "lldb/Core/ConstString.h" | ||
| #include "lldb/Core/PluginManager.h" | ||
| #include "lldb/DataFormatters/DataVisualization.h" | ||
| #include "lldb/DataFormatters/FormattersHelpers.h" | ||
| #include "lldb/Symbol/JavaASTContext.h" | ||
|
|
||
| using namespace lldb; | ||
| using namespace lldb_private; | ||
| using namespace lldb_private::formatters; | ||
|
|
||
| void | ||
| JavaLanguage::Initialize() | ||
| { | ||
| PluginManager::RegisterPlugin(GetPluginNameStatic(), "Java Language", CreateInstance); | ||
| } | ||
|
|
||
| void | ||
| JavaLanguage::Terminate() | ||
| { | ||
| PluginManager::UnregisterPlugin(CreateInstance); | ||
| } | ||
|
|
||
| lldb_private::ConstString | ||
| JavaLanguage::GetPluginNameStatic() | ||
| { | ||
| static ConstString g_name("Java"); | ||
| return g_name; | ||
| } | ||
|
|
||
| lldb_private::ConstString | ||
| JavaLanguage::GetPluginName() | ||
| { | ||
| return GetPluginNameStatic(); | ||
| } | ||
|
|
||
| uint32_t | ||
| JavaLanguage::GetPluginVersion() | ||
| { | ||
| return 1; | ||
| } | ||
|
|
||
| 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; | ||
|
|
||
| // 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) | ||
| { | ||
| 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); | ||
| } | ||
| }); | ||
| return g_category; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| //===-- JavaLanguage.h ------------------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #ifndef liblldb_JavaLanguage_h_ | ||
| #define liblldb_JavaLanguage_h_ | ||
|
|
||
| // C Includes | ||
| // C++ Includes | ||
| #include <vector> | ||
|
|
||
| // Other libraries and framework includes | ||
| #include "llvm/ADT/StringRef.h" | ||
|
|
||
| // Project includes | ||
| #include "lldb/Core/ConstString.h" | ||
| #include "lldb/Target/Language.h" | ||
| #include "lldb/lldb-private.h" | ||
|
|
||
| namespace lldb_private | ||
| { | ||
|
|
||
| class JavaLanguage : public Language | ||
| { | ||
| public: | ||
| lldb::LanguageType | ||
| GetLanguageType() const override | ||
| { | ||
| return lldb::eLanguageTypeJava; | ||
| } | ||
|
|
||
| static void | ||
| Initialize(); | ||
|
|
||
| static void | ||
| Terminate(); | ||
|
|
||
| static lldb_private::Language * | ||
| CreateInstance(lldb::LanguageType language); | ||
|
|
||
| static lldb_private::ConstString | ||
| GetPluginNameStatic(); | ||
|
|
||
| ConstString | ||
| GetPluginName() override; | ||
|
|
||
| uint32_t | ||
| GetPluginVersion() override; | ||
|
|
||
| bool | ||
| IsNilReference(ValueObject &valobj) override; | ||
|
|
||
| lldb::TypeCategoryImplSP | ||
| GetFormatters(); | ||
| }; | ||
|
|
||
| } // namespace lldb_private | ||
|
|
||
| #endif // liblldb_JavaLanguage_h_ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,5 @@ | ||
| add_subdirectory(CPlusPlus) | ||
| add_subdirectory(ObjC) | ||
| add_subdirectory(Go) | ||
| add_subdirectory(Java) | ||
| add_subdirectory(RenderScript) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| add_lldb_library(lldbPluginLanguageRuntimeJava | ||
| JavaLanguageRuntime.cpp | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,176 @@ | ||
| //===-- JavaLanguageRuntime.cpp ---------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #include "JavaLanguageRuntime.h" | ||
|
|
||
| #include "lldb/Core/PluginManager.h" | ||
| #include "lldb/Symbol/JavaASTContext.h" | ||
| #include "lldb/Symbol/Symbol.h" | ||
| #include "lldb/Symbol/SymbolContext.h" | ||
| #include "lldb/Symbol/SymbolFile.h" | ||
| #include "lldb/Symbol/Type.h" | ||
| #include "lldb/Symbol/TypeList.h" | ||
| #include "lldb/Target/SectionLoadList.h" | ||
| #include "lldb/Target/Target.h" | ||
| #include "llvm/ADT/StringRef.h" | ||
|
|
||
| using namespace lldb; | ||
| using namespace lldb_private; | ||
|
|
||
| JavaLanguageRuntime::JavaLanguageRuntime(Process *process) : LanguageRuntime(process) | ||
| { | ||
| } | ||
|
|
||
| LanguageRuntime * | ||
| JavaLanguageRuntime::CreateInstance(Process *process, lldb::LanguageType language) | ||
| { | ||
| if (language == eLanguageTypeJava) | ||
| return new JavaLanguageRuntime(process); | ||
| return nullptr; | ||
| } | ||
|
|
||
| void | ||
| JavaLanguageRuntime::Initialize() | ||
| { | ||
| PluginManager::RegisterPlugin(GetPluginNameStatic(), "Java language runtime", CreateInstance); | ||
| } | ||
|
|
||
| void | ||
| JavaLanguageRuntime::Terminate() | ||
| { | ||
| PluginManager::UnregisterPlugin(CreateInstance); | ||
| } | ||
|
|
||
| lldb_private::ConstString | ||
| JavaLanguageRuntime::GetPluginNameStatic() | ||
| { | ||
| static ConstString g_name("java"); | ||
| return g_name; | ||
| } | ||
|
|
||
| lldb_private::ConstString | ||
| JavaLanguageRuntime::GetPluginName() | ||
| { | ||
| return GetPluginNameStatic(); | ||
| } | ||
|
|
||
| uint32_t | ||
| JavaLanguageRuntime::GetPluginVersion() | ||
| { | ||
| return 1; | ||
| } | ||
|
|
||
| bool | ||
| JavaLanguageRuntime::CouldHaveDynamicValue(ValueObject &in_value) | ||
| { | ||
| return true; | ||
| } | ||
|
|
||
| static ConstString | ||
| GetDynamicTypeId(ExecutionContext *exe_ctx, Target *target, ValueObject &in_value) | ||
| { | ||
| SymbolContext sc; | ||
| TypeList class_types; | ||
| llvm::DenseSet<SymbolFile *> searched_symbol_files; | ||
| size_t num_matches = target->GetImages().FindTypes(sc, ConstString("Object"), | ||
| true, // name_is_fully_qualified | ||
| UINT32_MAX, searched_symbol_files, class_types); | ||
| for (size_t i = 0; i < num_matches; ++i) | ||
| { | ||
| TypeSP type_sp = class_types.GetTypeAtIndex(i); | ||
| CompilerType compiler_type = type_sp->GetFullCompilerType(); | ||
|
|
||
| if (compiler_type.GetMinimumLanguage() != eLanguageTypeJava || | ||
| compiler_type.GetTypeName() != ConstString("java::lang::Object")) | ||
| continue; | ||
|
|
||
| if (compiler_type.GetCompleteType() && compiler_type.IsCompleteType()) | ||
| { | ||
| uint64_t type_id = JavaASTContext::CalculateDynamicTypeId(exe_ctx, compiler_type, in_value); | ||
| if (type_id != UINT64_MAX) | ||
| { | ||
| char id[32]; | ||
| snprintf(id, sizeof(id), "0x%" PRIX64, type_id); | ||
| return ConstString(id); | ||
| } | ||
| } | ||
| } | ||
| return ConstString(); | ||
| } | ||
|
|
||
| bool | ||
| JavaLanguageRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, | ||
| TypeAndOrName &class_type_or_name, Address &dynamic_address, | ||
| Value::ValueType &value_type) | ||
| { | ||
| class_type_or_name.Clear(); | ||
|
|
||
| // null references don't have a dynamic type | ||
| if (in_value.IsNilReference()) | ||
| return false; | ||
|
|
||
| ExecutionContext exe_ctx(in_value.GetExecutionContextRef()); | ||
| Target *target = exe_ctx.GetTargetPtr(); | ||
| if (!target) | ||
| return false; | ||
|
|
||
| ConstString linkage_name; | ||
| CompilerType in_type = in_value.GetCompilerType(); | ||
| if (in_type.IsPossibleDynamicType(nullptr, false, false)) | ||
| linkage_name = GetDynamicTypeId(&exe_ctx, target, in_value); | ||
| else | ||
| linkage_name = JavaASTContext::GetLinkageName(in_type); | ||
|
|
||
| if (!linkage_name) | ||
| return false; | ||
|
|
||
| class_type_or_name.SetName(in_type.GetNonReferenceType().GetTypeName()); | ||
|
|
||
| SymbolContext sc; | ||
| TypeList class_types; | ||
| llvm::DenseSet<SymbolFile *> searched_symbol_files; | ||
| size_t num_matches = target->GetImages().FindTypes(sc, linkage_name, | ||
| true, // name_is_fully_qualified | ||
| UINT32_MAX, searched_symbol_files, class_types); | ||
|
|
||
| for (size_t i = 0; i < num_matches; ++i) | ||
| { | ||
| TypeSP type_sp = class_types.GetTypeAtIndex(i); | ||
| CompilerType compiler_type = type_sp->GetFullCompilerType(); | ||
|
|
||
| if (compiler_type.GetMinimumLanguage() != eLanguageTypeJava) | ||
| continue; | ||
|
|
||
| if (compiler_type.GetCompleteType() && compiler_type.IsCompleteType()) | ||
| { | ||
| class_type_or_name.SetTypeSP(type_sp); | ||
|
|
||
| Value &value = in_value.GetValue(); | ||
| value_type = value.GetValueType(); | ||
| dynamic_address.SetRawAddress(value.GetScalar().ULongLong(0)); | ||
| return true; | ||
| } | ||
| } | ||
| return false; | ||
| } | ||
|
|
||
| TypeAndOrName | ||
| JavaLanguageRuntime::FixUpDynamicType(const TypeAndOrName &type_and_or_name, ValueObject &static_value) | ||
| { | ||
| CompilerType static_type(static_value.GetCompilerType()); | ||
|
|
||
| TypeAndOrName ret(type_and_or_name); | ||
| if (type_and_or_name.HasType()) | ||
| { | ||
| CompilerType orig_type = type_and_or_name.GetCompilerType(); | ||
| if (static_type.IsReferenceType()) | ||
| ret.SetCompilerType(orig_type.GetLValueReferenceType()); | ||
| } | ||
| return ret; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,90 @@ | ||
| //===-- JavaLanguageRuntime.h -----------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #ifndef liblldb_JavaLanguageRuntime_h_ | ||
| #define liblldb_JavaLanguageRuntime_h_ | ||
|
|
||
| // C Includes | ||
| // C++ Includes | ||
| #include <vector> | ||
| // Other libraries and framework includes | ||
| // Project includes | ||
| #include "lldb/Core/PluginInterface.h" | ||
| #include "lldb/Target/LanguageRuntime.h" | ||
| #include "lldb/lldb-private.h" | ||
|
|
||
| namespace lldb_private | ||
| { | ||
|
|
||
| class JavaLanguageRuntime : public LanguageRuntime | ||
| { | ||
| public: | ||
| static void | ||
| Initialize(); | ||
|
|
||
| static void | ||
| Terminate(); | ||
|
|
||
| static lldb_private::LanguageRuntime * | ||
| CreateInstance(Process *process, lldb::LanguageType language); | ||
|
|
||
| static lldb_private::ConstString | ||
| GetPluginNameStatic(); | ||
|
|
||
| lldb_private::ConstString | ||
| GetPluginName() override; | ||
|
|
||
| uint32_t | ||
| GetPluginVersion() override; | ||
|
|
||
| lldb::LanguageType | ||
| GetLanguageType() const override | ||
| { | ||
| return lldb::eLanguageTypeJava; | ||
| } | ||
|
|
||
| bool | ||
| GetObjectDescription(Stream &str, ValueObject &object) override | ||
| { | ||
| return false; | ||
| } | ||
|
|
||
| bool | ||
| GetObjectDescription(Stream &str, Value &value, ExecutionContextScope *exe_scope) override | ||
| { | ||
| return false; | ||
| } | ||
|
|
||
| lldb::BreakpointResolverSP | ||
| CreateExceptionResolver(Breakpoint *bkpt, bool catch_bp, bool throw_bp) override | ||
| { | ||
| return nullptr; | ||
| } | ||
|
|
||
| TypeAndOrName | ||
| FixUpDynamicType(const TypeAndOrName &type_and_or_name, ValueObject &static_value) override; | ||
|
|
||
| bool | ||
| CouldHaveDynamicValue(ValueObject &in_value) override; | ||
|
|
||
| bool | ||
| GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, | ||
| TypeAndOrName &class_type_or_name, Address &address, | ||
| Value::ValueType &value_type) override; | ||
|
|
||
| protected: | ||
| JavaLanguageRuntime(Process *process); | ||
|
|
||
| private: | ||
| DISALLOW_COPY_AND_ASSIGN(JavaLanguageRuntime); | ||
| }; | ||
|
|
||
| } // namespace lldb_private | ||
|
|
||
| #endif // liblldb_JavaLanguageRuntime_h_ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,90 @@ | ||
| //===-- DWARFASTParserJava.h ------------------------------------*- C++ -*-===// | ||
| // | ||
| // The LLVM Compiler Infrastructure | ||
| // | ||
| // This file is distributed under the University of Illinois Open Source | ||
| // License. See LICENSE.TXT for details. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #ifndef SymbolFileDWARF_DWARFASTParserJava_h_ | ||
| #define SymbolFileDWARF_DWARFASTParserJava_h_ | ||
|
|
||
| // C Includes | ||
| // C++ Includes | ||
| // Other libraries and framework includes | ||
| #include "llvm/ADT/DenseMap.h" | ||
| #include "llvm/ADT/SmallPtrSet.h" | ||
| #include "llvm/ADT/SmallVector.h" | ||
|
|
||
| // Project includes | ||
| #include "DWARFASTParser.h" | ||
| #include "DWARFDIE.h" | ||
| #include "DWARFDefines.h" | ||
| #include "lldb/Core/PluginInterface.h" | ||
| #include "lldb/Symbol/JavaASTContext.h" | ||
|
|
||
| class DWARFDebugInfoEntry; | ||
| class DWARFDIECollection; | ||
|
|
||
| class DWARFASTParserJava : public DWARFASTParser | ||
| { | ||
| public: | ||
| DWARFASTParserJava(lldb_private::JavaASTContext &ast); | ||
| ~DWARFASTParserJava() override; | ||
|
|
||
| lldb::TypeSP | ||
| ParseTypeFromDWARF(const lldb_private::SymbolContext &sc, const DWARFDIE &die, lldb_private::Log *log, | ||
| bool *type_is_new_ptr) override; | ||
|
|
||
| lldb_private::Function * | ||
| ParseFunctionFromDWARF(const lldb_private::SymbolContext &sc, const DWARFDIE &die) override; | ||
|
|
||
| bool | ||
| CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, | ||
| lldb_private::CompilerType &java_type) override; | ||
|
|
||
| lldb_private::CompilerDeclContext | ||
| GetDeclContextForUIDFromDWARF(const DWARFDIE &die) override | ||
| { | ||
| return lldb_private::CompilerDeclContext(); | ||
| } | ||
|
|
||
| lldb_private::CompilerDeclContext | ||
| GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) override | ||
| { | ||
| return lldb_private::CompilerDeclContext(); | ||
| } | ||
|
|
||
| lldb_private::CompilerDecl | ||
| GetDeclForUIDFromDWARF(const DWARFDIE &die) override | ||
| { | ||
| return lldb_private::CompilerDecl(); | ||
| } | ||
|
|
||
| std::vector<DWARFDIE> | ||
| GetDIEForDeclContext(lldb_private::CompilerDeclContext decl_context) override | ||
| { | ||
| return std::vector<DWARFDIE>(); | ||
| } | ||
|
|
||
| void | ||
| ParseChildMembers(const DWARFDIE &parent_die, lldb_private::CompilerType &class_compiler_type); | ||
|
|
||
| private: | ||
| lldb_private::JavaASTContext &m_ast; | ||
|
|
||
| lldb::TypeSP | ||
| ParseBaseTypeFromDIE(const DWARFDIE &die); | ||
|
|
||
| lldb::TypeSP | ||
| ParseArrayTypeFromDIE(const DWARFDIE &die); | ||
|
|
||
| lldb::TypeSP | ||
| ParseReferenceTypeFromDIE(const DWARFDIE &die); | ||
|
|
||
| lldb::TypeSP | ||
| ParseClassTypeFromDIE(const DWARFDIE &die, bool &is_new_type); | ||
| }; | ||
|
|
||
| #endif // SymbolFileDWARF_DWARFASTParserJava_h_ |