Steps towards unification of number bitset and range types.
authorrossberg <rossberg@chromium.org>
Wed, 21 Jan 2015 15:29:10 +0000 (07:29 -0800)
committerCommit bot <commit-bot@chromium.org>
Wed, 21 Jan 2015 15:29:22 +0000 (15:29 +0000)
commit2764fd8d1a266a9136c987c2483492113b0c8d80
tree0ce2e20c3c6f634d5408ed3f291d030638d58b2f
parent78ae35c022c6bed25af02b766f36eea16a5e589e
Steps towards unification of number bitset and range types.

- 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}
src/compiler/change-lowering.cc
src/compiler/typer.cc
src/types-inl.h
src/types.cc
src/types.h
test/cctest/compiler/test-js-typed-lowering.cc
test/cctest/test-types.cc
test/cctest/types-fuzz.h
test/unittests/compiler/change-lowering-unittest.cc
test/unittests/compiler/js-builtin-reducer-unittest.cc