• rossberg's avatar
    Steps towards unification of number bitset and range types. · 2764fd8d
    rossberg authored
    - New invariant on union types: if the union has a range then the number
      bits in the bitset must be cleared.
    
    - Various tweaks in intersection and union to satisfy the invariant.
    
    - Exposed and used representation bits in range types (and the Limits
      helper class).
    
    - Implemented Glb for ranges so that the Is predicate handles
      ranges correctly.
    
    - Change typer weakening so that it does not rely on GetRange.
      However, the code still seems to be a bit fragile.
    
    - Removed the Smi types from the type system core, instead introduced
      Signed31, Unsigned30 and created constructors for Small(Un)Signed
      that point to the right type for the architecture.
    
    - Punched a hole in the config to be able to get to the isolate so
      that it is possible to allocate heap numbers for newly created
      ranges.
    
    Patch by jarin@chromium.prg, original review here:
    https://codereview.chromium.org/795713003/
    
    TBR=jarin@chromium.org
    BUG=
    
    Review URL: https://codereview.chromium.org/837723006
    
    Cr-Commit-Position: refs/heads/master@{#26197}
    2764fd8d
types.cc 41.3 KB