2018-05-21 07:31:06

by Julia Lawall

[permalink] [raw]
Subject: [PATCH] coccinelle: mini_lock: improve performance

Replace <+... ...+> by ... when any. <+... ...+> is slow, and in some
obscure cases involving backward jumps it doesn't force the unlock to
actually come after the end of the if.

Signed-off-by: Julia Lawall <[email protected]>

---
scripts/coccinelle/locks/mini_lock.cocci | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/scripts/coccinelle/locks/mini_lock.cocci b/scripts/coccinelle/locks/mini_lock.cocci
index 47f649b..19c6ee5 100644
--- a/scripts/coccinelle/locks/mini_lock.cocci
+++ b/scripts/coccinelle/locks/mini_lock.cocci
@@ -67,12 +67,14 @@ identifier lock,unlock;
@@

*lock(E1@p,...);
-<+... when != E1
+... when != E1
+ when any
if (...) {
... when != E1
* return@r ...;
}
-...+>
+... when != E1
+ when any
*unlock@up(E1,...);

@script:python depends on org@



2018-05-22 14:25:20

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] coccinelle: mini_lock: improve performance

2018-05-21 15:58 GMT+09:00 Julia Lawall <[email protected]>:
> Replace <+... ...+> by ... when any. <+... ...+> is slow, and in some
> obscure cases involving backward jumps it doesn't force the unlock to
> actually come after the end of the if.
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---

Applied to linux-kbuild. Thanks!

> scripts/coccinelle/locks/mini_lock.cocci | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/coccinelle/locks/mini_lock.cocci b/scripts/coccinelle/locks/mini_lock.cocci
> index 47f649b..19c6ee5 100644
> --- a/scripts/coccinelle/locks/mini_lock.cocci
> +++ b/scripts/coccinelle/locks/mini_lock.cocci
> @@ -67,12 +67,14 @@ identifier lock,unlock;
> @@
>
> *lock(E1@p,...);
> -<+... when != E1
> +... when != E1
> + when any
> if (...) {
> ... when != E1
> * return@r ...;
> }
> -...+>
> +... when != E1
> + when any
> *unlock@up(E1,...);
>
> @script:python depends on org@
>



--
Best Regards
Masahiro Yamada