• Adam Klein's avatar
    Skip hole initialization of lexical variables when possible · ededfcd2
    Adam Klein authored
    This patch expands scope analysis to skip hole initialization
    when it can be determined statically that no hole checks will
    be generated at runtime.
    
    Two conditions must be met to safely eliminate hole initialization:
      - There must not exist a VariableProxy referencing this Variable
        whose HoleCheckMode is kRequired
      - The Variable must be stack allocated; any other allocation implies
        that it may be accessed from not-yet-analyzed scopes (other modules,
        inner functions, or eval code) and that code may require
        hole checks.
    
    The new logic required removing debug code in full-codegen which is
    now incorrect in some cases.
    
    Also fixed Variable's bitfield helpers to take no more space than needed.
    
    Bug: chromium:651637
    Change-Id: Ie5ac326af4e05b7a5c3c37cd4d0afba6a51a504d
    Reviewed-on: https://chromium-review.googlesource.com/494006
    Commit-Queue: Adam Klein <adamk@chromium.org>
    Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#45170}
    ededfcd2
full-codegen-mips.cc 98.3 KB