Skip to content

Commit bcbc81d

Browse files
committed
Meson: reorder entries in the tables for optimizing
Before: $ ./ctags -o - /home/yamato/backup/var/util-linux/util-linux-2.41.devel-232-07aac-dirty/meson.build > /dev/null 2> /tmp/logf 0.46s user 0.01s system 97% cpu 0.483 total After: 0.19s user 0.01s system 97% cpu 0.209 total Signed-off-by: Masatake YAMATO <[email protected]>
1 parent d3683be commit bcbc81d

File tree

2 files changed

+127
-99
lines changed

2 files changed

+127
-99
lines changed

optlib/meson.c

Lines changed: 108 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,21 @@ static void initializeMesonParser (const langType language)
2626
addLanguageRegexTable (language, "configElt");
2727
addLanguageRegexTable (language, "configValue");
2828

29+
addLanguageTagMultiTableRegex (language, "main",
30+
"^([a-zA-Z_][a-zA-Z_0-9]*)[ \t\n]*=([^=]|$)",
31+
"\\1", "V", "{_advanceTo=2start}"
32+
"{{\n"
33+
" /lastvar . def\n"
34+
"}}", NULL);
35+
addLanguageTagMultiTableRegex (language, "main",
36+
"^project[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
37+
"\\1", "P", "{tenter=skipToArgEnd}", NULL);
38+
addLanguageTagMultiTableRegex (language, "main",
39+
"^subdir[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
40+
"\\1", "S", "{tenter=skipToArgEnd}", NULL);
41+
addLanguageTagMultiTableRegex (language, "main",
42+
"^test[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
43+
"\\1", "t", "{tenter=skipToArgEnd}", NULL);
2944
addLanguageTagMultiTableRegex (language, "main",
3045
"^[ \t\n]+",
3146
"", "", "", NULL);
@@ -41,6 +56,18 @@ static void initializeMesonParser (const langType language)
4156
addLanguageTagMultiTableRegex (language, "main",
4257
"^[[({]",
4358
"", "", "{tenter=skipPair}", NULL);
59+
addLanguageTagMultiTableRegex (language, "main",
60+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
61+
"", "", ""
62+
"{{\n"
63+
" cfgdict \\1 known {\n"
64+
" \\4 /cfgvar @4 _tag _commit\n"
65+
" cfgdict \\1 get scope:\n"
66+
" } if\n"
67+
"}}", NULL);
68+
addLanguageTagMultiTableRegex (language, "main",
69+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
70+
"", "", "", NULL);
4471
addLanguageTagMultiTableRegex (language, "main",
4572
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
4673
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -84,30 +111,6 @@ static void initializeMesonParser (const langType language)
84111
" % The configElt table refers to the cork index pushed by this table\n"
85112
" % for filling the scope of cfgvar/C tags.\n"
86113
"}}", NULL);
87-
addLanguageTagMultiTableRegex (language, "main",
88-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
89-
"", "", ""
90-
"{{\n"
91-
" cfgdict \\1 known {\n"
92-
" \\4 /cfgvar @4 _tag _commit\n"
93-
" cfgdict \\1 get scope:\n"
94-
" } if\n"
95-
"}}", NULL);
96-
addLanguageTagMultiTableRegex (language, "main",
97-
"^project[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
98-
"\\1", "P", "{tenter=skipToArgEnd}", NULL);
99-
addLanguageTagMultiTableRegex (language, "main",
100-
"^subdir[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
101-
"\\1", "S", "{tenter=skipToArgEnd}", NULL);
102-
addLanguageTagMultiTableRegex (language, "main",
103-
"^test[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
104-
"\\1", "t", "{tenter=skipToArgEnd}", NULL);
105-
addLanguageTagMultiTableRegex (language, "main",
106-
"^([a-zA-Z_][a-zA-Z_0-9]*)[ \t\n]*=([^=]|$)",
107-
"\\1", "V", "{_advanceTo=2start}"
108-
"{{\n"
109-
" /lastvar . def\n"
110-
"}}", NULL);
111114
addLanguageTagMultiTableRegex (language, "main",
112115
"^.",
113116
"", "", "", NULL);
@@ -138,6 +141,9 @@ static void initializeMesonParser (const langType language)
138141
addLanguageTagMultiTableRegex (language, "comment",
139142
"^\n",
140143
"", "", "{tleave}", NULL);
144+
addLanguageTagMultiTableRegex (language, "skipPair",
145+
"^[])}]",
146+
"", "", "{tleave}", NULL);
141147
addLanguageTagMultiTableRegex (language, "skipPair",
142148
"^[ \t\n]+",
143149
"", "", "", NULL);
@@ -153,6 +159,18 @@ static void initializeMesonParser (const langType language)
153159
addLanguageTagMultiTableRegex (language, "skipPair",
154160
"^[[({]",
155161
"", "", "{tenter=skipPair}", NULL);
162+
addLanguageTagMultiTableRegex (language, "skipPair",
163+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
164+
"", "", ""
165+
"{{\n"
166+
" cfgdict \\1 known {\n"
167+
" \\4 /cfgvar @4 _tag _commit\n"
168+
" cfgdict \\1 get scope:\n"
169+
" } if\n"
170+
"}}", NULL);
171+
addLanguageTagMultiTableRegex (language, "skipPair",
172+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
173+
"", "", "", NULL);
156174
addLanguageTagMultiTableRegex (language, "skipPair",
157175
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
158176
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -196,18 +214,6 @@ static void initializeMesonParser (const langType language)
196214
" % The configElt table refers to the cork index pushed by this table\n"
197215
" % for filling the scope of cfgvar/C tags.\n"
198216
"}}", NULL);
199-
addLanguageTagMultiTableRegex (language, "skipPair",
200-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
201-
"", "", ""
202-
"{{\n"
203-
" cfgdict \\1 known {\n"
204-
" \\4 /cfgvar @4 _tag _commit\n"
205-
" cfgdict \\1 get scope:\n"
206-
" } if\n"
207-
"}}", NULL);
208-
addLanguageTagMultiTableRegex (language, "skipPair",
209-
"^[])}]",
210-
"", "", "{tleave}", NULL);
211217
addLanguageTagMultiTableRegex (language, "skipPair",
212218
"^.",
213219
"", "", "", NULL);
@@ -226,6 +232,18 @@ static void initializeMesonParser (const langType language)
226232
addLanguageTagMultiTableRegex (language, "common",
227233
"^[[({]",
228234
"", "", "{tenter=skipPair}", NULL);
235+
addLanguageTagMultiTableRegex (language, "common",
236+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
237+
"", "", ""
238+
"{{\n"
239+
" cfgdict \\1 known {\n"
240+
" \\4 /cfgvar @4 _tag _commit\n"
241+
" cfgdict \\1 get scope:\n"
242+
" } if\n"
243+
"}}", NULL);
244+
addLanguageTagMultiTableRegex (language, "common",
245+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
246+
"", "", "", NULL);
229247
addLanguageTagMultiTableRegex (language, "common",
230248
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
231249
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -269,15 +287,9 @@ static void initializeMesonParser (const langType language)
269287
" % The configElt table refers to the cork index pushed by this table\n"
270288
" % for filling the scope of cfgvar/C tags.\n"
271289
"}}", NULL);
272-
addLanguageTagMultiTableRegex (language, "common",
273-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
274-
"", "", ""
275-
"{{\n"
276-
" cfgdict \\1 known {\n"
277-
" \\4 /cfgvar @4 _tag _commit\n"
278-
" cfgdict \\1 get scope:\n"
279-
" } if\n"
280-
"}}", NULL);
290+
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
291+
"^[])}]",
292+
"", "", "{tleave}", NULL);
281293
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
282294
"^[ \t\n]+",
283295
"", "", "", NULL);
@@ -293,6 +305,18 @@ static void initializeMesonParser (const langType language)
293305
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
294306
"^[[({]",
295307
"", "", "{tenter=skipPair}", NULL);
308+
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
309+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
310+
"", "", ""
311+
"{{\n"
312+
" cfgdict \\1 known {\n"
313+
" \\4 /cfgvar @4 _tag _commit\n"
314+
" cfgdict \\1 get scope:\n"
315+
" } if\n"
316+
"}}", NULL);
317+
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
318+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
319+
"", "", "", NULL);
296320
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
297321
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
298322
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -336,18 +360,6 @@ static void initializeMesonParser (const langType language)
336360
" % The configElt table refers to the cork index pushed by this table\n"
337361
" % for filling the scope of cfgvar/C tags.\n"
338362
"}}", NULL);
339-
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
340-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
341-
"", "", ""
342-
"{{\n"
343-
" cfgdict \\1 known {\n"
344-
" \\4 /cfgvar @4 _tag _commit\n"
345-
" cfgdict \\1 get scope:\n"
346-
" } if\n"
347-
"}}", NULL);
348-
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
349-
"^[])}]",
350-
"", "", "{tleave}", NULL);
351363
addLanguageTagMultiTableRegex (language, "skipToArgEnd",
352364
"^.",
353365
"", "", "", NULL);
@@ -375,6 +387,18 @@ static void initializeMesonParser (const langType language)
375387
addLanguageTagMultiTableRegex (language, "configBody",
376388
"^[[({]",
377389
"", "", "{tenter=skipPair}", NULL);
390+
addLanguageTagMultiTableRegex (language, "configBody",
391+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
392+
"", "", ""
393+
"{{\n"
394+
" cfgdict \\1 known {\n"
395+
" \\4 /cfgvar @4 _tag _commit\n"
396+
" cfgdict \\1 get scope:\n"
397+
" } if\n"
398+
"}}", NULL);
399+
addLanguageTagMultiTableRegex (language, "configBody",
400+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
401+
"", "", "", NULL);
378402
addLanguageTagMultiTableRegex (language, "configBody",
379403
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
380404
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -418,15 +442,6 @@ static void initializeMesonParser (const langType language)
418442
" % The configElt table refers to the cork index pushed by this table\n"
419443
" % for filling the scope of cfgvar/C tags.\n"
420444
"}}", NULL);
421-
addLanguageTagMultiTableRegex (language, "configBody",
422-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
423-
"", "", ""
424-
"{{\n"
425-
" cfgdict \\1 known {\n"
426-
" \\4 /cfgvar @4 _tag _commit\n"
427-
" cfgdict \\1 get scope:\n"
428-
" } if\n"
429-
"}}", NULL);
430445
addLanguageTagMultiTableRegex (language, "configElt",
431446
"^'([^']+)'[ \t\n]*:",
432447
"\\1", "C", "{tenter=configValue}"
@@ -453,6 +468,18 @@ static void initializeMesonParser (const langType language)
453468
addLanguageTagMultiTableRegex (language, "configElt",
454469
"^[[({]",
455470
"", "", "{tenter=skipPair}", NULL);
471+
addLanguageTagMultiTableRegex (language, "configElt",
472+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
473+
"", "", ""
474+
"{{\n"
475+
" cfgdict \\1 known {\n"
476+
" \\4 /cfgvar @4 _tag _commit\n"
477+
" cfgdict \\1 get scope:\n"
478+
" } if\n"
479+
"}}", NULL);
480+
addLanguageTagMultiTableRegex (language, "configElt",
481+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
482+
"", "", "", NULL);
456483
addLanguageTagMultiTableRegex (language, "configElt",
457484
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
458485
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -496,21 +523,15 @@ static void initializeMesonParser (const langType language)
496523
" % The configElt table refers to the cork index pushed by this table\n"
497524
" % for filling the scope of cfgvar/C tags.\n"
498525
"}}", NULL);
499-
addLanguageTagMultiTableRegex (language, "configElt",
500-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
501-
"", "", ""
502-
"{{\n"
503-
" cfgdict \\1 known {\n"
504-
" \\4 /cfgvar @4 _tag _commit\n"
505-
" cfgdict \\1 get scope:\n"
506-
" } if\n"
507-
"}}", NULL);
508526
addLanguageTagMultiTableRegex (language, "configValue",
509527
"^,",
510528
"", "", "{tjump=configElt}", NULL);
511529
addLanguageTagMultiTableRegex (language, "configValue",
512530
"^\\}",
513531
"", "", "{_advanceTo=0start}{tleave}", NULL);
532+
addLanguageTagMultiTableRegex (language, "configValue",
533+
"^[])}]",
534+
"", "", "{tleave}", NULL);
514535
addLanguageTagMultiTableRegex (language, "configValue",
515536
"^[ \t\n]+",
516537
"", "", "", NULL);
@@ -526,6 +547,18 @@ static void initializeMesonParser (const langType language)
526547
addLanguageTagMultiTableRegex (language, "configValue",
527548
"^[[({]",
528549
"", "", "{tenter=skipPair}", NULL);
550+
addLanguageTagMultiTableRegex (language, "configValue",
551+
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
552+
"", "", ""
553+
"{{\n"
554+
" cfgdict \\1 known {\n"
555+
" \\4 /cfgvar @4 _tag _commit\n"
556+
" cfgdict \\1 get scope:\n"
557+
" } if\n"
558+
"}}", NULL);
559+
addLanguageTagMultiTableRegex (language, "configValue",
560+
"^[df-hkm-qt-z][a-zA-Z0-9_]*",
561+
"", "", "", NULL);
529562
addLanguageTagMultiTableRegex (language, "configValue",
530563
"^(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\\([ \t\n]*'([^']*[^\\\\])'[ \t\n]*",
531564
"\\3", "B", "{tenter=skipToArgEnd}", NULL);
@@ -569,18 +602,6 @@ static void initializeMesonParser (const langType language)
569602
" % The configElt table refers to the cork index pushed by this table\n"
570603
" % for filling the scope of cfgvar/C tags.\n"
571604
"}}", NULL);
572-
addLanguageTagMultiTableRegex (language, "configValue",
573-
"^([a-zA-Z_][a-zA-Z0-9_]*)\\.(set(_quoted|10)?)[ \t\n]*\\('([^']*[^\\\\])'[ \t\n]*",
574-
"", "", ""
575-
"{{\n"
576-
" cfgdict \\1 known {\n"
577-
" \\4 /cfgvar @4 _tag _commit\n"
578-
" cfgdict \\1 get scope:\n"
579-
" } if\n"
580-
"}}", NULL);
581-
addLanguageTagMultiTableRegex (language, "configValue",
582-
"^[])}]",
583-
"", "", "{tleave}", NULL);
584605
addLanguageTagMultiTableRegex (language, "configValue",
585606
"^.",
586607
"", "", "", NULL);

