• jarin's avatar
    Remove the template magic from types.(h|cc), remove types-inl.h. · ef35f11c
    jarin authored
    This CL removes the Config templatization from the types. It is not
    necessary anymore, after the HeapTypes have been removed.
    
    The CL also changes the type hierarchy - the specific type kinds are
    not inner classes of the Type class and they do not inherit from Type.
    This is partly because it seems impossible to make this work without
    templates. Instead, a new TypeBase class is introduced and all the
    structural (i.e., non-bitset) types inherit from it.
    
    The bitset type still requires the bit-munging hack and some nasty
    reinterpret-casts to pretend bitsets are of type Type*. Additionally,
    there is now the same hack for TypeBase - all pointers to the sub-types
    of TypeBase are reinterpret-casted to Type*. This is to keep the type
    constructors in inline method definitions (although it is unclear how
    much that actually buys us).
    
    In future, we would like to move to a model where we encapsulate Type*
    into a class (or possibly use Type where we used to use Type*). This
    would loosen the coupling between bitset size and pointer size, and
    eventually we would be able to have more bits.
    
    TBR=bradnelson@chromium.org
    
    Review URL: https://codereview.chromium.org/1655833002
    
    Cr-Commit-Position: refs/heads/master@{#33656}
    ef35f11c
types.cc 41.7 KB