attr: do not attempt to expand when we know it's not a macro
commitfad32bcd83ec4e4f88013e4a0b05f42e32e2c6f5
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sat, 27 Dec 2014 23:39:47 +0000 (28 06:39 +0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Dec 2014 20:40:45 +0000 (29 12:40 -0800)
tree411b04fd3ba7cf8913eeac1ae77574827fcb0e5f
parentaa7710e064a9ee644e1e86bd6f89193200ac4ccd
attr: do not attempt to expand when we know it's not a macro

Keep track of all recognized macros in the new "maybe_macro" field.
If this field is true, it _may_ be a macro (depending on what's in the
current attr stack). But if the field is false, it's definitely not a
macro, no need to go through the whole attr stack in macroexpand_one()
to search for one.

Without this, "git grep abcdefghi" on git.git hits the inner loop in
macroexpand_one() 2481 times. With this, it's 66 times.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
attr.c