|
From: | Eric Blake |
Subject: | Re: [Qemu-devel] [PATCH v2 52/60] json: Eliminate lexer state IN_WHITESPACE, pseudo-token JSON_SKIP |
Date: | Fri, 17 Aug 2018 11:07:35 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 08/17/2018 10:05 AM, Markus Armbruster wrote:
Bonus: static json_lexer[] loses its unused elements. It shrinks from 8KiB to 4.75KiB for me. Signed-off-by: Markus Armbruster <address@hidden> Reviewed-by: Eric Blake <address@hidden> ---
['a' ... 'z'] = IN_KEYWORD, - [' '] = IN_WHITESPACE, - ['\t'] = IN_WHITESPACE, - ['\r'] = IN_WHITESPACE, - ['\n'] = IN_WHITESPACE, + [' '] = IN_START, + ['\t'] = IN_START, + ['\r'] = IN_START, + ['\n'] = IN_START, }, [IN_START_INTERPOL]['%'] = IN_INTERPOL, + [IN_START_INTERPOL][' '] = IN_START_INTERPOL, + [IN_START_INTERPOL]['\t'] = IN_START_INTERPOL, + [IN_START_INTERPOL]['\r'] = IN_START_INTERPOL, + [IN_START_INTERPOL]['\n'] = IN_START_INTERPOL,
Hmm, if we did this: [IN_START_INTERPOL] { ['%'] = IN_INTERPOL, ['\t'] = IN_START_INTERPOL, ... }for similarity with all our other constructs, will gcc remember that we've already initialized other members not listed in the clause before, or will it mistakenly re-0-initialize the array members not mentioned?
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
[Prev in Thread] | Current Thread | [Next in Thread] |