Author: enrico Date: Thu May 5 16:10:28 2016 New Revision: 268686 URL: http://llvm.org/viewvc/llvm-project?rev=268686&view=rev Log: Revert r268591
"Allow LanguageRuntimes to return an error if they fail in the course of dynamic type discovery This is not meant to report that a value doesn't have a dynamic type - it is only meant as a mechanism to propagate actual type discovery issues (e.g. malformed type metadata for languages that have such a notion) This information is used by ValueObjectDynamic to set its own m_error, which is a fairly sharp and heavyweight tool to begin with For the time being, this is an architectural improvement but a practical no-op as no existing runtimes are actually setting errors" I need to think about what I want to do in this space more carefully - this attempt might be too heavy of a hammer for the nail I am trying to fix, and I don't want to leave it in while I ponder Modified: lldb/trunk/include/lldb/Target/LanguageRuntime.h lldb/trunk/source/Core/ValueObjectDynamicValue.cpp lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.cpp lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.h lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.cpp lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.h lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h Modified: lldb/trunk/include/lldb/Target/LanguageRuntime.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/LanguageRuntime.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/LanguageRuntime.h (original) +++ lldb/trunk/include/lldb/Target/LanguageRuntime.h Thu May 5 16:10:28 2016 @@ -54,8 +54,7 @@ public: lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) = 0; + Value::ValueType &value_type) = 0; // This call should return a CompilerType given a generic type name // and an ExecutionContextScope in which one can actually fetch Modified: lldb/trunk/source/Core/ValueObjectDynamicValue.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectDynamicValue.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Core/ValueObjectDynamicValue.cpp (original) +++ lldb/trunk/source/Core/ValueObjectDynamicValue.cpp Thu May 5 16:10:28 2016 @@ -187,41 +187,23 @@ ValueObjectDynamicValue::UpdateValue () LanguageRuntime *runtime = nullptr; lldb::LanguageType known_type = m_parent->GetObjectRuntimeLanguage(); - - Error dynamic_type_discovery_error; - if (known_type != lldb::eLanguageTypeUnknown && known_type != lldb::eLanguageTypeC) { runtime = process->GetLanguageRuntime (known_type); if (runtime) - found_dynamic_type = runtime->GetDynamicTypeAndAddress (*m_parent, - m_use_dynamic, - class_type_or_name, - dynamic_address, - value_type, - dynamic_type_discovery_error); + found_dynamic_type = runtime->GetDynamicTypeAndAddress (*m_parent, m_use_dynamic, class_type_or_name, dynamic_address, value_type); } else { runtime = process->GetLanguageRuntime (lldb::eLanguageTypeC_plus_plus); if (runtime) - found_dynamic_type = runtime->GetDynamicTypeAndAddress (*m_parent, - m_use_dynamic, - class_type_or_name, - dynamic_address, - value_type, - dynamic_type_discovery_error); + found_dynamic_type = runtime->GetDynamicTypeAndAddress (*m_parent, m_use_dynamic, class_type_or_name, dynamic_address, value_type); if (!found_dynamic_type) { runtime = process->GetLanguageRuntime (lldb::eLanguageTypeObjC); if (runtime) - found_dynamic_type = runtime->GetDynamicTypeAndAddress (*m_parent, - m_use_dynamic, - class_type_or_name, - dynamic_address, - value_type, - dynamic_type_discovery_error); + found_dynamic_type = runtime->GetDynamicTypeAndAddress (*m_parent, m_use_dynamic, class_type_or_name, dynamic_address, value_type); } } @@ -247,24 +229,16 @@ ValueObjectDynamicValue::UpdateValue () m_type_impl.Clear(); } - // If we don't have a dynamic type... + // If we don't have a dynamic type, then make ourselves just a echo of our parent. + // Or we could return false, and make ourselves an echo of our parent? if (!found_dynamic_type) { - // ...and it's not because of an error, let's make ourselves an echo of our parent - if (dynamic_type_discovery_error.Success()) - { - if (m_dynamic_type_info) - SetValueDidChange(true); - ClearDynamicTypeInformation(); - m_dynamic_type_info.Clear(); - m_value = m_parent->GetValue(); - m_error = m_value.GetValueAsData (&exe_ctx, m_data, 0, GetModule().get()); - } - else - { - // ...but if it is because of an error, let's report that to the user - m_error = dynamic_type_discovery_error; - } + if (m_dynamic_type_info) + SetValueDidChange(true); + ClearDynamicTypeInformation(); + m_dynamic_type_info.Clear(); + m_value = m_parent->GetValue(); + m_error = m_value.GetValueAsData (&exe_ctx, m_data, 0, GetModule().get()); return m_error.Success(); } Modified: lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp Thu May 5 16:10:28 2016 @@ -53,8 +53,7 @@ ItaniumABILanguageRuntime::GetDynamicTyp lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &dynamic_address, - Value::ValueType &value_type, - Error &error) + Value::ValueType &value_type) { // For Itanium, if the type has a vtable pointer in the object, it will be at offset 0 // in the object. That will point to the "address point" within the vtable (not the beginning of the @@ -64,7 +63,6 @@ ItaniumABILanguageRuntime::GetDynamicTyp // start of the value object which holds the dynamic type. // - error.Clear(); class_type_or_name.Clear(); value_type = Value::ValueType::eValueTypeScalar; Modified: lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h Thu May 5 16:10:28 2016 @@ -53,8 +53,7 @@ namespace lldb_private { lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) override; + Value::ValueType &value_type) override; TypeAndOrName FixUpDynamicType(const TypeAndOrName& type_and_or_name, Modified: lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.cpp Thu May 5 16:10:28 2016 @@ -140,15 +140,11 @@ GoLanguageRuntime::CouldHaveDynamicValue } bool -GoLanguageRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &dynamic_address, - Value::ValueType &value_type, - Error &error) +GoLanguageRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, Address &dynamic_address, + Value::ValueType &value_type) { value_type = Value::eValueTypeScalar; - error.Clear(); class_type_or_name.Clear(); if (CouldHaveDynamicValue (in_value)) { Modified: lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.h Thu May 5 16:10:28 2016 @@ -61,12 +61,9 @@ namespace lldb_private { return false; } - bool GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &address, - Value::ValueType &value_type, - Error &error) override; + bool GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, Address &address, + Value::ValueType &value_type) override; bool CouldHaveDynamicValue(ValueObject &in_value) override; Modified: lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.cpp Thu May 5 16:10:28 2016 @@ -105,14 +105,10 @@ GetDynamicTypeId(ExecutionContext *exe_c } bool -JavaLanguageRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &dynamic_address, - Value::ValueType &value_type, - Error &error) +JavaLanguageRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, Address &dynamic_address, + Value::ValueType &value_type) { - error.Clear(); class_type_or_name.Clear(); // null references don't have a dynamic type Modified: lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/Java/JavaLanguageRuntime.h Thu May 5 16:10:28 2016 @@ -74,12 +74,9 @@ public: 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, - Error &error) override; + GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, Address &address, + Value::ValueType &value_type) override; protected: JavaLanguageRuntime(Process *process); Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp Thu May 5 16:10:28 2016 @@ -270,10 +270,8 @@ AppleObjCRuntime::GetDynamicTypeAndAddre lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) + Value::ValueType &value_type) { - error.Clear(); return false; } Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h Thu May 5 16:10:28 2016 @@ -63,8 +63,7 @@ public: lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) override; + Value::ValueType &value_type) override; TypeAndOrName FixUpDynamicType (const TypeAndOrName& type_and_or_name, Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp Thu May 5 16:10:28 2016 @@ -50,10 +50,8 @@ AppleObjCRuntimeV1::GetDynamicTypeAndAdd lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) + Value::ValueType &value_type) { - error.Clear(); class_type_or_name.Clear(); value_type = Value::ValueType::eValueTypeScalar; if (CouldHaveDynamicValue(in_value)) Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h Thu May 5 16:10:28 2016 @@ -125,8 +125,7 @@ public: lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) override; + Value::ValueType &value_type) override; UtilityFunction * CreateObjectChecker(const char *) override; Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp Thu May 5 16:10:28 2016 @@ -407,8 +407,7 @@ AppleObjCRuntimeV2::GetDynamicTypeAndAdd DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) + Value::ValueType &value_type) { // We should never get here with a null process... assert (m_process != NULL); @@ -423,7 +422,6 @@ AppleObjCRuntimeV2::GetDynamicTypeAndAdd else assert (in_value.GetTargetSP().get() == m_process->CalculateTarget().get()); - error.Clear(); class_type_or_name.Clear(); value_type = Value::ValueType::eValueTypeScalar; Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h Thu May 5 16:10:28 2016 @@ -63,8 +63,7 @@ public: lldb::DynamicValueType use_dynamic, TypeAndOrName &class_type_or_name, Address &address, - Value::ValueType &value_type, - Error &error) override; + Value::ValueType &value_type) override; UtilityFunction * CreateObjectChecker(const char *) override; Modified: lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp Thu May 5 16:10:28 2016 @@ -906,14 +906,10 @@ RenderScriptRuntime::IsVTableName(const } bool -RenderScriptRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &address, - Value::ValueType &value_type, - Error &error) +RenderScriptRuntime::GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, Address &address, + Value::ValueType &value_type) { - error.Clear(); return false; } Modified: lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h?rev=268686&r1=268685&r2=268686&view=diff ============================================================================== --- lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h (original) +++ lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h Thu May 5 16:10:28 2016 @@ -178,12 +178,9 @@ public: IsVTableName(const char *name) override; bool - GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &address, - Value::ValueType &value_type, - Error &error) override; + GetDynamicTypeAndAddress(ValueObject &in_value, lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, Address &address, + Value::ValueType &value_type) override; TypeAndOrName FixUpDynamicType(const TypeAndOrName &type_and_or_name, ValueObject &static_value) override; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits