JIT: improve types for single def locals and temps (#10471)
authorAndy Ayers <andya@microsoft.com>
Wed, 29 Mar 2017 21:16:46 +0000 (14:16 -0700)
committerGitHub <noreply@github.com>
Wed, 29 Mar 2017 21:16:46 +0000 (14:16 -0700)
commite99037f5c750b52016b940f964cee920b1579ff8
tree2e207607c258128c1ea0dd972ff9f9383e2ca769
parent65bab0936a3ee82c6b4a5d83c7b63b22fd225ff3
JIT: improve types for single def locals and temps (#10471)

* JIT: improve types for single def locals and temps

Track whether a local has a single definition, and if so, if it has
a reference type, try and update its type from the declared type to
a better type taken from the value being assigned to the local.

Obtain types for some of the 'short-lived' ref type temps that should
have a single definition. Use both the tree and the eval stack as sources
of type information (the latter can be phased out if/when all tree nodes
can return rich type information).

Refactor the code that sets or updates lvClassHnd into utilities
to provide better auditing of type flow and make the set/update process
a bit more rigorous.

Cleanup the code that passes argument values a bit by commoning redundant
argument lookup expressions.
src/jit/compiler.h
src/jit/compiler.hpp
src/jit/flowgraph.cpp
src/jit/importer.cpp
src/jit/inline.h
src/jit/lclvars.cpp