Fix an bug in deoptimization after polymorphic calls in effect contexts.
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 6 Jan 2011 07:38:19 +0000 (07:38 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 6 Jan 2011 07:38:19 +0000 (07:38 +0000)
commit9a096e643aef53300480774a2326c70f0ca29a0d
treec7da018614112527be018e8bd46f2eff3b5fbce3
parentc26bd162f811305785dc42780b78b4e7d249001f
Fix an bug in deoptimization after polymorphic calls in effect contexts.

For polymorphic calls (also loads and stores) we construct a type switch
graph that has a basic block merging all the variants.  There is an
environment simulation before the goto at the end of all the predecessor
blocks.  This simulation is used to define the environment on entry to the
successor block, and captures the return value of the call.  In effect
contexts, this value should not be present in the environment.

The fix is to use the AST context to decide whether to have this value in
the join node's environment at all.

BUG=1014

Review URL: http://codereview.chromium.org/6065014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/hydrogen.cc