Better typing and type verification
authorrossberg@chromium.org <rossberg@chromium.org>
Wed, 15 Oct 2014 11:38:04 +0000 (11:38 +0000)
committerrossberg@chromium.org <rossberg@chromium.org>
Wed, 15 Oct 2014 11:38:04 +0000 (11:38 +0000)
commit0e16150d339a14ee164bf5546932844593116bf8
tree2c039813bafe4d84def548f85031449a1504b984
parent46db2f9b80b70d1c550f65acf0db251538fa8f45
Better typing and type verification

- Extend verifier to check types of JS and Simplified nodes.
- Untyped nodes now contain NULL as types, enforcing hard failure.
- Typer immediately installs itself as a decorator; remove explicit decorator installation.
- Decorator eagerly types all nodes that have typed inputs
  (subsumes typing of constant cache, removing its typing
  side-channel and various spurious dependencies on the typer).
- Cut down typer interface to prevent inconsistently typed graphs.
- Remove verification from start, since it caused too much trouble
  with semi-wellformed nodes.
- Fix a couple of bugs on the way that got uncovered.

To do: verifying machine operators. Also, various conditions in the
verifier are currently commented out, because they don't yet hold.

BUG=
R=jarin@chromium.org,titzer@chromium.org

Review URL: https://codereview.chromium.org/658543002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
36 files changed:
src/compiler/generic-node-inl.h
src/compiler/graph-builder.cc
src/compiler/graph-visualizer.cc
src/compiler/graph.cc
src/compiler/graph.h
src/compiler/js-graph.cc
src/compiler/js-graph.h
src/compiler/js-inlining.cc
src/compiler/js-typed-lowering.cc
src/compiler/node-properties-inl.h
src/compiler/node-properties.h
src/compiler/node.h
src/compiler/pipeline.cc
src/compiler/pipeline.h
src/compiler/schedule.cc
src/compiler/typer.cc
src/compiler/typer.h
src/compiler/verifier.cc
src/compiler/verifier.h
src/types-inl.h
src/types.cc
src/types.h
test/cctest/compiler/test-changes-lowering.cc
test/cctest/compiler/test-js-constant-cache.cc
test/cctest/compiler/test-js-context-specialization.cc
test/cctest/compiler/test-js-typed-lowering.cc
test/cctest/compiler/test-machine-operator-reducer.cc
test/cctest/compiler/test-representation-change.cc
test/cctest/compiler/test-simplified-lowering.cc
test/cctest/compiler/test-typer.cc
test/unittests/compiler/change-lowering-unittest.cc
test/unittests/compiler/graph-unittest.h
test/unittests/compiler/js-builtin-reducer-unittest.cc
test/unittests/compiler/js-typed-lowering-unittest.cc
test/unittests/compiler/machine-operator-reducer-unittest.cc
test/unittests/compiler/simplified-operator-reducer-unittest.cc