aboutsummaryrefslogtreecommitdiff
path: root/source/Symbol/JavaASTContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Symbol/JavaASTContext.cpp')
-rw-r--r--source/Symbol/JavaASTContext.cpp2290
1 files changed, 1031 insertions, 1259 deletions
diff --git a/source/Symbol/JavaASTContext.cpp b/source/Symbol/JavaASTContext.cpp
index 45cda8d5112b..79073a653676 100644
--- a/source/Symbol/JavaASTContext.cpp
+++ b/source/Symbol/JavaASTContext.cpp
@@ -28,1534 +28,1306 @@
using namespace lldb;
using namespace lldb_private;
-namespace lldb_private
-{
+namespace lldb_private {
-class JavaASTContext::JavaType
-{
+class JavaASTContext::JavaType {
public:
- enum LLVMCastKind
- {
- eKindPrimitive,
- eKindObject,
- eKindReference,
- eKindArray,
- kNumKinds
- };
+ enum LLVMCastKind {
+ eKindPrimitive,
+ eKindObject,
+ eKindReference,
+ eKindArray,
+ kNumKinds
+ };
- JavaType(LLVMCastKind kind) : m_kind(kind) {}
+ JavaType(LLVMCastKind kind) : m_kind(kind) {}
- virtual ~JavaType() = default;
+ virtual ~JavaType() = default;
- virtual ConstString
- GetName() = 0;
+ virtual ConstString GetName() = 0;
- virtual void
- Dump(Stream *s) = 0;
+ virtual void Dump(Stream *s) = 0;
- virtual bool
- IsCompleteType() = 0;
+ virtual bool IsCompleteType() = 0;
- LLVMCastKind
- getKind() const
- {
- return m_kind;
- }
+ LLVMCastKind getKind() const { return m_kind; }
private:
- LLVMCastKind m_kind;
+ LLVMCastKind m_kind;
};
} // end of namespace lldb_private
-namespace
-{
+namespace {
-class JavaPrimitiveType : public JavaASTContext::JavaType
-{
+class JavaPrimitiveType : public JavaASTContext::JavaType {
public:
- enum TypeKind
- {
- eTypeByte,
- eTypeShort,
- eTypeInt,
- eTypeLong,
- eTypeFloat,
- eTypeDouble,
- eTypeBoolean,
- eTypeChar,
- };
-
- JavaPrimitiveType(TypeKind type_kind) : JavaType(JavaType::eKindPrimitive), m_type_kind(type_kind) {}
-
- ConstString
- GetName() override
- {
- switch (m_type_kind)
- {
- case eTypeByte:
- return ConstString("byte");
- case eTypeShort:
- return ConstString("short");
- case eTypeInt:
- return ConstString("int");
- case eTypeLong:
- return ConstString("long");
- case eTypeFloat:
- return ConstString("float");
- case eTypeDouble:
- return ConstString("double");
- case eTypeBoolean:
- return ConstString("boolean");
- case eTypeChar:
- return ConstString("char");
- }
- return ConstString();
+ enum TypeKind {
+ eTypeByte,
+ eTypeShort,
+ eTypeInt,
+ eTypeLong,
+ eTypeFloat,
+ eTypeDouble,
+ eTypeBoolean,
+ eTypeChar,
+ };
+
+ JavaPrimitiveType(TypeKind type_kind)
+ : JavaType(JavaType::eKindPrimitive), m_type_kind(type_kind) {}
+
+ ConstString GetName() override {
+ switch (m_type_kind) {
+ case eTypeByte:
+ return ConstString("byte");
+ case eTypeShort:
+ return ConstString("short");
+ case eTypeInt:
+ return ConstString("int");
+ case eTypeLong:
+ return ConstString("long");
+ case eTypeFloat:
+ return ConstString("float");
+ case eTypeDouble:
+ return ConstString("double");
+ case eTypeBoolean:
+ return ConstString("boolean");
+ case eTypeChar:
+ return ConstString("char");
}
+ return ConstString();
+ }
- TypeKind
- GetTypeKind()
- {
- return m_type_kind;
- }
+ TypeKind GetTypeKind() { return m_type_kind; }
- void
- Dump(Stream *s) override
- {
- s->Printf("%s\n", GetName().GetCString());
- }
+ void Dump(Stream *s) override { s->Printf("%s\n", GetName().GetCString()); }
- bool
- IsCompleteType() override
- {
- return true;
- }
+ bool IsCompleteType() override { return true; }
- static bool
- classof(const JavaType *jt)
- {
- return jt->getKind() == JavaType::eKindPrimitive;
- }
+ static bool classof(const JavaType *jt) {
+ return jt->getKind() == JavaType::eKindPrimitive;
+ }
private:
- const TypeKind m_type_kind;
+ const TypeKind m_type_kind;
};
-class JavaDynamicType : public JavaASTContext::JavaType
-{
+class JavaDynamicType : public JavaASTContext::JavaType {
public:
- JavaDynamicType(LLVMCastKind kind, const ConstString &linkage_name) :
- JavaType(kind),
- m_linkage_name(linkage_name),
- m_dynamic_type_id(nullptr)
- {
- }
+ JavaDynamicType(LLVMCastKind kind, const ConstString &linkage_name)
+ : JavaType(kind), m_linkage_name(linkage_name),
+ m_dynamic_type_id(nullptr) {}
- ConstString
- GetLinkageName() const
- {
- return m_linkage_name;
- }
+ ConstString GetLinkageName() const { return m_linkage_name; }
- void
- SetDynamicTypeId(const DWARFExpression &type_id)
- {
- m_dynamic_type_id = type_id;
- }
+ void SetDynamicTypeId(const DWARFExpression &type_id) {
+ m_dynamic_type_id = type_id;
+ }
- uint64_t
- CalculateDynamicTypeId(ExecutionContext *exe_ctx, ValueObject &value_obj)
- {
- if (!m_dynamic_type_id.IsValid())
- return UINT64_MAX;
-
- Value obj_load_address = value_obj.GetValue();
- obj_load_address.ResolveValue(exe_ctx);
- obj_load_address.SetValueType(Value::eValueTypeLoadAddress);
-
- Value result;
- if (m_dynamic_type_id.Evaluate(exe_ctx->GetBestExecutionContextScope(), nullptr, nullptr, 0, &obj_load_address,
- nullptr, result, nullptr))
- {
- Error error;
-
- lldb::addr_t type_id_addr = result.GetScalar().UInt();
- lldb::ProcessSP process_sp = exe_ctx->GetProcessSP();
- if (process_sp)
- return process_sp->ReadUnsignedIntegerFromMemory(type_id_addr, process_sp->GetAddressByteSize(),
- UINT64_MAX, error);
- }
-
- return UINT64_MAX;
- }
+ uint64_t CalculateDynamicTypeId(ExecutionContext *exe_ctx,
+ ValueObject &value_obj) {
+ if (!m_dynamic_type_id.IsValid())
+ return UINT64_MAX;
-public:
- ConstString m_linkage_name;
- DWARFExpression m_dynamic_type_id;
-};
+ Value obj_load_address = value_obj.GetValue();
+ obj_load_address.ResolveValue(exe_ctx);
+ obj_load_address.SetValueType(Value::eValueTypeLoadAddress);
-class JavaObjectType : public JavaDynamicType
-{
-public:
- struct Field
- {
- ConstString m_name;
- CompilerType m_type;
- uint32_t m_offset;
- };
-
- JavaObjectType(const ConstString &name, const ConstString &linkage_name, uint32_t byte_size)
- : JavaDynamicType(JavaType::eKindObject, linkage_name),
- m_name(name),
- m_byte_size(byte_size),
- m_base_class_offset(0),
- m_is_complete(false)
- {
- }
+ Value result;
+ if (m_dynamic_type_id.Evaluate(exe_ctx->GetBestExecutionContextScope(),
+ nullptr, nullptr, 0, &obj_load_address,
+ nullptr, result, nullptr)) {
+ Error error;
- ConstString
- GetName() override
- {
- return m_name;
+ lldb::addr_t type_id_addr = result.GetScalar().UInt();
+ lldb::ProcessSP process_sp = exe_ctx->GetProcessSP();
+ if (process_sp)
+ return process_sp->ReadUnsignedIntegerFromMemory(
+ type_id_addr, process_sp->GetAddressByteSize(), UINT64_MAX, error);
}
- uint32_t
- GetByteSize() const
- {
- return m_byte_size;
- }
+ return UINT64_MAX;
+ }
- uint32_t
- GetNumFields()
- {
- return m_fields.size();
- }
+public:
+ ConstString m_linkage_name;
+ DWARFExpression m_dynamic_type_id;
+};
- void
- Dump(Stream *s) override
- {
- if (m_base_class.IsValid())
- s->Printf("%s : %s\n", GetName().GetCString(), m_base_class.GetTypeName().GetCString());
- else
- s->Printf("%s\n", GetName().GetCString());
-
- s->IndentMore();
- for (const Field &f : m_fields)
- s->Printf("%s %s\n", f.m_type.GetTypeName().GetCString(), f.m_name.GetCString());
- s->IndentLess();
- }
+class JavaObjectType : public JavaDynamicType {
+public:
+ struct Field {
+ ConstString m_name;
+ CompilerType m_type;
+ uint32_t m_offset;
+ };
- Field *
- GetFieldAtIndex(size_t idx)
- {
- if (idx < m_fields.size())
- return &m_fields[idx];
- return nullptr;
- }
+ JavaObjectType(const ConstString &name, const ConstString &linkage_name,
+ uint32_t byte_size)
+ : JavaDynamicType(JavaType::eKindObject, linkage_name), m_name(name),
+ m_byte_size(byte_size), m_base_class_offset(0), m_is_complete(false) {}
- CompilerType
- GetBaseClass()
- {
- return m_base_class;
- }
+ ConstString GetName() override { return m_name; }
- uint32_t
- GetBaseClassOffset()
- {
- return m_base_class_offset;
- }
+ uint32_t GetByteSize() const { return m_byte_size; }
- uint32_t
- GetNumInterfaces()
- {
- return m_interfaces.size();
- }
+ uint32_t GetNumFields() { return m_fields.size(); }
- CompilerType
- GetInterfaceAtIndex(uint32_t idx)
- {
- if (m_interfaces.size() < idx)
- return m_interfaces[idx];
- return CompilerType();
- }
+ void Dump(Stream *s) override {
+ if (m_base_class.IsValid())
+ s->Printf("%s : %s\n", GetName().GetCString(),
+ m_base_class.GetTypeName().GetCString());
+ else
+ s->Printf("%s\n", GetName().GetCString());
- bool
- IsCompleteType() override
- {
- return m_is_complete;
- }
+ s->IndentMore();
+ for (const Field &f : m_fields)
+ s->Printf("%s %s\n", f.m_type.GetTypeName().GetCString(),
+ f.m_name.GetCString());
+ s->IndentLess();
+ }
- void
- SetCompleteType(bool is_complete)
- {
- m_is_complete = is_complete;
- if (m_byte_size == 0)
- {
- // Try to calcualte the size of the object based on it's values
- for (const Field &field : m_fields)
- {
- uint32_t field_end = field.m_offset + field.m_type.GetByteSize(nullptr);
- if (field_end > m_byte_size)
- m_byte_size = field_end;
- }
- }
- }
+ Field *GetFieldAtIndex(size_t idx) {
+ if (idx < m_fields.size())
+ return &m_fields[idx];
+ return nullptr;
+ }
- void
- AddBaseClass(const CompilerType &type, uint32_t offset)
- {
- // TODO: Check if type is an interface and add it to the interface list in that case
- m_base_class = type;
- m_base_class_offset = offset;
- }
+ CompilerType GetBaseClass() { return m_base_class; }
- void
- AddField(const ConstString &name, const CompilerType &type, uint32_t offset)
- {
- m_fields.push_back({name, type, offset});
- }
+ uint32_t GetBaseClassOffset() { return m_base_class_offset; }
- static bool
- classof(const JavaType *jt)
- {
- return jt->getKind() == JavaType::eKindObject;
- }
+ uint32_t GetNumInterfaces() { return m_interfaces.size(); }
+
+ CompilerType GetInterfaceAtIndex(uint32_t idx) {
+ if (m_interfaces.size() < idx)
+ return m_interfaces[idx];
+ return CompilerType();
+ }
+
+ bool IsCompleteType() override { return m_is_complete; }
+
+ void SetCompleteType(bool is_complete) {
+ m_is_complete = is_complete;
+ if (m_byte_size == 0) {
+ // Try to calcualte the size of the object based on it's values
+ for (const Field &field : m_fields) {
+ uint32_t field_end = field.m_offset + field.m_type.GetByteSize(nullptr);
+ if (field_end > m_byte_size)
+ m_byte_size = field_end;
+ }
+ }
+ }
+
+ void AddBaseClass(const CompilerType &type, uint32_t offset) {
+ // TODO: Check if type is an interface and add it to the interface list in
+ // that case
+ m_base_class = type;
+ m_base_class_offset = offset;
+ }
+
+ void AddField(const ConstString &name, const CompilerType &type,
+ uint32_t offset) {
+ m_fields.push_back({name, type, offset});
+ }
+
+ static bool classof(const JavaType *jt) {
+ return jt->getKind() == JavaType::eKindObject;
+ }
private:
- ConstString m_name;
- uint32_t m_byte_size;
- CompilerType m_base_class;
- uint32_t m_base_class_offset;
- std::vector<CompilerType> m_interfaces;
- std::vector<Field> m_fields;
- bool m_is_complete;
+ ConstString m_name;
+ uint32_t m_byte_size;
+ CompilerType m_base_class;
+ uint32_t m_base_class_offset;
+ std::vector<CompilerType> m_interfaces;
+ std::vector<Field> m_fields;
+ bool m_is_complete;
};
-class JavaReferenceType : public JavaASTContext::JavaType
-{
+class JavaReferenceType : public JavaASTContext::JavaType {
public:
- JavaReferenceType(CompilerType pointee_type) : JavaType(JavaType::eKindReference), m_pointee_type(pointee_type) {}
+ JavaReferenceType(CompilerType pointee_type)
+ : JavaType(JavaType::eKindReference), m_pointee_type(pointee_type) {}
- static bool
- classof(const JavaType *jt)
- {
- return jt->getKind() == JavaType::eKindReference;
- }
+ static bool classof(const JavaType *jt) {
+ return jt->getKind() == JavaType::eKindReference;
+ }
- CompilerType
- GetPointeeType()
- {
- return m_pointee_type;
- }
+ CompilerType GetPointeeType() { return m_pointee_type; }
- ConstString
- GetName() override
- {
- ConstString pointee_type_name = static_cast<JavaType *>(GetPointeeType().GetOpaqueQualType())->GetName();
- return ConstString(std::string(pointee_type_name.AsCString()) + "&");
- }
+ ConstString GetName() override {
+ ConstString pointee_type_name =
+ static_cast<JavaType *>(GetPointeeType().GetOpaqueQualType())
+ ->GetName();
+ return ConstString(std::string(pointee_type_name.AsCString()) + "&");
+ }
- void
- Dump(Stream *s) override
- {
- static_cast<JavaType *>(m_pointee_type.GetOpaqueQualType())->Dump(s);
- }
+ void Dump(Stream *s) override {
+ static_cast<JavaType *>(m_pointee_type.GetOpaqueQualType())->Dump(s);
+ }
- bool
- IsCompleteType() override
- {
- return m_pointee_type.IsCompleteType();
- }
+ bool IsCompleteType() override { return m_pointee_type.IsCompleteType(); }
private:
- CompilerType m_pointee_type;
+ CompilerType m_pointee_type;
};
-class JavaArrayType : public JavaDynamicType
-{
+class JavaArrayType : public JavaDynamicType {
public:
- JavaArrayType(const ConstString& linkage_name, CompilerType element_type, const DWARFExpression &length_expression,
- lldb::addr_t data_offset)
- : JavaDynamicType(JavaType::eKindArray, linkage_name),
- m_element_type(element_type),
- m_length_expression(length_expression),
- m_data_offset(data_offset)
- {
- }
-
- static bool
- classof(const JavaType *jt)
- {
- return jt->getKind() == JavaType::eKindArray;
- }
-
- CompilerType
- GetElementType()
- {
- return m_element_type;
- }
-
- ConstString
- GetName() override
- {
- ConstString element_type_name = static_cast<JavaType *>(GetElementType().GetOpaqueQualType())->GetName();
- return ConstString(std::string(element_type_name.AsCString()) + "[]");
- }
-
- void
- Dump(Stream *s) override
- {
- s->Printf("%s\n", GetName().GetCString());
- }
-
- bool
- IsCompleteType() override
- {
- return m_length_expression.IsValid();
- }
+ JavaArrayType(const ConstString &linkage_name, CompilerType element_type,
+ const DWARFExpression &length_expression,
+ lldb::addr_t data_offset)
+ : JavaDynamicType(JavaType::eKindArray, linkage_name),
+ m_element_type(element_type), m_length_expression(length_expression),
+ m_data_offset(data_offset) {}
+
+ static bool classof(const JavaType *jt) {
+ return jt->getKind() == JavaType::eKindArray;
+ }
+
+ CompilerType GetElementType() { return m_element_type; }
+
+ ConstString GetName() override {
+ ConstString element_type_name =
+ static_cast<JavaType *>(GetElementType().GetOpaqueQualType())
+ ->GetName();
+ return ConstString(std::string(element_type_name.AsCString()) + "[]");
+ }
+
+ void Dump(Stream *s) override { s->Printf("%s\n", GetName().GetCString()); }
+
+ bool IsCompleteType() override { return m_length_expression.IsValid(); }
+
+ uint32_t GetNumElements(ValueObject *value_obj) {
+ if (!m_length_expression.IsValid())
+ return UINT32_MAX;
+
+ Error error;
+ ValueObjectSP address_obj = value_obj->AddressOf(error);
+ if (error.Fail())
+ return UINT32_MAX;
+
+ Value obj_load_address = address_obj->GetValue();
+ obj_load_address.SetValueType(Value::eValueTypeLoadAddress);
+
+ Value result;
+ ExecutionContextScope *exec_ctx_scope = value_obj->GetExecutionContextRef()
+ .Lock(true)
+ .GetBestExecutionContextScope();
+ if (m_length_expression.Evaluate(exec_ctx_scope, nullptr, nullptr, 0,
+ nullptr, &obj_load_address, result,
+ nullptr))
+ return result.GetScalar().UInt();
- uint32_t
- GetNumElements(ValueObject *value_obj)
- {
- if (!m_length_expression.IsValid())
- return UINT32_MAX;
-
- Error error;
- ValueObjectSP address_obj = value_obj->AddressOf(error);
- if (error.Fail())
- return UINT32_MAX;
-
- Value obj_load_address = address_obj->GetValue();
- obj_load_address.SetValueType(Value::eValueTypeLoadAddress);
-
- Value result;
- ExecutionContextScope* exec_ctx_scope = value_obj->GetExecutionContextRef().Lock(true).GetBestExecutionContextScope();
- if (m_length_expression.Evaluate(exec_ctx_scope, nullptr, nullptr, 0, nullptr, &obj_load_address, result, nullptr))
- return result.GetScalar().UInt();
-
- return UINT32_MAX;
- }
+ return UINT32_MAX;
+ }
- uint64_t
- GetElementOffset(size_t idx)
- {
- return m_data_offset + idx * m_element_type.GetByteSize(nullptr);
- }
+ uint64_t GetElementOffset(size_t idx) {
+ return m_data_offset + idx * m_element_type.GetByteSize(nullptr);
+ }
private:
- CompilerType m_element_type;
- DWARFExpression m_length_expression;
- lldb::addr_t m_data_offset;
+ CompilerType m_element_type;
+ DWARFExpression m_length_expression;
+ lldb::addr_t m_data_offset;
};
} // end of anonymous namespace
-ConstString
-JavaASTContext::GetPluginNameStatic()
-{
- return ConstString("java");
+ConstString JavaASTContext::GetPluginNameStatic() {
+ return ConstString("java");
}
-ConstString
-JavaASTContext::GetPluginName()
-{
- return JavaASTContext::GetPluginNameStatic();
+ConstString JavaASTContext::GetPluginName() {
+ return JavaASTContext::GetPluginNameStatic();
}
-uint32_t
-JavaASTContext::GetPluginVersion()
-{
- return 1;
-}
-
-lldb::TypeSystemSP
-JavaASTContext::CreateInstance(lldb::LanguageType language, Module *module, Target *target)
-{
- if (language == eLanguageTypeJava)
- {
- if (module)
- return std::make_shared<JavaASTContext>(module->GetArchitecture());
- if (target)
- return std::make_shared<JavaASTContext>(target->GetArchitecture());
- assert(false && "Either a module or a target has to be specifed to create a JavaASTContext");
- }
- return lldb::TypeSystemSP();
+uint32_t JavaASTContext::GetPluginVersion() { return 1; }
+
+lldb::TypeSystemSP JavaASTContext::CreateInstance(lldb::LanguageType language,
+ Module *module,
+ Target *target) {
+ if (language == eLanguageTypeJava) {
+ if (module)
+ return std::make_shared<JavaASTContext>(module->GetArchitecture());
+ if (target)
+ return std::make_shared<JavaASTContext>(target->GetArchitecture());
+ assert(false && "Either a module or a target has to be specifed to create "
+ "a JavaASTContext");
+ }
+ return lldb::TypeSystemSP();
}
-void
-JavaASTContext::EnumerateSupportedLanguages(std::set<lldb::LanguageType> &languages_for_types,
- std::set<lldb::LanguageType> &languages_for_expressions)
-{
- static std::vector<lldb::LanguageType> s_languages_for_types({lldb::eLanguageTypeJava});
- static std::vector<lldb::LanguageType> s_languages_for_expressions({});
+void JavaASTContext::EnumerateSupportedLanguages(
+ std::set<lldb::LanguageType> &languages_for_types,
+ std::set<lldb::LanguageType> &languages_for_expressions) {
+ static std::vector<lldb::LanguageType> s_languages_for_types(
+ {lldb::eLanguageTypeJava});
+ static std::vector<lldb::LanguageType> s_languages_for_expressions({});
- languages_for_types.insert(s_languages_for_types.begin(), s_languages_for_types.end());
- languages_for_expressions.insert(s_languages_for_expressions.begin(), s_languages_for_expressions.end());
+ languages_for_types.insert(s_languages_for_types.begin(),
+ s_languages_for_types.end());
+ languages_for_expressions.insert(s_languages_for_expressions.begin(),
+ s_languages_for_expressions.end());
}
-void
-JavaASTContext::Initialize()
-{
- PluginManager::RegisterPlugin(GetPluginNameStatic(), "AST context plug-in", CreateInstance,
- EnumerateSupportedLanguages);
+void JavaASTContext::Initialize() {
+ PluginManager::RegisterPlugin(GetPluginNameStatic(), "AST context plug-in",
+ CreateInstance, EnumerateSupportedLanguages);
}
-void
-JavaASTContext::Terminate()
-{
- PluginManager::UnregisterPlugin(CreateInstance);
+void JavaASTContext::Terminate() {
+ PluginManager::UnregisterPlugin(CreateInstance);
}
JavaASTContext::JavaASTContext(const ArchSpec &arch)
- : TypeSystem(eKindJava), m_pointer_byte_size(arch.GetAddressByteSize())
-{
+ : TypeSystem(eKindJava), m_pointer_byte_size(arch.GetAddressByteSize()) {}
+
+JavaASTContext::~JavaASTContext() {}
+
+uint32_t JavaASTContext::GetPointerByteSize() { return m_pointer_byte_size; }
+
+DWARFASTParser *JavaASTContext::GetDWARFParser() {
+ if (!m_dwarf_ast_parser_ap)
+ m_dwarf_ast_parser_ap.reset(new DWARFASTParserJava(*this));
+ return m_dwarf_ast_parser_ap.get();
}
-JavaASTContext::~JavaASTContext()
-{
+ConstString JavaASTContext::DeclGetName(void *opaque_decl) {
+ return ConstString();
}
-uint32_t
-JavaASTContext::GetPointerByteSize()
-{
- return m_pointer_byte_size;
+std::vector<CompilerDecl> JavaASTContext::DeclContextFindDeclByName(
+ void *opaque_decl_ctx, ConstString name, const bool ignore_imported_decls) {
+ return std::vector<CompilerDecl>();
}
-DWARFASTParser *
-JavaASTContext::GetDWARFParser()
-{
- if (!m_dwarf_ast_parser_ap)
- m_dwarf_ast_parser_ap.reset(new DWARFASTParserJava(*this));
- return m_dwarf_ast_parser_ap.get();
+bool JavaASTContext::DeclContextIsStructUnionOrClass(void *opaque_decl_ctx) {
+ return false;
}
-ConstString
-JavaASTContext::DeclGetName(void *opaque_decl)
-{
- return ConstString();
+ConstString JavaASTContext::DeclContextGetName(void *opaque_decl_ctx) {
+ return ConstString();
}
-std::vector<CompilerDecl>
-JavaASTContext::DeclContextFindDeclByName(void *opaque_decl_ctx, ConstString name, const bool ignore_imported_decls)
-{
- return std::vector<CompilerDecl>();
+bool JavaASTContext::DeclContextIsClassMethod(
+ void *opaque_decl_ctx, lldb::LanguageType *language_ptr,
+ bool *is_instance_method_ptr, ConstString *language_object_name_ptr) {
+ return false;
}
-bool
-JavaASTContext::DeclContextIsStructUnionOrClass(void *opaque_decl_ctx)
-{
- return false;
+bool JavaASTContext::IsArrayType(lldb::opaque_compiler_type_t type,
+ CompilerType *element_type, uint64_t *size,
+ bool *is_incomplete) {
+ if (element_type)
+ element_type->Clear();
+ if (size)
+ *size = 0;
+ if (is_incomplete)
+ *is_incomplete = false;
+
+ if (JavaArrayType *array =
+ llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type))) {
+ if (element_type)
+ *element_type = array->GetElementType();
+ return true;
+ }
+ return false;
}
-ConstString
-JavaASTContext::DeclContextGetName(void *opaque_decl_ctx)
-{
- return ConstString();
+bool JavaASTContext::IsAggregateType(lldb::opaque_compiler_type_t type) {
+ return llvm::isa<JavaObjectType>(static_cast<JavaType *>(type));
}
-bool
-JavaASTContext::DeclContextIsClassMethod(void *opaque_decl_ctx, lldb::LanguageType *language_ptr,
- bool *is_instance_method_ptr, ConstString *language_object_name_ptr)
-{
- return false;
+bool JavaASTContext::IsCharType(lldb::opaque_compiler_type_t type) {
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
+ return ptype->GetTypeKind() == JavaPrimitiveType::eTypeChar;
+ return false;
}
-bool
-JavaASTContext::IsArrayType(lldb::opaque_compiler_type_t type, CompilerType *element_type, uint64_t *size,
- bool *is_incomplete)
-{
- if (element_type)
- element_type->Clear();
- if (size)
- *size = 0;
- if (is_incomplete)
- *is_incomplete = false;
-
- if (JavaArrayType *array = llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type)))
- {
- if (element_type)
- *element_type = array->GetElementType();
- return true;
- }
- return false;
-}
-
-bool
-JavaASTContext::IsAggregateType(lldb::opaque_compiler_type_t type)
-{
- return llvm::isa<JavaObjectType>(static_cast<JavaType *>(type));
-}
-
-bool
-JavaASTContext::IsCharType(lldb::opaque_compiler_type_t type)
-{
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- return ptype->GetTypeKind() == JavaPrimitiveType::eTypeChar;
- return false;
-}
-
-bool
-JavaASTContext::IsFloatingPointType(lldb::opaque_compiler_type_t type, uint32_t &count, bool &is_complex)
-{
- is_complex = true;
-
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeFloat:
- case JavaPrimitiveType::eTypeDouble:
- count = 1;
- return true;
- default:
- break;
- }
+bool JavaASTContext::IsFloatingPointType(lldb::opaque_compiler_type_t type,
+ uint32_t &count, bool &is_complex) {
+ is_complex = true;
+
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeFloat:
+ case JavaPrimitiveType::eTypeDouble:
+ count = 1;
+ return true;
+ default:
+ break;
}
+ }
- count = 0;
- return false;
+ count = 0;
+ return false;
}
-bool
-JavaASTContext::IsFunctionType(lldb::opaque_compiler_type_t type, bool *is_variadic_ptr)
-{
- if (is_variadic_ptr)
- *is_variadic_ptr = false;
- return false;
+bool JavaASTContext::IsFunctionType(lldb::opaque_compiler_type_t type,
+ bool *is_variadic_ptr) {
+ if (is_variadic_ptr)
+ *is_variadic_ptr = false;
+ return false;
}
-size_t
-JavaASTContext::GetNumberOfFunctionArguments(lldb::opaque_compiler_type_t type)
-{
- return 0;
+size_t JavaASTContext::GetNumberOfFunctionArguments(
+ lldb::opaque_compiler_type_t type) {
+ return 0;
}
CompilerType
-JavaASTContext::GetFunctionArgumentAtIndex(lldb::opaque_compiler_type_t type, const size_t index)
-{
- return CompilerType();
+JavaASTContext::GetFunctionArgumentAtIndex(lldb::opaque_compiler_type_t type,
+ const size_t index) {
+ return CompilerType();
}
-bool
-JavaASTContext::IsFunctionPointerType(lldb::opaque_compiler_type_t type)
-{
- return false;
-}
-
-bool
-JavaASTContext::IsBlockPointerType (lldb::opaque_compiler_type_t type, CompilerType *function_pointer_type_ptr)
-{
- return false;
-}
-
-bool
-JavaASTContext::IsIntegerType(lldb::opaque_compiler_type_t type, bool &is_signed)
-{
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeByte:
- case JavaPrimitiveType::eTypeShort:
- case JavaPrimitiveType::eTypeInt:
- case JavaPrimitiveType::eTypeLong:
- is_signed = true;
- return true;
- default:
- break;
- }
- }
+bool JavaASTContext::IsFunctionPointerType(lldb::opaque_compiler_type_t type) {
+ return false;
+}
- is_signed = false;
- return false;
+bool JavaASTContext::IsBlockPointerType(
+ lldb::opaque_compiler_type_t type,
+ CompilerType *function_pointer_type_ptr) {
+ return false;
}
-bool
-JavaASTContext::IsPossibleDynamicType(lldb::opaque_compiler_type_t type, CompilerType *target_type,
- bool check_cplusplus, bool check_objc)
-{
- return llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type));
+bool JavaASTContext::IsIntegerType(lldb::opaque_compiler_type_t type,
+ bool &is_signed) {
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeByte:
+ case JavaPrimitiveType::eTypeShort:
+ case JavaPrimitiveType::eTypeInt:
+ case JavaPrimitiveType::eTypeLong:
+ is_signed = true;
+ return true;
+ default:
+ break;
+ }
+ }
+
+ is_signed = false;
+ return false;
}
-bool
-JavaASTContext::IsPointerType(lldb::opaque_compiler_type_t type, CompilerType *pointee_type)
-{
- if (pointee_type)
- pointee_type->Clear();
- return false;
+bool JavaASTContext::IsPossibleDynamicType(lldb::opaque_compiler_type_t type,
+ CompilerType *target_type,
+ bool check_cplusplus,
+ bool check_objc) {
+ return llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type));
}
-bool
-JavaASTContext::IsReferenceType(lldb::opaque_compiler_type_t type, CompilerType *pointee_type, bool *is_rvalue)
-{
- if (is_rvalue)
- *is_rvalue = false;
+bool JavaASTContext::IsPointerType(lldb::opaque_compiler_type_t type,
+ CompilerType *pointee_type) {
+ if (pointee_type)
+ pointee_type->Clear();
+ return false;
+}
- if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
- {
- if (pointee_type)
- *pointee_type = ref->GetPointeeType();
- return true;
- }
+bool JavaASTContext::IsReferenceType(lldb::opaque_compiler_type_t type,
+ CompilerType *pointee_type,
+ bool *is_rvalue) {
+ if (is_rvalue)
+ *is_rvalue = false;
+ if (JavaReferenceType *ref =
+ llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type))) {
if (pointee_type)
- pointee_type->Clear();
- return false;
+ *pointee_type = ref->GetPointeeType();
+ return true;
+ }
+
+ if (pointee_type)
+ pointee_type->Clear();
+ return false;
}
-bool
-JavaASTContext::IsScalarType(lldb::opaque_compiler_type_t type)
-{
- return llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type)) ||
- llvm::isa<JavaPrimitiveType>(static_cast<JavaType *>(type));
+bool JavaASTContext::IsScalarType(lldb::opaque_compiler_type_t type) {
+ return llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type)) ||
+ llvm::isa<JavaPrimitiveType>(static_cast<JavaType *>(type));
}
-bool
-JavaASTContext::IsVoidType(lldb::opaque_compiler_type_t type)
-{
- return false; // TODO: Implement if we introduce the void type
+bool JavaASTContext::IsVoidType(lldb::opaque_compiler_type_t type) {
+ return false; // TODO: Implement if we introduce the void type
}
-bool
-JavaASTContext::SupportsLanguage(lldb::LanguageType language)
-{
- return language == lldb::eLanguageTypeJava;
+bool JavaASTContext::SupportsLanguage(lldb::LanguageType language) {
+ return language == lldb::eLanguageTypeJava;
}
-bool
-JavaASTContext::IsRuntimeGeneratedType(lldb::opaque_compiler_type_t type)
-{
- return true;
+bool JavaASTContext::IsRuntimeGeneratedType(lldb::opaque_compiler_type_t type) {
+ return true;
}
-bool
-JavaASTContext::IsPointerOrReferenceType(lldb::opaque_compiler_type_t type, CompilerType *pointee_type)
-{
- return IsPointerType(type, pointee_type) || IsReferenceType(type, pointee_type);
+bool JavaASTContext::IsPointerOrReferenceType(lldb::opaque_compiler_type_t type,
+ CompilerType *pointee_type) {
+ return IsPointerType(type, pointee_type) ||
+ IsReferenceType(type, pointee_type);
}
-bool
-JavaASTContext::IsCStringType(lldb::opaque_compiler_type_t type, uint32_t &length)
-{
- return false; // TODO: Implement it if we need it for string literals
+bool JavaASTContext::IsCStringType(lldb::opaque_compiler_type_t type,
+ uint32_t &length) {
+ return false; // TODO: Implement it if we need it for string literals
}
-bool
-JavaASTContext::IsTypedefType(lldb::opaque_compiler_type_t type)
-{
- return false;
+bool JavaASTContext::IsTypedefType(lldb::opaque_compiler_type_t type) {
+ return false;
}
-bool
-JavaASTContext::IsVectorType(lldb::opaque_compiler_type_t type, CompilerType *element_type, uint64_t *size)
-{
- if (element_type)
- element_type->Clear();
- if (size)
- *size = 0;
- return false;
+bool JavaASTContext::IsVectorType(lldb::opaque_compiler_type_t type,
+ CompilerType *element_type, uint64_t *size) {
+ if (element_type)
+ element_type->Clear();
+ if (size)
+ *size = 0;
+ return false;
}
-bool
-JavaASTContext::IsPolymorphicClass(lldb::opaque_compiler_type_t type)
-{
- return llvm::isa<JavaObjectType>(static_cast<JavaType *>(type));
+bool JavaASTContext::IsPolymorphicClass(lldb::opaque_compiler_type_t type) {
+ return llvm::isa<JavaObjectType>(static_cast<JavaType *>(type));
}
uint32_t
-JavaASTContext::IsHomogeneousAggregate(lldb::opaque_compiler_type_t type, CompilerType *base_type_ptr)
-{
- return false;
+JavaASTContext::IsHomogeneousAggregate(lldb::opaque_compiler_type_t type,
+ CompilerType *base_type_ptr) {
+ return false;
}
-bool
-JavaASTContext::IsCompleteType(lldb::opaque_compiler_type_t type)
-{
- return static_cast<JavaType *>(type)->IsCompleteType();
+bool JavaASTContext::IsCompleteType(lldb::opaque_compiler_type_t type) {
+ return static_cast<JavaType *>(type)->IsCompleteType();
}
-bool
-JavaASTContext::IsConst(lldb::opaque_compiler_type_t type)
-{
- return false;
+bool JavaASTContext::IsConst(lldb::opaque_compiler_type_t type) {
+ return false;
}
-bool
-JavaASTContext::IsBeingDefined(lldb::opaque_compiler_type_t type)
-{
- return false;
+bool JavaASTContext::IsBeingDefined(lldb::opaque_compiler_type_t type) {
+ return false;
}
-bool
-JavaASTContext::IsDefined(lldb::opaque_compiler_type_t type)
-{
- return type != nullptr;
+bool JavaASTContext::IsDefined(lldb::opaque_compiler_type_t type) {
+ return type != nullptr;
}
-bool
-JavaASTContext::GetCompleteType(lldb::opaque_compiler_type_t type)
-{
- if (IsCompleteType(type))
- return true;
+bool JavaASTContext::GetCompleteType(lldb::opaque_compiler_type_t type) {
+ if (IsCompleteType(type))
+ return true;
- if (JavaArrayType *array = llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type)))
- return GetCompleteType(array->GetElementType().GetOpaqueQualType());
+ if (JavaArrayType *array =
+ llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type)))
+ return GetCompleteType(array->GetElementType().GetOpaqueQualType());
- if (JavaReferenceType *reference = llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
- return GetCompleteType(reference->GetPointeeType().GetOpaqueQualType());
+ if (JavaReferenceType *reference =
+ llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
+ return GetCompleteType(reference->GetPointeeType().GetOpaqueQualType());
- if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- SymbolFile *symbol_file = GetSymbolFile();
- if (!symbol_file)
- return false;
+ if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type))) {
+ SymbolFile *symbol_file = GetSymbolFile();
+ if (!symbol_file)
+ return false;
- CompilerType object_type(this, type);
- return symbol_file->CompleteType(object_type);
- }
- return false;
+ CompilerType object_type(this, type);
+ return symbol_file->CompleteType(object_type);
+ }
+ return false;
}
-ConstString
-JavaASTContext::GetTypeName(lldb::opaque_compiler_type_t type)
-{
- if (type)
- return static_cast<JavaType *>(type)->GetName();
- return ConstString();
+ConstString JavaASTContext::GetTypeName(lldb::opaque_compiler_type_t type) {
+ if (type)
+ return static_cast<JavaType *>(type)->GetName();
+ return ConstString();
}
uint32_t
-JavaASTContext::GetTypeInfo(lldb::opaque_compiler_type_t type, CompilerType *pointee_or_element_compiler_type)
-{
- if (pointee_or_element_compiler_type)
- pointee_or_element_compiler_type->Clear();
- if (!type)
- return 0;
-
- if (IsReferenceType(type, pointee_or_element_compiler_type))
- return eTypeHasChildren | eTypeHasValue | eTypeIsReference;
- if (IsArrayType(type, pointee_or_element_compiler_type, nullptr, nullptr))
- return eTypeHasChildren | eTypeIsArray;
- if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
- return eTypeHasChildren | eTypeIsClass;
-
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeByte:
- case JavaPrimitiveType::eTypeShort:
- case JavaPrimitiveType::eTypeInt:
- case JavaPrimitiveType::eTypeLong:
- return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar | eTypeIsInteger | eTypeIsSigned;
- case JavaPrimitiveType::eTypeFloat:
- case JavaPrimitiveType::eTypeDouble:
- return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar | eTypeIsFloat | eTypeIsSigned;
- case JavaPrimitiveType::eTypeBoolean:
- return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar;
- case JavaPrimitiveType::eTypeChar:
- return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar;
- }
- }
+JavaASTContext::GetTypeInfo(lldb::opaque_compiler_type_t type,
+ CompilerType *pointee_or_element_compiler_type) {
+ if (pointee_or_element_compiler_type)
+ pointee_or_element_compiler_type->Clear();
+ if (!type)
return 0;
+
+ if (IsReferenceType(type, pointee_or_element_compiler_type))
+ return eTypeHasChildren | eTypeHasValue | eTypeIsReference;
+ if (IsArrayType(type, pointee_or_element_compiler_type, nullptr, nullptr))
+ return eTypeHasChildren | eTypeIsArray;
+ if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
+ return eTypeHasChildren | eTypeIsClass;
+
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeByte:
+ case JavaPrimitiveType::eTypeShort:
+ case JavaPrimitiveType::eTypeInt:
+ case JavaPrimitiveType::eTypeLong:
+ return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar | eTypeIsInteger |
+ eTypeIsSigned;
+ case JavaPrimitiveType::eTypeFloat:
+ case JavaPrimitiveType::eTypeDouble:
+ return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar | eTypeIsFloat |
+ eTypeIsSigned;
+ case JavaPrimitiveType::eTypeBoolean:
+ return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar;
+ case JavaPrimitiveType::eTypeChar:
+ return eTypeHasValue | eTypeIsBuiltIn | eTypeIsScalar;
+ }
+ }
+ return 0;
}
lldb::TypeClass
-JavaASTContext::GetTypeClass(lldb::opaque_compiler_type_t type)
-{
- if (!type)
- return eTypeClassInvalid;
- if (llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type)))
- return eTypeClassReference;
- if (llvm::isa<JavaArrayType>(static_cast<JavaType *>(type)))
- return eTypeClassArray;
- if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
- return eTypeClassClass;
- if (llvm::isa<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- return eTypeClassBuiltin;
- assert(false && "Java type with unhandled type class");
+JavaASTContext::GetTypeClass(lldb::opaque_compiler_type_t type) {
+ if (!type)
return eTypeClassInvalid;
+ if (llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type)))
+ return eTypeClassReference;
+ if (llvm::isa<JavaArrayType>(static_cast<JavaType *>(type)))
+ return eTypeClassArray;
+ if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
+ return eTypeClassClass;
+ if (llvm::isa<JavaPrimitiveType>(static_cast<JavaType *>(type)))
+ return eTypeClassBuiltin;
+ assert(false && "Java type with unhandled type class");
+ return eTypeClassInvalid;
}
lldb::LanguageType
-JavaASTContext::GetMinimumLanguage(lldb::opaque_compiler_type_t type)
-{
- return lldb::eLanguageTypeJava;
+JavaASTContext::GetMinimumLanguage(lldb::opaque_compiler_type_t type) {
+ return lldb::eLanguageTypeJava;
}
CompilerType
-JavaASTContext::GetArrayElementType(lldb::opaque_compiler_type_t type, uint64_t *stride)
-{
- if (stride)
- *stride = 0;
-
- CompilerType element_type;
- if (IsArrayType(type, &element_type, nullptr, nullptr))
- return element_type;
- return CompilerType();
+JavaASTContext::GetArrayElementType(lldb::opaque_compiler_type_t type,
+ uint64_t *stride) {
+ if (stride)
+ *stride = 0;
+
+ CompilerType element_type;
+ if (IsArrayType(type, &element_type, nullptr, nullptr))
+ return element_type;
+ return CompilerType();
}
-CompilerType
-JavaASTContext::GetPointeeType(lldb::opaque_compiler_type_t type)
-{
- CompilerType pointee_type;
- if (IsPointerType(type, &pointee_type))
- return pointee_type;
- return CompilerType();
+CompilerType JavaASTContext::GetPointeeType(lldb::opaque_compiler_type_t type) {
+ CompilerType pointee_type;
+ if (IsPointerType(type, &pointee_type))
+ return pointee_type;
+ return CompilerType();
}
-CompilerType
-JavaASTContext::GetPointerType(lldb::opaque_compiler_type_t type)
-{
- return CompilerType(); // No pointer types in java
+CompilerType JavaASTContext::GetPointerType(lldb::opaque_compiler_type_t type) {
+ return CompilerType(); // No pointer types in java
}
CompilerType
-JavaASTContext::GetCanonicalType(lldb::opaque_compiler_type_t type)
-{
- return CompilerType(this, type);
+JavaASTContext::GetCanonicalType(lldb::opaque_compiler_type_t type) {
+ return CompilerType(this, type);
}
CompilerType
-JavaASTContext::GetFullyUnqualifiedType(lldb::opaque_compiler_type_t type)
-{
- return CompilerType(this, type);
+JavaASTContext::GetFullyUnqualifiedType(lldb::opaque_compiler_type_t type) {
+ return CompilerType(this, type);
}
CompilerType
-JavaASTContext::GetNonReferenceType(lldb::opaque_compiler_type_t type)
-{
- CompilerType pointee_type;
- if (IsReferenceType(type, &pointee_type))
- return pointee_type;
- return CompilerType(this, type);
+JavaASTContext::GetNonReferenceType(lldb::opaque_compiler_type_t type) {
+ CompilerType pointee_type;
+ if (IsReferenceType(type, &pointee_type))
+ return pointee_type;
+ return CompilerType(this, type);
}
CompilerType
-JavaASTContext::GetTypedefedType(lldb::opaque_compiler_type_t type)
-{
- return CompilerType();
+JavaASTContext::GetTypedefedType(lldb::opaque_compiler_type_t type) {
+ return CompilerType();
}
-CompilerType
-JavaASTContext::GetBasicTypeFromAST(lldb::BasicType basic_type)
-{
- return CompilerType();
+CompilerType JavaASTContext::GetBasicTypeFromAST(lldb::BasicType basic_type) {
+ return CompilerType();
}
CompilerType
-JavaASTContext::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, size_t bit_size)
-{
- return CompilerType();
+JavaASTContext::GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding,
+ size_t bit_size) {
+ return CompilerType();
}
-size_t
-JavaASTContext::GetTypeBitAlign(lldb::opaque_compiler_type_t type)
-{
- return 0;
+size_t JavaASTContext::GetTypeBitAlign(lldb::opaque_compiler_type_t type) {
+ return 0;
}
lldb::BasicType
-JavaASTContext::GetBasicTypeEnumeration(lldb::opaque_compiler_type_t type)
-{
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeByte:
- return eBasicTypeOther;
- case JavaPrimitiveType::eTypeShort:
- return eBasicTypeShort;
- case JavaPrimitiveType::eTypeInt:
- return eBasicTypeInt;
- case JavaPrimitiveType::eTypeLong:
- return eBasicTypeLong;
- case JavaPrimitiveType::eTypeFloat:
- return eBasicTypeFloat;
- case JavaPrimitiveType::eTypeDouble:
- return eBasicTypeDouble;
- case JavaPrimitiveType::eTypeBoolean:
- return eBasicTypeBool;
- case JavaPrimitiveType::eTypeChar:
- return eBasicTypeChar;
- }
- }
- return eBasicTypeInvalid;
-}
-
-uint64_t
-JavaASTContext::GetBitSize(lldb::opaque_compiler_type_t type, ExecutionContextScope *exe_scope)
-{
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeByte:
- return 8;
- case JavaPrimitiveType::eTypeShort:
- return 16;
- case JavaPrimitiveType::eTypeInt:
- return 32;
- case JavaPrimitiveType::eTypeLong:
- return 64;
- case JavaPrimitiveType::eTypeFloat:
- return 32;
- case JavaPrimitiveType::eTypeDouble:
- return 64;
- case JavaPrimitiveType::eTypeBoolean:
- return 1;
- case JavaPrimitiveType::eTypeChar:
- return 16;
- }
- }
- else if (llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type)))
- {
- return 32; // References are always 4 byte long in java
- }
- else if (llvm::isa<JavaArrayType>(static_cast<JavaType *>(type)))
- {
- return 64;
- }
- else if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- return obj->GetByteSize() * 8;
- }
- return 0;
-}
-
-lldb::Encoding
-JavaASTContext::GetEncoding(lldb::opaque_compiler_type_t type, uint64_t &count)
-{
- count = 1;
-
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeByte:
- case JavaPrimitiveType::eTypeShort:
- case JavaPrimitiveType::eTypeInt:
- case JavaPrimitiveType::eTypeLong:
- return eEncodingSint;
- case JavaPrimitiveType::eTypeFloat:
- case JavaPrimitiveType::eTypeDouble:
- return eEncodingIEEE754;
- case JavaPrimitiveType::eTypeBoolean:
- case JavaPrimitiveType::eTypeChar:
- return eEncodingUint;
- }
- }
- if (IsReferenceType(type))
- return eEncodingUint;
- return eEncodingInvalid;
-}
-
-lldb::Format
-JavaASTContext::GetFormat(lldb::opaque_compiler_type_t type)
-{
- if (JavaPrimitiveType *ptype = llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type)))
- {
- switch (ptype->GetTypeKind())
- {
- case JavaPrimitiveType::eTypeByte:
- case JavaPrimitiveType::eTypeShort:
- case JavaPrimitiveType::eTypeInt:
- case JavaPrimitiveType::eTypeLong:
- return eFormatDecimal;
- case JavaPrimitiveType::eTypeFloat:
- case JavaPrimitiveType::eTypeDouble:
- return eFormatFloat;
- case JavaPrimitiveType::eTypeBoolean:
- return eFormatBoolean;
- case JavaPrimitiveType::eTypeChar:
- return eFormatUnicode16;
- }
- }
- if (IsReferenceType(type))
- return eFormatHex;
- return eFormatDefault;
-}
-
-unsigned
-JavaASTContext::GetTypeQualifiers(lldb::opaque_compiler_type_t type)
-{
- return 0;
+JavaASTContext::GetBasicTypeEnumeration(lldb::opaque_compiler_type_t type) {
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeByte:
+ return eBasicTypeOther;
+ case JavaPrimitiveType::eTypeShort:
+ return eBasicTypeShort;
+ case JavaPrimitiveType::eTypeInt:
+ return eBasicTypeInt;
+ case JavaPrimitiveType::eTypeLong:
+ return eBasicTypeLong;
+ case JavaPrimitiveType::eTypeFloat:
+ return eBasicTypeFloat;
+ case JavaPrimitiveType::eTypeDouble:
+ return eBasicTypeDouble;
+ case JavaPrimitiveType::eTypeBoolean:
+ return eBasicTypeBool;
+ case JavaPrimitiveType::eTypeChar:
+ return eBasicTypeChar;
+ }
+ }
+ return eBasicTypeInvalid;
+}
+
+uint64_t JavaASTContext::GetBitSize(lldb::opaque_compiler_type_t type,
+ ExecutionContextScope *exe_scope) {
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeByte:
+ return 8;
+ case JavaPrimitiveType::eTypeShort:
+ return 16;
+ case JavaPrimitiveType::eTypeInt:
+ return 32;
+ case JavaPrimitiveType::eTypeLong:
+ return 64;
+ case JavaPrimitiveType::eTypeFloat:
+ return 32;
+ case JavaPrimitiveType::eTypeDouble:
+ return 64;
+ case JavaPrimitiveType::eTypeBoolean:
+ return 1;
+ case JavaPrimitiveType::eTypeChar:
+ return 16;
+ }
+ } else if (llvm::isa<JavaReferenceType>(static_cast<JavaType *>(type))) {
+ return 32; // References are always 4 byte long in java
+ } else if (llvm::isa<JavaArrayType>(static_cast<JavaType *>(type))) {
+ return 64;
+ } else if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(type))) {
+ return obj->GetByteSize() * 8;
+ }
+ return 0;
+}
+
+lldb::Encoding JavaASTContext::GetEncoding(lldb::opaque_compiler_type_t type,
+ uint64_t &count) {
+ count = 1;
+
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeByte:
+ case JavaPrimitiveType::eTypeShort:
+ case JavaPrimitiveType::eTypeInt:
+ case JavaPrimitiveType::eTypeLong:
+ return eEncodingSint;
+ case JavaPrimitiveType::eTypeFloat:
+ case JavaPrimitiveType::eTypeDouble:
+ return eEncodingIEEE754;
+ case JavaPrimitiveType::eTypeBoolean:
+ case JavaPrimitiveType::eTypeChar:
+ return eEncodingUint;
+ }
+ }
+ if (IsReferenceType(type))
+ return eEncodingUint;
+ return eEncodingInvalid;
+}
+
+lldb::Format JavaASTContext::GetFormat(lldb::opaque_compiler_type_t type) {
+ if (JavaPrimitiveType *ptype =
+ llvm::dyn_cast<JavaPrimitiveType>(static_cast<JavaType *>(type))) {
+ switch (ptype->GetTypeKind()) {
+ case JavaPrimitiveType::eTypeByte:
+ case JavaPrimitiveType::eTypeShort:
+ case JavaPrimitiveType::eTypeInt:
+ case JavaPrimitiveType::eTypeLong:
+ return eFormatDecimal;
+ case JavaPrimitiveType::eTypeFloat:
+ case JavaPrimitiveType::eTypeDouble:
+ return eFormatFloat;
+ case JavaPrimitiveType::eTypeBoolean:
+ return eFormatBoolean;
+ case JavaPrimitiveType::eTypeChar:
+ return eFormatUnicode16;
+ }
+ }
+ if (IsReferenceType(type))
+ return eFormatHex;
+ return eFormatDefault;
+}
+
+unsigned JavaASTContext::GetTypeQualifiers(lldb::opaque_compiler_type_t type) {
+ return 0;
}
size_t
-JavaASTContext::ConvertStringToFloatValue(lldb::opaque_compiler_type_t type, const char *s, uint8_t *dst,
- size_t dst_size)
-{
- assert(false && "Not implemented");
- return 0;
+JavaASTContext::ConvertStringToFloatValue(lldb::opaque_compiler_type_t type,
+ const char *s, uint8_t *dst,
+ size_t dst_size) {
+ assert(false && "Not implemented");
+ return 0;
}
size_t
-JavaASTContext::GetNumTemplateArguments(lldb::opaque_compiler_type_t type)
-{
- return 0;
+JavaASTContext::GetNumTemplateArguments(lldb::opaque_compiler_type_t type) {
+ return 0;
}
CompilerType
-JavaASTContext::GetTemplateArgument(lldb::opaque_compiler_type_t type, size_t idx, lldb::TemplateArgumentKind &kind)
-{
- return CompilerType();
+JavaASTContext::GetTemplateArgument(lldb::opaque_compiler_type_t type,
+ size_t idx,
+ lldb::TemplateArgumentKind &kind) {
+ return CompilerType();
}
-uint32_t
-JavaASTContext::GetNumFields(lldb::opaque_compiler_type_t type)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
- return obj->GetNumFields();
- }
- return 0;
-}
+uint32_t JavaASTContext::GetNumFields(lldb::opaque_compiler_type_t type) {
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
+ return obj->GetNumFields();
+ }
+ return 0;
+}
+
+CompilerType JavaASTContext::GetFieldAtIndex(lldb::opaque_compiler_type_t type,
+ size_t idx, std::string &name,
+ uint64_t *bit_offset_ptr,
+ uint32_t *bitfield_bit_size_ptr,
+ bool *is_bitfield_ptr) {
+ if (bit_offset_ptr)
+ *bit_offset_ptr = 0;
+ if (bitfield_bit_size_ptr)
+ *bitfield_bit_size_ptr = 0;
+ if (is_bitfield_ptr)
+ *is_bitfield_ptr = false;
+
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
-CompilerType
-JavaASTContext::GetFieldAtIndex(lldb::opaque_compiler_type_t type, size_t idx, std::string &name,
- uint64_t *bit_offset_ptr, uint32_t *bitfield_bit_size_ptr, bool *is_bitfield_ptr)
-{
+ JavaObjectType::Field *field = obj->GetFieldAtIndex(idx);
+ if (!field)
+ return CompilerType();
+ name = field->m_name.AsCString();
if (bit_offset_ptr)
- *bit_offset_ptr = 0;
- if (bitfield_bit_size_ptr)
- *bitfield_bit_size_ptr = 0;
- if (is_bitfield_ptr)
- *is_bitfield_ptr = false;
-
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
-
- JavaObjectType::Field *field = obj->GetFieldAtIndex(idx);
- if (!field)
- return CompilerType();
- name = field->m_name.AsCString();
- if (bit_offset_ptr)
- *bit_offset_ptr = field->m_offset * 8;
- return field->m_type;
- }
- return CompilerType();
+ *bit_offset_ptr = field->m_offset * 8;
+ return field->m_type;
+ }
+ return CompilerType();
}
-uint32_t
-JavaASTContext::GetNumChildren(lldb::opaque_compiler_type_t type, bool omit_empty_base_classes)
-{
- GetCompleteType(type);
+uint32_t JavaASTContext::GetNumChildren(lldb::opaque_compiler_type_t type,
+ bool omit_empty_base_classes) {
+ GetCompleteType(type);
- if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
- return ref->GetPointeeType().GetNumChildren(omit_empty_base_classes);
+ if (JavaReferenceType *ref =
+ llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
+ return ref->GetPointeeType().GetNumChildren(omit_empty_base_classes);
- if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
- return GetNumFields(type) + GetNumDirectBaseClasses(type);
+ if (llvm::isa<JavaObjectType>(static_cast<JavaType *>(type)))
+ return GetNumFields(type) + GetNumDirectBaseClasses(type);
- return 0;
+ return 0;
}
uint32_t
-JavaASTContext::GetNumDirectBaseClasses(lldb::opaque_compiler_type_t type)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
- return obj->GetNumInterfaces() + (obj->GetBaseClass() ? 1 : 0);
- }
- return 0;
+JavaASTContext::GetNumDirectBaseClasses(lldb::opaque_compiler_type_t type) {
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
+ return obj->GetNumInterfaces() + (obj->GetBaseClass() ? 1 : 0);
+ }
+ return 0;
}
uint32_t
-JavaASTContext::GetNumVirtualBaseClasses(lldb::opaque_compiler_type_t type)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
- return obj->GetNumInterfaces();
- }
- return 0;
+JavaASTContext::GetNumVirtualBaseClasses(lldb::opaque_compiler_type_t type) {
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
+ return obj->GetNumInterfaces();
+ }
+ return 0;
}
-CompilerType
-JavaASTContext::GetDirectBaseClassAtIndex(lldb::opaque_compiler_type_t type, size_t idx, uint32_t *bit_offset_ptr)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
-
- if (CompilerType base_class = obj->GetBaseClass())
- {
- if (idx == 0)
- return base_class;
- else
- --idx;
- }
- return obj->GetInterfaceAtIndex(idx);
+CompilerType JavaASTContext::GetDirectBaseClassAtIndex(
+ lldb::opaque_compiler_type_t type, size_t idx, uint32_t *bit_offset_ptr) {
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
+
+ if (CompilerType base_class = obj->GetBaseClass()) {
+ if (idx == 0)
+ return base_class;
+ else
+ --idx;
}
- return CompilerType();
+ return obj->GetInterfaceAtIndex(idx);
+ }
+ return CompilerType();
}
-CompilerType
-JavaASTContext::GetVirtualBaseClassAtIndex(lldb::opaque_compiler_type_t type, size_t idx, uint32_t *bit_offset_ptr)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
- return obj->GetInterfaceAtIndex(idx);
- }
- return CompilerType();
+CompilerType JavaASTContext::GetVirtualBaseClassAtIndex(
+ lldb::opaque_compiler_type_t type, size_t idx, uint32_t *bit_offset_ptr) {
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
+ return obj->GetInterfaceAtIndex(idx);
+ }
+ return CompilerType();
}
-void
-JavaASTContext::DumpValue(lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, Stream *s, lldb::Format format,
- const DataExtractor &data, lldb::offset_t data_offset, size_t data_byte_size,
- uint32_t bitfield_bit_size, uint32_t bitfield_bit_offset, bool show_types, bool show_summary,
- bool verbose, uint32_t depth)
-{
- assert(false && "Not implemented");
-}
-
-bool
-JavaASTContext::DumpTypeValue(lldb::opaque_compiler_type_t type, Stream *s, lldb::Format format,
- const DataExtractor &data, lldb::offset_t data_offset, size_t data_byte_size,
- uint32_t bitfield_bit_size, uint32_t bitfield_bit_offset,
- ExecutionContextScope *exe_scope)
-{
- if (IsScalarType(type))
- {
- return data.Dump(s, data_offset, format, data_byte_size,
- 1, // count
- UINT32_MAX, LLDB_INVALID_ADDRESS, bitfield_bit_size, bitfield_bit_offset, exe_scope);
- }
- return false;
+void JavaASTContext::DumpValue(
+ lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, Stream *s,
+ lldb::Format format, const DataExtractor &data, lldb::offset_t data_offset,
+ size_t data_byte_size, uint32_t bitfield_bit_size,
+ uint32_t bitfield_bit_offset, bool show_types, bool show_summary,
+ bool verbose, uint32_t depth) {
+ assert(false && "Not implemented");
}
-void
-JavaASTContext::DumpTypeDescription(lldb::opaque_compiler_type_t type)
-{
- StreamFile s(stdout, false);
- DumpTypeDescription(type, &s);
+bool JavaASTContext::DumpTypeValue(
+ lldb::opaque_compiler_type_t type, Stream *s, lldb::Format format,
+ const DataExtractor &data, lldb::offset_t data_offset,
+ size_t data_byte_size, uint32_t bitfield_bit_size,
+ uint32_t bitfield_bit_offset, ExecutionContextScope *exe_scope) {
+ if (IsScalarType(type)) {
+ return data.Dump(s, data_offset, format, data_byte_size,
+ 1, // count
+ UINT32_MAX, LLDB_INVALID_ADDRESS, bitfield_bit_size,
+ bitfield_bit_offset, exe_scope);
+ }
+ return false;
}
-void
-JavaASTContext::DumpTypeDescription(lldb::opaque_compiler_type_t type, Stream *s)
-{
- static_cast<JavaType *>(type)->Dump(s);
+void JavaASTContext::DumpTypeDescription(lldb::opaque_compiler_type_t type) {
+ StreamFile s(stdout, false);
+ DumpTypeDescription(type, &s);
}
-void
-JavaASTContext::DumpSummary(lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, Stream *s,
- const DataExtractor &data, lldb::offset_t data_offset, size_t data_byte_size)
-{
- assert(false && "Not implemented");
+void JavaASTContext::DumpTypeDescription(lldb::opaque_compiler_type_t type,
+ Stream *s) {
+ static_cast<JavaType *>(type)->Dump(s);
}
-int
-JavaASTContext::GetFunctionArgumentCount(lldb::opaque_compiler_type_t type)
-{
- return 0;
+void JavaASTContext::DumpSummary(lldb::opaque_compiler_type_t type,
+ ExecutionContext *exe_ctx, Stream *s,
+ const DataExtractor &data,
+ lldb::offset_t data_offset,
+ size_t data_byte_size) {
+ assert(false && "Not implemented");
}
-CompilerType
-JavaASTContext::GetFunctionArgumentTypeAtIndex(lldb::opaque_compiler_type_t type, size_t idx)
-{
- return CompilerType();
+int JavaASTContext::GetFunctionArgumentCount(
+ lldb::opaque_compiler_type_t type) {
+ return 0;
+}
+
+CompilerType JavaASTContext::GetFunctionArgumentTypeAtIndex(
+ lldb::opaque_compiler_type_t type, size_t idx) {
+ return CompilerType();
}
CompilerType
-JavaASTContext::GetFunctionReturnType(lldb::opaque_compiler_type_t type)
-{
- return CompilerType();
+JavaASTContext::GetFunctionReturnType(lldb::opaque_compiler_type_t type) {
+ return CompilerType();
}
size_t
-JavaASTContext::GetNumMemberFunctions(lldb::opaque_compiler_type_t type)
-{
- return 0;
+JavaASTContext::GetNumMemberFunctions(lldb::opaque_compiler_type_t type) {
+ return 0;
}
TypeMemberFunctionImpl
-JavaASTContext::GetMemberFunctionAtIndex(lldb::opaque_compiler_type_t type, size_t idx)
-{
- return TypeMemberFunctionImpl();
-}
+JavaASTContext::GetMemberFunctionAtIndex(lldb::opaque_compiler_type_t type,
+ size_t idx) {
+ return TypeMemberFunctionImpl();
+}
+
+CompilerType JavaASTContext::GetChildCompilerTypeAtIndex(
+ lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, size_t idx,
+ bool transparent_pointers, bool omit_empty_base_classes,
+ bool ignore_array_bounds, std::string &child_name,
+ uint32_t &child_byte_size, int32_t &child_byte_offset,
+ uint32_t &child_bitfield_bit_size, uint32_t &child_bitfield_bit_offset,
+ bool &child_is_base_class, bool &child_is_deref_of_parent,
+ ValueObject *valobj, uint64_t &language_flags) {
+ child_name.clear();
+ child_byte_size = 0;
+ child_byte_offset = 0;
+ child_bitfield_bit_size = 0;
+ child_bitfield_bit_offset = 0;
+ child_is_base_class = false;
+ child_is_deref_of_parent = false;
+ language_flags = 0;
+
+ ExecutionContextScope *exec_ctx_scope =
+ exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr;
+
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
-CompilerType
-JavaASTContext::GetChildCompilerTypeAtIndex(lldb::opaque_compiler_type_t type, ExecutionContext *exe_ctx, size_t idx,
- bool transparent_pointers, bool omit_empty_base_classes,
- bool ignore_array_bounds, std::string &child_name,
- uint32_t &child_byte_size, int32_t &child_byte_offset,
- uint32_t &child_bitfield_bit_size, uint32_t &child_bitfield_bit_offset,
- bool &child_is_base_class, bool &child_is_deref_of_parent,
- ValueObject *valobj, uint64_t &language_flags)
-{
- child_name.clear();
- child_byte_size = 0;
+ if (CompilerType base_class = obj->GetBaseClass()) {
+ if (idx == 0) {
+ JavaType *base_class_type =
+ static_cast<JavaType *>(base_class.GetOpaqueQualType());
+ child_name = base_class_type->GetName().GetCString();
+ child_byte_size = base_class.GetByteSize(
+ exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr);
+ child_byte_offset = obj->GetBaseClassOffset();
+ child_is_base_class = true;
+ return base_class;
+ }
+ idx -= 1;
+ }
+
+ JavaObjectType::Field *field = obj->GetFieldAtIndex(idx);
+ if (!field)
+ return CompilerType();
+
+ child_name = field->m_name.AsCString();
+ child_byte_size = field->m_type.GetByteSize(exec_ctx_scope);
+ child_byte_offset = field->m_offset;
+ return field->m_type;
+ } else if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(
+ static_cast<JavaType *>(type))) {
+ CompilerType pointee_type = ref->GetPointeeType();
+
+ if (transparent_pointers)
+ return pointee_type.GetChildCompilerTypeAtIndex(
+ exe_ctx, idx, transparent_pointers, omit_empty_base_classes,
+ ignore_array_bounds, child_name, child_byte_size, child_byte_offset,
+ child_bitfield_bit_size, child_bitfield_bit_offset,
+ child_is_base_class, child_is_deref_of_parent, valobj,
+ language_flags);
+
+ if (idx != 0)
+ return CompilerType();
+
+ if (valobj && valobj->GetName())
+ child_name = valobj->GetName().GetCString();
+ child_is_deref_of_parent = true;
child_byte_offset = 0;
- child_bitfield_bit_size = 0;
- child_bitfield_bit_offset = 0;
- child_is_base_class = false;
- child_is_deref_of_parent = false;
- language_flags = 0;
-
- ExecutionContextScope *exec_ctx_scope = exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr;
-
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
-
- if (CompilerType base_class = obj->GetBaseClass())
- {
- if (idx == 0)
- {
- JavaType *base_class_type = static_cast<JavaType *>(base_class.GetOpaqueQualType());
- child_name = base_class_type->GetName().GetCString();
- child_byte_size = base_class.GetByteSize(exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr);
- child_byte_offset = obj->GetBaseClassOffset();
- child_is_base_class = true;
- return base_class;
- }
- idx -= 1;
- }
-
- JavaObjectType::Field *field = obj->GetFieldAtIndex(idx);
- if (!field)
- return CompilerType();
-
- child_name = field->m_name.AsCString();
- child_byte_size = field->m_type.GetByteSize(exec_ctx_scope);
- child_byte_offset = field->m_offset;
- return field->m_type;
- }
- else if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
- {
- CompilerType pointee_type = ref->GetPointeeType();
-
- if (transparent_pointers)
- return pointee_type.GetChildCompilerTypeAtIndex(
- exe_ctx, idx, transparent_pointers, omit_empty_base_classes, ignore_array_bounds, child_name,
- child_byte_size, child_byte_offset, child_bitfield_bit_size, child_bitfield_bit_offset,
- child_is_base_class, child_is_deref_of_parent, valobj, language_flags);
-
- if (idx != 0)
- return CompilerType();
-
- if (valobj && valobj->GetName())
- child_name = valobj->GetName().GetCString();
- child_is_deref_of_parent = true;
- child_byte_offset = 0;
- child_byte_size = pointee_type.GetByteSize(exec_ctx_scope);
- return pointee_type;
- }
- return CompilerType();
+ child_byte_size = pointee_type.GetByteSize(exec_ctx_scope);
+ return pointee_type;
+ }
+ return CompilerType();
}
uint32_t
-JavaASTContext::GetIndexOfChildWithName(lldb::opaque_compiler_type_t type, const char *name,
- bool omit_empty_base_classes)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
-
- uint32_t index_offset = 0;
- if (CompilerType base_class = obj->GetBaseClass())
- {
- if (base_class.GetTypeName() == ConstString(name))
- return 0;
- index_offset = 1;
- }
- for (uint32_t i = 0; i < obj->GetNumFields(); ++i)
- {
- if (obj->GetFieldAtIndex(i)->m_name == ConstString(name))
- return i + index_offset;
- }
- }
- else if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
- {
- return GetIndexOfChildWithName(ref->GetPointeeType().GetOpaqueQualType(), name, omit_empty_base_classes);
- }
- return UINT_MAX;
-}
+JavaASTContext::GetIndexOfChildWithName(lldb::opaque_compiler_type_t type,
+ const char *name,
+ bool omit_empty_base_classes) {
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
-size_t
-JavaASTContext::GetIndexOfChildMemberWithName(lldb::opaque_compiler_type_t type, const char *name,
- bool omit_empty_base_classes, std::vector<uint32_t> &child_indexes)
-{
- child_indexes.clear();
-
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type)))
- {
- GetCompleteType(type);
-
- uint32_t index_offset = 0;
- if (CompilerType base_class = obj->GetBaseClass())
- {
- if (GetIndexOfChildMemberWithName(base_class.GetOpaqueQualType(), name, omit_empty_base_classes,
- child_indexes) != 0)
- {
- child_indexes.insert(child_indexes.begin(), 0);
- return child_indexes.size();
- }
- index_offset = 1;
- }
-
- for (uint32_t i = 0; i < obj->GetNumFields(); ++i)
- {
- if (obj->GetFieldAtIndex(i)->m_name == ConstString(name))
- {
- child_indexes.push_back(i + index_offset);
- return child_indexes.size();
- }
- }
+ uint32_t index_offset = 0;
+ if (CompilerType base_class = obj->GetBaseClass()) {
+ if (base_class.GetTypeName() == ConstString(name))
+ return 0;
+ index_offset = 1;
}
- else if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(static_cast<JavaType *>(type)))
- {
- return GetIndexOfChildMemberWithName(ref->GetPointeeType().GetOpaqueQualType(), name, omit_empty_base_classes,
- child_indexes);
+ for (uint32_t i = 0; i < obj->GetNumFields(); ++i) {
+ if (obj->GetFieldAtIndex(i)->m_name == ConstString(name))
+ return i + index_offset;
}
- return 0;
-}
-
-CompilerType
-JavaASTContext::GetLValueReferenceType(lldb::opaque_compiler_type_t type)
-{
- return CreateReferenceType(CompilerType(this, type));
+ } else if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(
+ static_cast<JavaType *>(type))) {
+ return GetIndexOfChildWithName(ref->GetPointeeType().GetOpaqueQualType(),
+ name, omit_empty_base_classes);
+ }
+ return UINT_MAX;
}
-ConstString
-JavaASTContext::DeclContextGetScopeQualifiedName(lldb::opaque_compiler_type_t opaque_decl_ctx)
-{
- return GetTypeName(opaque_decl_ctx);
-}
+size_t JavaASTContext::GetIndexOfChildMemberWithName(
+ lldb::opaque_compiler_type_t type, const char *name,
+ bool omit_empty_base_classes, std::vector<uint32_t> &child_indexes) {
+ child_indexes.clear();
-static void
-AddPrimitiveType(JavaASTContext::JavaTypeMap &type_map, JavaPrimitiveType::TypeKind type_kind)
-{
- JavaPrimitiveType *type = new JavaPrimitiveType(type_kind);
- type_map.emplace(type->GetName(), std::unique_ptr<JavaASTContext::JavaType>(type));
-}
+ if (JavaObjectType *obj =
+ llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type))) {
+ GetCompleteType(type);
-CompilerType
-JavaASTContext::CreateBaseType(const ConstString &name)
-{
- if (m_base_type_map.empty())
- {
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeByte);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeShort);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeInt);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeLong);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeFloat);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeDouble);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeBoolean);
- AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeChar);
+ uint32_t index_offset = 0;
+ if (CompilerType base_class = obj->GetBaseClass()) {
+ if (GetIndexOfChildMemberWithName(base_class.GetOpaqueQualType(), name,
+ omit_empty_base_classes,
+ child_indexes) != 0) {
+ child_indexes.insert(child_indexes.begin(), 0);
+ return child_indexes.size();
+ }
+ index_offset = 1;
}
- auto it = m_base_type_map.find(name);
- if (it != m_base_type_map.end())
- return CompilerType(this, it->second.get());
- return CompilerType();
-}
-CompilerType
-JavaASTContext::CreateObjectType(const ConstString &name, const ConstString &linkage_name, uint32_t byte_size)
-{
- auto it = m_object_type_map.find(name);
- if (it == m_object_type_map.end())
- {
- std::unique_ptr<JavaType> object_type(new JavaObjectType(name, linkage_name, byte_size));
- it = m_object_type_map.emplace(name, std::move(object_type)).first;
+ for (uint32_t i = 0; i < obj->GetNumFields(); ++i) {
+ if (obj->GetFieldAtIndex(i)->m_name == ConstString(name)) {
+ child_indexes.push_back(i + index_offset);
+ return child_indexes.size();
+ }
}
- return CompilerType(this, it->second.get());
+ } else if (JavaReferenceType *ref = llvm::dyn_cast<JavaReferenceType>(
+ static_cast<JavaType *>(type))) {
+ return GetIndexOfChildMemberWithName(
+ ref->GetPointeeType().GetOpaqueQualType(), name,
+ omit_empty_base_classes, child_indexes);
+ }
+ return 0;
}
CompilerType
-JavaASTContext::CreateArrayType(const ConstString &linkage_name, const CompilerType &element_type,
- const DWARFExpression &length_expression, const lldb::addr_t data_offset)
-{
- ConstString name = element_type.GetTypeName();
- auto it = m_array_type_map.find(name);
- if (it == m_array_type_map.end())
- {
- std::unique_ptr<JavaType> array_type(new JavaArrayType(linkage_name, element_type, length_expression,
- data_offset));
- it = m_array_type_map.emplace(name, std::move(array_type)).first;
- }
+JavaASTContext::GetLValueReferenceType(lldb::opaque_compiler_type_t type) {
+ return CreateReferenceType(CompilerType(this, type));
+}
+
+ConstString JavaASTContext::DeclContextGetScopeQualifiedName(
+ lldb::opaque_compiler_type_t opaque_decl_ctx) {
+ return GetTypeName(opaque_decl_ctx);
+}
+
+static void AddPrimitiveType(JavaASTContext::JavaTypeMap &type_map,
+ JavaPrimitiveType::TypeKind type_kind) {
+ JavaPrimitiveType *type = new JavaPrimitiveType(type_kind);
+ type_map.emplace(type->GetName(),
+ std::unique_ptr<JavaASTContext::JavaType>(type));
+}
+
+CompilerType JavaASTContext::CreateBaseType(const ConstString &name) {
+ if (m_base_type_map.empty()) {
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeByte);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeShort);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeInt);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeLong);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeFloat);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeDouble);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeBoolean);
+ AddPrimitiveType(m_base_type_map, JavaPrimitiveType::eTypeChar);
+ }
+ auto it = m_base_type_map.find(name);
+ if (it != m_base_type_map.end())
return CompilerType(this, it->second.get());
+ return CompilerType();
+}
+
+CompilerType JavaASTContext::CreateObjectType(const ConstString &name,
+ const ConstString &linkage_name,
+ uint32_t byte_size) {
+ auto it = m_object_type_map.find(name);
+ if (it == m_object_type_map.end()) {
+ std::unique_ptr<JavaType> object_type(
+ new JavaObjectType(name, linkage_name, byte_size));
+ it = m_object_type_map.emplace(name, std::move(object_type)).first;
+ }
+ return CompilerType(this, it->second.get());
+}
+
+CompilerType JavaASTContext::CreateArrayType(
+ const ConstString &linkage_name, const CompilerType &element_type,
+ const DWARFExpression &length_expression, const lldb::addr_t data_offset) {
+ ConstString name = element_type.GetTypeName();
+ auto it = m_array_type_map.find(name);
+ if (it == m_array_type_map.end()) {
+ std::unique_ptr<JavaType> array_type(new JavaArrayType(
+ linkage_name, element_type, length_expression, data_offset));
+ it = m_array_type_map.emplace(name, std::move(array_type)).first;
+ }
+ return CompilerType(this, it->second.get());
}
CompilerType
-JavaASTContext::CreateReferenceType(const CompilerType &pointee_type)
-{
- ConstString name = pointee_type.GetTypeName();
- auto it = m_reference_type_map.find(name);
- if (it == m_reference_type_map.end())
- it = m_reference_type_map.emplace(name, std::unique_ptr<JavaType>(new JavaReferenceType(pointee_type))).first;
- return CompilerType(this, it->second.get());
-}
-
-void
-JavaASTContext::CompleteObjectType(const CompilerType &object_type)
-{
- JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(object_type.GetOpaqueQualType()));
- assert(obj && "JavaASTContext::CompleteObjectType called with not a JavaObjectType");
- obj->SetCompleteType(true);
-}
-
-void
-JavaASTContext::AddBaseClassToObject(const CompilerType &object_type, const CompilerType &member_type,
- uint32_t member_offset)
-{
- JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(object_type.GetOpaqueQualType()));
- assert(obj && "JavaASTContext::AddMemberToObject called with not a JavaObjectType");
- obj->AddBaseClass(member_type, member_offset);
-}
-
-void
-JavaASTContext::AddMemberToObject(const CompilerType &object_type, const ConstString &name,
- const CompilerType &member_type, uint32_t member_offset)
-{
- JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(object_type.GetOpaqueQualType()));
- assert(obj && "JavaASTContext::AddMemberToObject called with not a JavaObjectType");
- obj->AddField(name, member_type, member_offset);
-}
-
-void
-JavaASTContext::SetDynamicTypeId(const CompilerType &type, const DWARFExpression &type_id)
-{
- JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type.GetOpaqueQualType()));
- assert(obj && "JavaASTContext::SetDynamicTypeId called with not a JavaObjectType");
- obj->SetDynamicTypeId(type_id);
-}
-
-uint64_t
-JavaASTContext::CalculateDynamicTypeId(ExecutionContext *exe_ctx, const CompilerType &type, ValueObject &in_value)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type.GetOpaqueQualType())))
- return obj->CalculateDynamicTypeId(exe_ctx, in_value);
- if (JavaArrayType *arr = llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type.GetOpaqueQualType())))
- return arr->CalculateDynamicTypeId(exe_ctx, in_value);
- return UINT64_MAX;
-}
-
-uint32_t
-JavaASTContext::CalculateArraySize(const CompilerType &type, ValueObject &in_value)
-{
- if (JavaArrayType *arr = llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type.GetOpaqueQualType())))
- return arr->GetNumElements(&in_value);
- return UINT32_MAX;
-}
-
-uint64_t
-JavaASTContext::CalculateArrayElementOffset(const CompilerType &type, size_t index)
-{
- if (JavaArrayType *arr = llvm::dyn_cast<JavaArrayType>(static_cast<JavaType *>(type.GetOpaqueQualType())))
- return arr->GetElementOffset(index);
- return UINT64_MAX;
-}
-
-ConstString
-JavaASTContext::GetLinkageName(const CompilerType &type)
-{
- if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(static_cast<JavaType *>(type.GetOpaqueQualType())))
- return obj->GetLinkageName();
- return ConstString();
+JavaASTContext::CreateReferenceType(const CompilerType &pointee_type) {
+ ConstString name = pointee_type.GetTypeName();
+ auto it = m_reference_type_map.find(name);
+ if (it == m_reference_type_map.end())
+ it = m_reference_type_map
+ .emplace(name, std::unique_ptr<JavaType>(
+ new JavaReferenceType(pointee_type)))
+ .first;
+ return CompilerType(this, it->second.get());
+}
+
+void JavaASTContext::CompleteObjectType(const CompilerType &object_type) {
+ JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(object_type.GetOpaqueQualType()));
+ assert(obj &&
+ "JavaASTContext::CompleteObjectType called with not a JavaObjectType");
+ obj->SetCompleteType(true);
+}
+
+void JavaASTContext::AddBaseClassToObject(const CompilerType &object_type,
+ const CompilerType &member_type,
+ uint32_t member_offset) {
+ JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(object_type.GetOpaqueQualType()));
+ assert(obj &&
+ "JavaASTContext::AddMemberToObject called with not a JavaObjectType");
+ obj->AddBaseClass(member_type, member_offset);
+}
+
+void JavaASTContext::AddMemberToObject(const CompilerType &object_type,
+ const ConstString &name,
+ const CompilerType &member_type,
+ uint32_t member_offset) {
+ JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(object_type.GetOpaqueQualType()));
+ assert(obj &&
+ "JavaASTContext::AddMemberToObject called with not a JavaObjectType");
+ obj->AddField(name, member_type, member_offset);
+}
+
+void JavaASTContext::SetDynamicTypeId(const CompilerType &type,
+ const DWARFExpression &type_id) {
+ JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(type.GetOpaqueQualType()));
+ assert(obj &&
+ "JavaASTContext::SetDynamicTypeId called with not a JavaObjectType");
+ obj->SetDynamicTypeId(type_id);
+}
+
+uint64_t JavaASTContext::CalculateDynamicTypeId(ExecutionContext *exe_ctx,
+ const CompilerType &type,
+ ValueObject &in_value) {
+ if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(type.GetOpaqueQualType())))
+ return obj->CalculateDynamicTypeId(exe_ctx, in_value);
+ if (JavaArrayType *arr = llvm::dyn_cast<JavaArrayType>(
+ static_cast<JavaType *>(type.GetOpaqueQualType())))
+ return arr->CalculateDynamicTypeId(exe_ctx, in_value);
+ return UINT64_MAX;
+}
+
+uint32_t JavaASTContext::CalculateArraySize(const CompilerType &type,
+ ValueObject &in_value) {
+ if (JavaArrayType *arr = llvm::dyn_cast<JavaArrayType>(
+ static_cast<JavaType *>(type.GetOpaqueQualType())))
+ return arr->GetNumElements(&in_value);
+ return UINT32_MAX;
+}
+
+uint64_t JavaASTContext::CalculateArrayElementOffset(const CompilerType &type,
+ size_t index) {
+ if (JavaArrayType *arr = llvm::dyn_cast<JavaArrayType>(
+ static_cast<JavaType *>(type.GetOpaqueQualType())))
+ return arr->GetElementOffset(index);
+ return UINT64_MAX;
+}
+
+ConstString JavaASTContext::GetLinkageName(const CompilerType &type) {
+ if (JavaObjectType *obj = llvm::dyn_cast<JavaObjectType>(
+ static_cast<JavaType *>(type.GetOpaqueQualType())))
+ return obj->GetLinkageName();
+ return ConstString();
}