Author: zturner Date: Thu Nov 17 23:45:41 2016 New Revision: 287315 URL: http://llvm.org/viewvc/llvm-project?rev=287315&view=rev Log: Remove an out param from ValueObject::GetValueForExpressionPath.
This argument was only used in one place in the codebase, and it was in a non-critical log statement and can be easily substituted for an equally meaningful field instead. The payoff of computing this value is not worth the added complexity. Modified: lldb/trunk/include/lldb/Core/ValueObject.h lldb/trunk/source/Core/FormatEntity.cpp lldb/trunk/source/Core/ValueObject.cpp lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp lldb/trunk/source/Symbol/Variable.cpp Modified: lldb/trunk/include/lldb/Core/ValueObject.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=287315&r1=287314&r2=287315&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/ValueObject.h (original) +++ lldb/trunk/include/lldb/Core/ValueObject.h Thu Nov 17 23:45:41 2016 @@ -394,7 +394,7 @@ public: GetExpressionPathFormat = eGetExpressionPathFormatDereferencePointers); lldb::ValueObjectSP GetValueForExpressionPath( - const char *expression, const char **first_unparsed = nullptr, + const char *expression, ExpressionPathScanEndReason *reason_to_stop = nullptr, ExpressionPathEndResultType *final_value_type = nullptr, const GetValueForExpressionPathOptions &options = @@ -1002,8 +1002,7 @@ private: virtual CompilerType MaybeCalculateCompleteType(); lldb::ValueObjectSP GetValueForExpressionPath_Impl( - const char *expression_cstr, const char **first_unparsed, - ExpressionPathScanEndReason *reason_to_stop, + const char *expression_cstr, ExpressionPathScanEndReason *reason_to_stop, ExpressionPathEndResultType *final_value_type, const GetValueForExpressionPathOptions &options, ExpressionPathAftermath *final_task_on_target); Modified: lldb/trunk/source/Core/FormatEntity.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FormatEntity.cpp?rev=287315&r1=287314&r2=287315&view=diff ============================================================================== --- lldb/trunk/source/Core/FormatEntity.cpp (original) +++ lldb/trunk/source/Core/FormatEntity.cpp Thu Nov 17 23:45:41 2016 @@ -614,7 +614,6 @@ static ValueObjectSP ExpandIndexedExpres if (log) log->Printf("[ExpandIndexedExpression] name to deref: %s", ptr_deref_buffer.c_str()); - const char *first_unparsed; ValueObject::GetValueForExpressionPathOptions options; ValueObject::ExpressionPathEndResultType final_value_type; ValueObject::ExpressionPathScanEndReason reason_to_stop; @@ -622,20 +621,18 @@ static ValueObjectSP ExpandIndexedExpres (deref_pointer ? ValueObject::eExpressionPathAftermathDereference : ValueObject::eExpressionPathAftermathNothing); ValueObjectSP item = valobj->GetValueForExpressionPath( - ptr_deref_buffer.c_str(), &first_unparsed, &reason_to_stop, - &final_value_type, options, &what_next); + ptr_deref_buffer.c_str(), &reason_to_stop, &final_value_type, options, + &what_next); if (!item) { if (log) - log->Printf("[ExpandIndexedExpression] ERROR: unparsed portion = %s, why " - "stopping = %d," + log->Printf("[ExpandIndexedExpression] ERROR: why stopping = %d," " final_value_type %d", - first_unparsed, reason_to_stop, final_value_type); + reason_to_stop, final_value_type); } else { if (log) - log->Printf("[ExpandIndexedExpression] ALL RIGHT: unparsed portion = %s, " - "why stopping = %d," - " final_value_type %d", - first_unparsed, reason_to_stop, final_value_type); + log->Printf("[ExpandIndexedExpression] ALL RIGHT: why stopping = %d, " + "final_value_type %d", + reason_to_stop, final_value_type); } return item; } @@ -724,7 +721,6 @@ static bool DumpValue(Stream &s, const S int64_t index_lower = -1; int64_t index_higher = -1; bool is_array_range = false; - const char *first_unparsed; bool was_plain_var = false; bool was_var_format = false; bool was_var_indexed = false; @@ -762,25 +758,23 @@ static bool DumpValue(Stream &s, const S log->Printf("[Debugger::FormatPrompt] symbol to expand: %s", expr_path.c_str()); - target = valobj - ->GetValueForExpressionPath(expr_path.c_str(), &first_unparsed, - &reason_to_stop, &final_value_type, - options, &what_next) - .get(); + target = + valobj + ->GetValueForExpressionPath(expr_path.c_str(), &reason_to_stop, + &final_value_type, options, &what_next) + .get(); if (!target) { if (log) - log->Printf("[Debugger::FormatPrompt] ERROR: unparsed portion = %s, " - "why stopping = %d," - " final_value_type %d", - first_unparsed, reason_to_stop, final_value_type); + log->Printf("[Debugger::FormatPrompt] ERROR: expr = %s, " + "why stopping = %d, final_value_type %d", + expr_path.c_str(), reason_to_stop, final_value_type); return false; } else { if (log) - log->Printf("[Debugger::FormatPrompt] ALL RIGHT: unparsed portion = " - "%s, why stopping = %d," - " final_value_type %d", - first_unparsed, reason_to_stop, final_value_type); + log->Printf("[Debugger::FormatPrompt] ALL RIGHT: expr = %s, " + "why stopping = %d, final_value_type %d", + expr_path.c_str(), reason_to_stop, final_value_type); target = target ->GetQualifiedRepresentationIfAvailable( target->GetDynamicValueType(), true) Modified: lldb/trunk/source/Core/ValueObject.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=287315&r1=287314&r2=287315&view=diff ============================================================================== --- lldb/trunk/source/Core/ValueObject.cpp (original) +++ lldb/trunk/source/Core/ValueObject.cpp Thu Nov 17 23:45:41 2016 @@ -1922,7 +1922,7 @@ ValueObject::GetSyntheticExpressionPathC // We haven't made a synthetic array member for expression yet, so // lets make one and cache it for any future reference. synthetic_child_sp = GetValueForExpressionPath( - expression, NULL, NULL, NULL, + expression, nullptr, nullptr, GetValueForExpressionPathOptions().SetSyntheticChildrenTraversal( GetValueForExpressionPathOptions::SyntheticChildrenTraversal:: None)); @@ -2166,13 +2166,11 @@ void ValueObject::GetExpressionPath(Stre } ValueObjectSP ValueObject::GetValueForExpressionPath( - const char *expression, const char **first_unparsed, - ExpressionPathScanEndReason *reason_to_stop, + const char *expression, ExpressionPathScanEndReason *reason_to_stop, ExpressionPathEndResultType *final_value_type, const GetValueForExpressionPathOptions &options, ExpressionPathAftermath *final_task_on_target) { - const char *dummy_first_unparsed; ExpressionPathScanEndReason dummy_reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnknown; ExpressionPathEndResultType dummy_final_value_type = @@ -2181,8 +2179,7 @@ ValueObjectSP ValueObject::GetValueForEx ValueObject::eExpressionPathAftermathNothing; ValueObjectSP ret_val = GetValueForExpressionPath_Impl( - expression, first_unparsed ? first_unparsed : &dummy_first_unparsed, - reason_to_stop ? reason_to_stop : &dummy_reason_to_stop, + expression, reason_to_stop ? reason_to_stop : &dummy_reason_to_stop, final_value_type ? final_value_type : &dummy_final_value_type, options, final_task_on_target ? final_task_on_target : &dummy_final_task_on_target); @@ -2237,8 +2234,7 @@ ValueObjectSP ValueObject::GetValueForEx } ValueObjectSP ValueObject::GetValueForExpressionPath_Impl( - const char *expression_cstr, const char **first_unparsed, - ExpressionPathScanEndReason *reason_to_stop, + const char *expression_cstr, ExpressionPathScanEndReason *reason_to_stop, ExpressionPathEndResultType *final_result, const GetValueForExpressionPathOptions &options, ExpressionPathAftermath *what_next) { @@ -2247,13 +2243,8 @@ ValueObjectSP ValueObject::GetValueForEx if (!root.get()) return ValueObjectSP(); - *first_unparsed = expression_cstr; - while (true) { - const char *expression_cstr = - *first_unparsed; // hide the top level expression_cstr - CompilerType root_compiler_type = root->GetCompilerType(); CompilerType pointee_compiler_type; Flags pointee_compiler_type_info; @@ -2276,7 +2267,6 @@ ValueObjectSP ValueObject::GetValueForEx // non-pointer and I // must catch the error { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonArrowInsteadOfDot; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2287,14 +2277,12 @@ ValueObjectSP ValueObject::GetValueForEx // when this is forbidden root_compiler_type_info.Test(eTypeIsPointer) && options.m_no_fragile_ivar) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonFragileIVarNotAllowed; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; return ValueObjectSP(); } if (expression_cstr[1] != '>') { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnexpectedSymbol; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2311,7 +2299,6 @@ ValueObjectSP ValueObject::GetValueForEx // and I must catch the // error { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonDotInsteadOfArrow; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2328,7 +2315,6 @@ ValueObjectSP ValueObject::GetValueForEx if (child_valobj_sp.get()) // we know we are done, so just return { - *first_unparsed = ""; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonEndOfString; *final_result = ValueObject::eExpressionPathEndResultTypePlain; @@ -2378,13 +2364,11 @@ ValueObjectSP ValueObject::GetValueForEx // so we hit the "else" branch, and return an error if (child_valobj_sp.get()) // if it worked, just return { - *first_unparsed = ""; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonEndOfString; *final_result = ValueObject::eExpressionPathEndResultTypePlain; return child_valobj_sp; } else { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2399,7 +2383,6 @@ ValueObjectSP ValueObject::GetValueForEx if (child_valobj_sp.get()) // store the new root and move on { root = child_valobj_sp; - *first_unparsed = next_separator; *final_result = ValueObject::eExpressionPathEndResultTypePlain; continue; } else { @@ -2448,11 +2431,9 @@ ValueObjectSP ValueObject::GetValueForEx if (child_valobj_sp.get()) // if it worked, move on { root = child_valobj_sp; - *first_unparsed = next_separator; *final_result = ValueObject::eExpressionPathEndResultTypePlain; continue; } else { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2474,7 +2455,6 @@ ValueObjectSP ValueObject::GetValueForEx GetValueForExpressionPathOptions::SyntheticChildrenTraversal:: None) // ...only chance left is synthetic { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonRangeOperatorInvalid; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2484,7 +2464,6 @@ ValueObjectSP ValueObject::GetValueForEx // check that we can // expand bitfields { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonRangeOperatorNotAllowed; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2495,7 +2474,6 @@ ValueObjectSP ValueObject::GetValueForEx ']') // if this is an unbounded range it only works for arrays { if (!root_compiler_type_info.Test(eTypeIsArray)) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonEmptyRangeNotAllowed; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2503,7 +2481,6 @@ ValueObjectSP ValueObject::GetValueForEx } else // even if something follows, we cannot expand unbounded ranges, // just let the caller do it { - *first_unparsed = expression_cstr + 2; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonArrayRangeOperatorMet; *final_result = @@ -2515,7 +2492,6 @@ ValueObjectSP ValueObject::GetValueForEx const char *close_bracket_position = ::strchr(expression_cstr + 1, ']'); if (!close_bracket_position) // if there is no ], this is a syntax error { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnexpectedSymbol; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2531,7 +2507,6 @@ ValueObjectSP ValueObject::GetValueForEx if (end != close_bracket_position) // if something weird is in // our way return an error { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnexpectedSymbol; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2549,11 +2524,9 @@ ValueObjectSP ValueObject::GetValueForEx root->GetSyntheticValue()->GetChildAtIndex(index, true); if (child_valobj_sp) { root = child_valobj_sp; - *first_unparsed = end + 1; // skip ] *final_result = ValueObject::eExpressionPathEndResultTypePlain; continue; } else { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2575,7 +2548,6 @@ ValueObjectSP ValueObject::GetValueForEx Error error; root = root->Dereference(error); if (error.Fail() || !root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonDereferencingFailed; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2599,13 +2571,11 @@ ValueObjectSP ValueObject::GetValueForEx } else root = root->GetSyntheticArrayMember(index, true); if (!root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; return ValueObjectSP(); } else { - *first_unparsed = end + 1; // skip ] *final_result = ValueObject::eExpressionPathEndResultTypePlain; continue; } @@ -2613,7 +2583,6 @@ ValueObjectSP ValueObject::GetValueForEx } else if (root_compiler_type_info.Test(eTypeIsScalar)) { root = root->GetSyntheticBitFieldChild(index, index, true); if (!root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2621,7 +2590,6 @@ ValueObjectSP ValueObject::GetValueForEx } else // we do not know how to expand members of bitfields, so we // just return and let the caller do any further processing { - *first_unparsed = end + 1; // skip ] *reason_to_stop = ValueObject:: eExpressionPathScanEndReasonBitfieldRangeOperatorMet; *final_result = ValueObject::eExpressionPathEndResultTypeBitfield; @@ -2630,13 +2598,11 @@ ValueObjectSP ValueObject::GetValueForEx } else if (root_compiler_type_info.Test(eTypeIsVector)) { root = root->GetChildAtIndex(index, true); if (!root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; return ValueObjectSP(); } else { - *first_unparsed = end + 1; // skip ] *final_result = ValueObject::eExpressionPathEndResultTypePlain; continue; } @@ -2649,7 +2615,6 @@ ValueObjectSP ValueObject::GetValueForEx if (root->HasSyntheticValue()) root = root->GetSyntheticValue(); else if (!root->IsSynthetic()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonSyntheticValueMissing; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2659,7 +2624,6 @@ ValueObjectSP ValueObject::GetValueForEx // to go if (!root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonSyntheticValueMissing; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2667,18 +2631,15 @@ ValueObjectSP ValueObject::GetValueForEx } root = root->GetChildAtIndex(index, true); if (!root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; return ValueObjectSP(); } else { - *first_unparsed = end + 1; // skip ] *final_result = ValueObject::eExpressionPathEndResultTypePlain; continue; } } else { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2691,7 +2652,6 @@ ValueObjectSP ValueObject::GetValueForEx if (end != separator_position) // if something weird is in our // way return an error { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnexpectedSymbol; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2701,7 +2661,6 @@ ValueObjectSP ValueObject::GetValueForEx if (end != close_bracket_position) // if something weird is in // our way return an error { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnexpectedSymbol; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2716,13 +2675,11 @@ ValueObjectSP ValueObject::GetValueForEx root = root->GetSyntheticBitFieldChild(index_lower, index_higher, true); if (!root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonNoSuchChild; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; return ValueObjectSP(); } else { - *first_unparsed = end + 1; // skip ] *reason_to_stop = ValueObject:: eExpressionPathScanEndReasonBitfieldRangeOperatorMet; *final_result = ValueObject::eExpressionPathEndResultTypeBitfield; @@ -2739,7 +2696,6 @@ ValueObjectSP ValueObject::GetValueForEx Error error; root = root->Dereference(error); if (error.Fail() || !root.get()) { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonDereferencingFailed; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; @@ -2749,7 +2705,6 @@ ValueObjectSP ValueObject::GetValueForEx continue; } } else { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonArrayRangeOperatorMet; *final_result = ValueObject::eExpressionPathEndResultTypeBoundedRange; @@ -2760,7 +2715,6 @@ ValueObjectSP ValueObject::GetValueForEx } default: // some non-separator is in the way { - *first_unparsed = expression_cstr; *reason_to_stop = ValueObject::eExpressionPathScanEndReasonUnexpectedSymbol; *final_result = ValueObject::eExpressionPathEndResultTypeInvalid; Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp?rev=287315&r1=287314&r2=287315&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp (original) +++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.cpp Thu Nov 17 23:45:41 2016 @@ -280,7 +280,7 @@ bool lldb_private::formatters::LibCxxMap // die and free their memory m_pair_ptr = valobj_sp ->GetValueForExpressionPath( - ".__i_.__ptr_->__value_", nullptr, nullptr, nullptr, + ".__i_.__ptr_->__value_", nullptr, nullptr, ValueObject::GetValueForExpressionPathOptions() .DontCheckDotVsArrowSyntax() .SetSyntheticChildrenTraversal( @@ -288,16 +288,18 @@ bool lldb_private::formatters::LibCxxMap SyntheticChildrenTraversal::None), nullptr) .get(); - + if (!m_pair_ptr) { - m_pair_ptr = valobj_sp->GetValueForExpressionPath(".__i_.__ptr_", nullptr, nullptr, nullptr, - ValueObject::GetValueForExpressionPathOptions() - .DontCheckDotVsArrowSyntax() - .SetSyntheticChildrenTraversal( - ValueObject::GetValueForExpressionPathOptions:: - SyntheticChildrenTraversal::None), - nullptr) - .get(); + m_pair_ptr = valobj_sp + ->GetValueForExpressionPath( + ".__i_.__ptr_", nullptr, nullptr, + ValueObject::GetValueForExpressionPathOptions() + .DontCheckDotVsArrowSyntax() + .SetSyntheticChildrenTraversal( + ValueObject::GetValueForExpressionPathOptions:: + SyntheticChildrenTraversal::None), + nullptr) + .get(); if (m_pair_ptr) { auto __i_(valobj_sp->GetChildMemberWithName(g___i_, true)); lldb::TemplateArgumentKind kind; Modified: lldb/trunk/source/Symbol/Variable.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Variable.cpp?rev=287315&r1=287314&r2=287315&view=diff ============================================================================== --- lldb/trunk/source/Symbol/Variable.cpp (original) +++ lldb/trunk/source/Symbol/Variable.cpp Thu Nov 17 23:45:41 2016 @@ -404,16 +404,8 @@ Error Variable::GetValuesForVariableExpr const char *variable_sub_expr_path = variable_expr_path + variable_name.size(); if (*variable_sub_expr_path) { - const char *first_unparsed = nullptr; - ValueObject::ExpressionPathScanEndReason reason_to_stop; - ValueObject::ExpressionPathEndResultType final_value_type; - ValueObject::GetValueForExpressionPathOptions options; - ValueObject::ExpressionPathAftermath final_task_on_target; - valobj_sp = variable_valobj_sp->GetValueForExpressionPath( - variable_sub_expr_path, &first_unparsed, - &reason_to_stop, &final_value_type, options, - &final_task_on_target); + variable_sub_expr_path); if (!valobj_sp) { error.SetErrorStringWithFormat( "invalid expression path '%s' for variable '%s'", _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits