From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by sourceware.org (Postfix) with ESMTPS id 949553856DC1 for ; Mon, 30 May 2022 15:21:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 949553856DC1 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=palves.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-f48.google.com with SMTP id d26so9490475wrb.13 for ; Mon, 30 May 2022 08:21:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:references:in-reply-to :content-transfer-encoding; bh=bkB6mVmC8BbgT8TYog3wTYfEx3uOeTV7absuai4jxzo=; b=kI0l9uV6Zg16pFjB8eKTLFuQzoItzTAJJLFWQk1i7svTa7dw33l04UZaYAUEFdZSxx 3NNiWDPQ+31DfRbCwfbJ5/yEmmet0PrUMpXjl6SFCqG5CQAPsL1iwndj/zZBYEnZfRdE 28KI29QMKXLiZ3gUS3s7lY3mITDBUJNGytBqbdYcRQEsS70sXt65STUjaTc5Js1gEbQ7 EbCjqFXdS9OTnLgWJlxkKF8zeSKPpSXUods3AUxGYPIRRFSu0hBB2YH0KslIYwlqXvMx gWZ4hSZK8Q/v/kFFwq5yq0zLdP951zU+DVjlP/UWak+rQXANkZ8fm2l5lQdI/GKv+aMF qSkw== X-Gm-Message-State: AOAM5302dUH3wxBmDEpK3uUqB7MLDt7SjEypG77oiV6lvGvmhj588rRP biFJsk7OaBO3YMa2elPKQajP2OF6kLM= X-Google-Smtp-Source: ABdhPJxFPw7hnWh9DcayeE66/KHqIaPbqDEpnLb6ELeM2/+pARtVuDGMbMWEmr/geNnFe71X6iM7mQ== X-Received: by 2002:a05:6000:1c03:b0:20e:5cac:1eb5 with SMTP id ba3-20020a0560001c0300b0020e5cac1eb5mr46789601wrb.422.1653924062930; Mon, 30 May 2022 08:21:02 -0700 (PDT) Received: from ?IPV6:2001:8a0:f924:2600:209d:85e2:409e:8726? ([2001:8a0:f924:2600:209d:85e2:409e:8726]) by smtp.gmail.com with ESMTPSA id o14-20020a05600c510e00b003942a244f54sm13817995wms.45.2022.05.30.08.20.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 30 May 2022 08:21:00 -0700 (PDT) Message-ID: <5a4a96ce-35c7-09bb-b921-7ba88d89b2dd@palves.net> Date: Mon, 30 May 2022 16:20:59 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH 7/7] Convert set_location_spec_string to a method Content-Language: en-US From: Pedro Alves To: gdb-patches@sourceware.org References: <20220527180248.2990723-1-pedro@palves.net> <20220527180248.2990723-8-pedro@palves.net> In-Reply-To: <20220527180248.2990723-8-pedro@palves.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 May 2022 15:21:06 -0000 On 2022-05-27 19:02, Pedro Alves wrote: > This converts set_location_spec_string to a method of location_spec, > and makes the location_spect::as_string field protected, renaming it > it to m_as_string along the way. > > Change-Id: Iccfb1654e9fa7808d0512df89e775f9eacaeb9e0 > --- > gdb/linespec.c | 2 +- > gdb/location.c | 13 ++----------- > gdb/location.h | 29 +++++++++++++++-------------- > 3 files changed, 18 insertions(+), 26 deletions(-) > > diff --git a/gdb/linespec.c b/gdb/linespec.c > index 5c75e2ec979..e45c606d661 100644 > --- a/gdb/linespec.c > +++ b/gdb/linespec.c > @@ -2015,7 +2015,7 @@ canonicalize_linespec (struct linespec_state *state, const linespec *ls) > /* If this location originally came from a linespec, save a string > representation of it for display and saving to file. */ > if (state->is_linespec) > - set_location_spec_string (explicit_loc, explicit_loc->to_linespec ()); > + explicit_loc->set_spec_string (explicit_loc->to_linespec ()); Err, I don't know what I was thinking, but the method name should be set_string, not set_spec_string, to go with "location_spec::to_string". The function was originally called set_event_location_string, and then "event_location" was replaced with "location_spec", yielding set_location_spec_string. And then in this patch, I just blindly replaced "location" in set_location_spec_string instead of replacing "location_spec"... >From the original set_event_location_string name, we can see that the original intention was "set_string". Here's the fixed patch. It also fixes the typos in the commit log. >From f1303a06ba43645428a41a593064168bbb980662 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 27 May 2022 16:53:49 +0100 Subject: [PATCH 7/7] Convert set_location_spec_string to a method This converts set_location_spec_string to a method of location_spec, and makes the location_spec::as_string field protected, renaming it to m_as_string along the way. Change-Id: Iccfb1654e9fa7808d0512df89e775f9eacaeb9e0 --- gdb/linespec.c | 2 +- gdb/location.c | 13 ++----------- gdb/location.h | 31 ++++++++++++++++--------------- 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/gdb/linespec.c b/gdb/linespec.c index 5c75e2ec979..10dca95e767 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -2015,7 +2015,7 @@ canonicalize_linespec (struct linespec_state *state, const linespec *ls) /* If this location originally came from a linespec, save a string representation of it for display and saving to file. */ if (state->is_linespec) - set_location_spec_string (explicit_loc, explicit_loc->to_linespec ()); + explicit_loc->set_string (explicit_loc->to_linespec ()); } /* Given a line offset in LS, construct the relevant SALs. */ diff --git a/gdb/location.c b/gdb/location.c index e22ee414070..2b31baa4c85 100644 --- a/gdb/location.c +++ b/gdb/location.c @@ -60,7 +60,7 @@ probe_location_spec::empty_p () const std::string probe_location_spec::compute_string () const { - return std::move (as_string); + return std::move (m_as_string); } /* A "normal" linespec. */ @@ -131,7 +131,7 @@ address_location_spec::address_location_spec (CORE_ADDR addr, address (addr) { if (addr_string != nullptr) - as_string = std::string (addr_string, addr_string_len); + m_as_string = std::string (addr_string, addr_string_len); } location_spec_up @@ -857,12 +857,3 @@ string_to_location_spec (const char **stringp, spec. */ return string_to_location_spec_basic (stringp, language, match_type); } - -/* See description in location.h. */ - -void -set_location_spec_string (struct location_spec *locspec, - std::string &&string) -{ - locspec->as_string = std::move (string); -} diff --git a/gdb/location.h b/gdb/location.h index 022f47cb79a..ef97060f7be 100644 --- a/gdb/location.h +++ b/gdb/location.h @@ -91,11 +91,17 @@ struct location_spec The result is cached in the locspec. */ const char *to_string () const { - if (as_string.empty ()) - as_string = compute_string (); - if (as_string.empty ()) + if (m_as_string.empty ()) + m_as_string = compute_string (); + if (m_as_string.empty ()) return nullptr; - return as_string.c_str (); + return m_as_string.c_str (); + } + + /* Set this location spec's string representation. */ + void set_string (std::string &&string) + { + m_as_string = std::move (string); } /* Return this location spec's type. */ @@ -104,10 +110,6 @@ struct location_spec return m_type; } - /* Cached string representation of this location spec. This is - used, e.g., to save location specs to file. */ - mutable std::string as_string; - protected: explicit location_spec (enum location_spec_type t) @@ -116,13 +118,13 @@ struct location_spec } location_spec (enum location_spec_type t, std::string &&str) - : as_string (std::move (str)), + : m_as_string (std::move (str)), m_type (t) { } location_spec (const location_spec &other) - : as_string (other.as_string), + : m_as_string (other.m_as_string), m_type (other.m_type) { } @@ -131,6 +133,10 @@ struct location_spec by to_string when needed. */ virtual std::string compute_string () const = 0; + /* Cached string representation of this location spec. This is + used, e.g., to save location specs to file. */ + mutable std::string m_as_string; + private: /* The type of this location specification. */ enum location_spec_type m_type; @@ -361,9 +367,4 @@ extern location_spec_up const struct language_defn *language, explicit_completion_info *completion_info); -/* Set the location specs's string representation. */ - -extern void set_location_spec_string (struct location_spec *locspec, - std::string &&string); - #endif /* LOCATION_H */ -- 2.36.0