From nobody Sun Feb 8 17:03:25 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 341583587D5; Sat, 31 Jan 2026 14:25:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769869522; cv=none; b=fkFmbQIjLbIyIoTjTI0ItqyCXqpx9TsyN3y170zpsVhbawv2QjDPd6ajKPfpghoCJU7aA3SljM+qnijTyXDB59UlGT7f0bFd9gnnIsmqO8fkwHJ4bV00AN8nM5sJa4GaRZApm2CWrLwzLW0cpG5yOWO2ioX0caV+uLqF9YOP7Zo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769869522; c=relaxed/simple; bh=TvREth92NF6fNTFgSgL54R3ntJRc7XyPNB89X1Rad34=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nVAYipYS9Su6yZm4jvUfIRf7DhlWyKyz/Bbw6ZD/XtyZT2G/7jDxRjgQgVFprTFdDR1mlfh3aVViE81QRWDVAdzrpHtlCnq8c98iwQYihRgnFhlchVJz9nclA2TRozocuHyucYFsOxSAXHm07NuG5nhe5k1DVeTLIsDZrGXoGmk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZVGT06xv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZVGT06xv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D5D7C2BCF5; Sat, 31 Jan 2026 14:25:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1769869521; bh=TvREth92NF6fNTFgSgL54R3ntJRc7XyPNB89X1Rad34=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZVGT06xvbbRiRUp9pRgz47MnGGtUYKfpyk334D6YkkLqP9n7z/13PZpXKepOSVagY ya+WB7IhalWJIwJJ2dJa/qhsfPkVMFFXqX58pOh9VONul+Gv5A8QR/WrhXnoJ6SO9N WvlI07Nv+a1xUNB/i0uodehQag00waTbGC2dM2p3qN/caD9RwNCIaZb1OluaACLwGT PSckk2flxaWzfdTbDDSjjHRL3nnr2sCYYDYcRKs9b0aukQYEaju+TQY2zl7JuLFzhK ++MbPxgfKe1pBzjJfNk1i8EeBSR/GuSbSvDIkA44sqBbxuL5b3T9LPpfTRWBYdLA06 Gs6YnTwyACI9A== Received: from mchehab by mail.kernel.org with local (Exim 4.99.1) (envelope-from ) id 1vmBuZ-0000000AVkq-3G5t; Sat, 31 Jan 2026 15:25:19 +0100 From: Mauro Carvalho Chehab To: Jonathan Corbet , Linux Doc Mailing List Cc: Mauro Carvalho Chehab , intel-wired-lan@lists.osuosl.org, linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Aleksandr Loktionov , Mauro Carvalho Chehab , Randy Dunlap Subject: [PATCH v4 17/41] docs: kdoc_re: don't recompile NestedMatch regex every time Date: Sat, 31 Jan 2026 15:24:51 +0100 Message-ID: <74fae2d87073959ccf92c7c80323dbe785f0086f.1769867953.git.mchehab+huawei@kernel.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: Mauro Carvalho Chehab Store delimiters and its regex-compiled version as const vars. Signed-off-by: Mauro Carvalho Chehab Reviewed-by: Aleksandr Loktionov --- tools/lib/python/kdoc/kdoc_re.py | 35 ++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/tools/lib/python/kdoc/kdoc_re.py b/tools/lib/python/kdoc/kdoc_= re.py index 3f405addcc58..7b7ddc50ac36 100644 --- a/tools/lib/python/kdoc/kdoc_re.py +++ b/tools/lib/python/kdoc/kdoc_re.py @@ -99,6 +99,13 @@ class KernRe: self.last_match =3D self.regex.search(string) return self.last_match =20 + def finditer(self, string): + """ + Alias to re.finditer. + """ + + return self.regex.finditer(string) + def findall(self, string): """ Alias to re.findall. @@ -134,6 +141,16 @@ class KernRe: =20 return self.last_match.groups() =20 +#: Nested delimited pairs (brackets and parenthesis) +DELIMITER_PAIRS =3D { + '{': '}', + '(': ')', + '[': ']', +} + +#: compiled delimiters +RE_DELIM =3D KernRe(r'[\{\}\[\]\(\)]') + =20 class NestedMatch: """ @@ -183,14 +200,6 @@ class NestedMatch: # # FOO(arg1, arg2, arg3) =20 - DELIMITER_PAIRS =3D { - '{': '}', - '(': ')', - '[': ']', - } - - RE_DELIM =3D re.compile(r'[\{\}\[\]\(\)]') - def _search(self, regex, line): """ Finds paired blocks for a regex that ends with a delimiter. @@ -220,13 +229,13 @@ class NestedMatch: escape =3D False =20 d =3D line[offset - 1] - if d not in self.DELIMITER_PAIRS: + if d not in DELIMITER_PAIRS: continue =20 - end =3D self.DELIMITER_PAIRS[d] + end =3D DELIMITER_PAIRS[d] stack.append(end) =20 - for match in self.RE_DELIM.finditer(line[offset:]): + for match in RE_DELIM.finditer(line[offset:]): pos =3D match.start() + offset =20 d =3D line[pos] @@ -247,8 +256,8 @@ class NestedMatch: string_char =3D d continue =20 - if d in self.DELIMITER_PAIRS: - end =3D self.DELIMITER_PAIRS[d] + if d in DELIMITER_PAIRS: + end =3D DELIMITER_PAIRS[d] =20 stack.append(end) continue --=20 2.52.0