From nobody Thu Apr 9 15:00:59 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 8C761426D15; Mon, 2 Mar 2026 16:41:11 +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=1772469671; cv=none; b=WhkZOOCBMldCx3iL+0V7N+H3pocg/HobOjlzVi1XZLE0IFL10wbZUvk87+/HTUBvf8wz7Z6zFkZ9mLnTTmFi+Rb4xZauEQCOr6/7ZgJzOLf6SEQ9MxY80nSwOZbMwZ+Afo068J1R10lqK71e9XaapkXfJ8Bey+kartPg2mPK26s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772469671; c=relaxed/simple; bh=G52yNr/mjvH//WKN8I/I22tm0myDjYubrgazvSxDbzk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DPzGaA+74CG4Hw5vlF5RDoBVVgVq8z9e/b2Yaj9Py3/U/X/r3um9D5wfhQG8J9iMpWQEgGAltTl5AQ15qBHQdVzI2DfmlsKWl7zAVwCEIBkcvHt6ujhYeKxJuviKeUDYDBCVSnursZiWOUAvmifeMM+5jb2y06RwEGFgNkcRXks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Paeiv/e4; 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="Paeiv/e4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DD20C2BC87; Mon, 2 Mar 2026 16:41:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772469671; bh=G52yNr/mjvH//WKN8I/I22tm0myDjYubrgazvSxDbzk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Paeiv/e4uMb5jfkxD9Ej7ISMmm2u6rvgsxtr36hWtUYono287sIVUitmcYttya+ta CI1Pubsa244rO4mqN8N47vp1cTyYdnxmlvDXea1oamStj3B9EjB2mOR6yFAPm/7QI3 f59K2uyVp6djDUAosimso3VJck04KgZVQaRq3vqrmHEyVbflsCI0Y9HIkxtC4JfJL5 qWSr3PddOFmZ8AYyO+pZiXAGMyCh6sIILIH8d/DUjAaBm+F4wBqIKQX0VAkmCATuZD dCaTYQDc+DphChemHUakuOLSxzS1WDLlgExiSiMymfxYh5FFrFULy752Yu2J2rJDf7 ZYl/skuh4AN0w== Received: from mchehab by mail.kernel.org with local (Exim 4.99.1) (envelope-from ) id 1vx6KT-000000003ES-2Qxk; Mon, 02 Mar 2026 17:41:09 +0100 From: Mauro Carvalho Chehab To: Jonathan Corbet , Linux Doc Mailing List Cc: Mauro Carvalho Chehab , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Aleksandr Loktionov , Randy Dunlap Subject: [PATCH 15/18] docs: kdoc_re: don't recompile NestedMatch regex every time Date: Mon, 2 Mar 2026 17:40:58 +0100 Message-ID: <0cf2b72d4785aa8b727188b56688ff442d1c65ce.1772469446.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 0a7f12616f9f..00afa5bccd6d 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