| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 4e00ba6907fd60f59e25f0570c812b6727ad30ec..2d51b9b463941f072c2fc7f92b331eee66e80080 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -4711,7 +4711,7 @@ void HOptimizedGraphBuilder::HandlePolymorphicLoadNamedField(
|
| set_current_block(if_true);
|
|
|
| HInstruction* load = BuildLoadMonomorphic(
|
| - &info, object, compare, ast_id, return_id, false);
|
| + &info, object, compare, ast_id, return_id, FLAG_polymorphic_inlining);
|
| if (load == NULL) {
|
| if (HasStackOverflow()) return;
|
| } else {
|
| @@ -4731,6 +4731,10 @@ void HOptimizedGraphBuilder::HandlePolymorphicLoadNamedField(
|
| // know about and do not want to handle ones we've never seen. Otherwise
|
| // use a generic IC.
|
| if (count == types->length() && FLAG_deoptimize_uncommon_cases) {
|
| + // Because the deopt may be the only path in the polymorphic load, make sure
|
| + // that the environment stack matches the depth on deopt that it otherwise
|
| + // would have had after a successful load.
|
| + if (!ast_context()->IsEffect()) Push(graph()->GetConstant0());
|
| FinishExitWithHardDeoptimization("Unknown map in polymorphic load", join);
|
| } else {
|
| HValue* context = environment()->context();
|
|
|