optlib/meson.ctags

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,20 @@
7474
--_mtable-regex-Meson=common/'''//{tenter=mline_string}
7575
--_mtable-regex-Meson=common/'//{tenter=string}
7676
--_mtable-regex-Meson=common/[[({]//{tenter=skipPair}
77+
--_mtable-regex-Meson=common/([a-zA-Z_][a-zA-Z0-9_]*)\.(set(_quoted|10)?)[ \t\n]*\('([^']*[^\\])'[ \t\n]*//{{
78+
cfgdict \1 known {
79+
\4 /cfgvar @4 _tag _commit
80+
cfgdict \1 get scope:
81+
} if
82+
}}
83+
84+
#
85+
# Skip an unintersting token for optimization
86+
# ./ctags -o - /home/yamato/backup/var/util-linux/util-linux-2.41.devel-232-07aac-dirty/meson.build > /dev/null 2> /tmp/logf 0.46s user 0.01s system 97% cpu 0.483 total
87+
# => ./ctags -o - /home/yamato/backup/var/util-linux/util-linux-2.41.devel-232-07aac-dirty/meson.build > /dev/null 2> /tmp/logf 0.19s user 0.01s system 97% cpu 0.209 total
88+
#
89+
--_mtable-regex-Meson=common/[df-hkm-qt-z][a-zA-Z0-9_]*//
90+
7791
--_mtable-regex-Meson=common/(jar|executable|shared_module|(both_|shared_|static_)?library)[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\3/B/{tenter=skipToArgEnd}
7892
--_mtable-regex-Meson=common/custom_target[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/c/{tenter=skipToArgEnd}
7993
--_mtable-regex-Meson=common/(alias|run)_target[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\2/r/{tenter=skipToArgEnd}
@@ -106,15 +120,8 @@
106120
% for filling the scope of cfgvar/C tags.
107121
}}
108122

109-
--_mtable-regex-Meson=common/([a-zA-Z_][a-zA-Z0-9_]*)\.(set(_quoted|10)?)[ \t\n]*\('([^']*[^\\])'[ \t\n]*//{{
110-
cfgdict \1 known {
111-
\4 /cfgvar @4 _tag _commit
112-
cfgdict \1 get scope:
113-
} if
114-
}}
115-
116-
--_mtable-extend-Meson=skipPair+common
117123
--_mtable-regex-Meson=skipPair/[])}]//{tleave}
124+
--_mtable-extend-Meson=skipPair+common
118125
--_mtable-regex-Meson=skipPair/.//
119126

120127
--_mtable-extend-Meson=skipToArgEnd+skipPair
@@ -137,11 +144,11 @@
137144
--_mtable-regex-Meson=configValue/\}//{_advanceTo=0start}{tleave}
138145
--_mtable-extend-Meson=configValue+skipToArgEnd
139146

140-
--_mtable-extend-Meson=main+common
141-
--_mtable-regex-Meson=main/project[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/P/{tenter=skipToArgEnd}
142-
--_mtable-regex-Meson=main/subdir[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/S/{tenter=skipToArgEnd}
143-
--_mtable-regex-Meson=main/test[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/t/{tenter=skipToArgEnd}
144147
--_mtable-regex-Meson=main/([a-zA-Z_][a-zA-Z_0-9]*)[ \t\n]*=([^=]|$)/\1/V/{_advanceTo=2start}{{
145148
/lastvar . def
146149
}}
150+
--_mtable-regex-Meson=main/project[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/P/{tenter=skipToArgEnd}
151+
--_mtable-regex-Meson=main/subdir[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/S/{tenter=skipToArgEnd}
152+
--_mtable-regex-Meson=main/test[ \t\n]*\([ \t\n]*'([^']*[^\\])'[ \t\n]*/\1/t/{tenter=skipToArgEnd}
153+
--_mtable-extend-Meson=main+common
147154
--_mtable-regex-Meson=main/.//

0 commit comments

Comments
 (0)