From patchwork Tue Apr 27 11:28:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Giuliano Procida X-Patchwork-Id: 43164 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0257739888B4; Tue, 27 Apr 2021 11:29:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0257739888B4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1619522954; bh=RLA80Z4q4UjaCFnGVMqY4jjGCFSlcq4RujJ8kIYjYfg=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=Bb1xnNT6DNH1ZVZ1BKUvFqguiHo9E5eiDpSwHToMg/wp5HcnqTu+l4w0MnRyZDmGl LXg8gqPIlHpPo6e64rO/4WujHj+gaIe7E1LfdS/BFiZGbZnjTiaqtFb1JGM0uliLpX jW9RxDzmFVHvkdNITeQHMFOTGG7xT32H2abmUESA= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mail-ed1-x549.google.com (mail-ed1-x549.google.com [IPv6:2a00:1450:4864:20::549]) by sourceware.org (Postfix) with ESMTPS id D7AED39888B4 for ; Tue, 27 Apr 2021 11:29:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D7AED39888B4 Received: by mail-ed1-x549.google.com with SMTP id z21-20020a05640235d5b029038795ac4cdaso3791609edc.22 for ; Tue, 27 Apr 2021 04:29:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=RLA80Z4q4UjaCFnGVMqY4jjGCFSlcq4RujJ8kIYjYfg=; b=HBuwbn/mQnJMc9ZsSYRrc/OqD32mWpGfvULxlih6BjA+f7D5/UP1m13zNYjXDAcwyw /bTUKbikKlIYNoQvOX529GRL75XGO0gzxu6E5RAyoCU4i1apcKEtQclNKikE36B6j1Fj cg1/B/JRmrWKEKht0vvmv79IFytPW1D2amXkJpgLTMkMxlKNJBnVFJK7Kk4puxNv9wAY NESHG3GnLj0faHcIphpVYclTc0eFxXcWf/Xh0a+qBnaakEt/vQc5eoJPvw6lJiPOAghM zl8vlCNODkXZEua/sPprRVKx41/uRikY/eiZnhNc64mYkCepKLg0rYkGJxF6PvuaIF4D i/1Q== X-Gm-Message-State: AOAM533O4KGybtLMFs1Wazm8AhyHDQPDgcHLkbP5+6VkavlUXgKR6MUK E4EuMVtmVVkV9Xc+WRR9xVeE8WWuGLBeagUv5KQKvLXVMnZNkkukutZprYd4Frvgu/nhkQWEk5B 9ghANveWWv2KNCRonJCIeN5XKZcHWe2W+YRPQOqxGwqfzj5FNNWCNZfEi4P+XnU5Oy8PM3Uc= X-Google-Smtp-Source: ABdhPJxWp9T9WD2nPamNO6Mfkve/LNb3UCrt2NuiIgTASSdkrLJ0egAO7xytFTy7kMt8XFOX6NNEAJ3IcDjiew== X-Received: from tef.lon.corp.google.com ([2a00:79e0:d:110:a94:13c5:d1bb:c50d]) (user=gprocida job=sendgmr) by 2002:aa7:c957:: with SMTP id h23mr3626792edt.301.1619522949566; Tue, 27 Apr 2021 04:29:09 -0700 (PDT) Date: Tue, 27 Apr 2021 12:28:53 +0100 In-Reply-To: <20210427112853.1338240-1-gprocida@google.com> Message-Id: <20210427112853.1338240-4-gprocida@google.com> Mime-Version: 1.0 References: <20210427112853.1338240-1-gprocida@google.com> X-Mailer: git-send-email 2.31.1.498.g6c1eba8ee3d-goog Subject: [PATCH 3/3] abg-reader: create a fresh corpus object per corpus To: libabigail@sourceware.org X-Spam-Status: No, score=-22.3 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Giuliano Procida via Libabigail From: Giuliano Procida Reply-To: Giuliano Procida Cc: maennich@google.com, kernel-team@android.com Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Currently the XML reader reuses the same corpus object for all corpora in a corpus group. This has an unwanted side-effect: any abi-instr with the same path in different corpora will collide and parts of the ABI will be lost. Creating a new corpus object for every abi-corpus element seems like the right thing to do. Testing with large ABIs containing many corpora also shows a modest (~10%) abidiff speed improvement. * src/abg-reader.cc (read_corpus_from_input): Always create a fresh corpus object for each abi-corpus XML element. Signed-off-by: Giuliano Procida --- src/abg-reader.cc | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/abg-reader.cc b/src/abg-reader.cc index 313af4c9..e32c9bf3 100644 --- a/src/abg-reader.cc +++ b/src/abg-reader.cc @@ -1776,11 +1776,7 @@ read_corpus_from_input(read_context& ctxt) BAD_CAST("abi-corpus"))) return nil; - if (!ctxt.get_corpus()) - { - corpus_sptr c(new corpus(ctxt.get_environment(), "")); - ctxt.set_corpus(c); - } + ctxt.set_corpus(std::make_shared(ctxt.get_environment(), "")); if (!ctxt.get_corpus_group()) ctxt.clear_per_corpus_data(); @@ -1834,11 +1830,7 @@ read_corpus_from_input(read_context& ctxt) } else { - if (!ctxt.get_corpus()) - { - corpus_sptr c(new corpus(ctxt.get_environment(), "")); - ctxt.set_corpus(c); - } + ctxt.set_corpus(std::make_shared(ctxt.get_environment(), "")); if (!ctxt.get_corpus_group()) ctxt.clear_per_corpus_data();