• danno's avatar
    Re-reland: Remove register index/code indirection · 5cf1c0bc
    danno authored
    Previous to this patch, both the lithium and TurboFan register
    allocators tracked allocated registers by "indices", rather than
    the register codes used elsewhere in the runtime. This patch
    ensures that codes are used everywhere, and in the process cleans
    up a bunch of redundant code and adds more structure to how the
    set of allocatable registers is defined.
    
    Some highlights of changes:
    
    * TurboFan's RegisterConfiguration class moved to V8's top level
      so that it can be shared with Crankshaft.
    * Various "ToAllocationIndex" and related methods removed.
    * Code that can be easily shared between Register classes on
      different platforms is now shared.
    * The list of allocatable registers on each platform is declared
      as a list rather than implicitly via the register index <->
      code mapping.
    
    Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2
    Cr-Commit-Position: refs/heads/master@{#30913}
    
    Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf
    Cr-Commit-Position: refs/heads/master@{#31075}
    
    Review URL: https://codereview.chromium.org/1287383003
    
    Cr-Commit-Position: refs/heads/master@{#31087}
    5cf1c0bc
instruction-selector-unittest.cc 21.9 KB