Reapply "Shuffle around deopt id allocation to give the flow graph builder a chance to record other data as they are allocated".

- Fix inlining of new List(n) to propogate deopt id.
 - Fix CreateArrayOpt to check for a Smi length.

R=vegorov@google.com

Review-Url: https://codereview.chromium.org/2900963008 .
This commit is contained in:
Ryan Macnak
2017-05-25 10:12:19 -07:00
parent 2248502611
commit bcf2900a26
21 changed files with 582 additions and 414 deletions
+3 -2
View File
@@ -3554,7 +3554,7 @@ Fragment StreamingFlowGraphBuilder::BuildWhileStatement() {
Fragment loop(join);
loop += CheckStackOverflow();
loop += condition;
entry = new (Z) GotoInstr(join);
entry = new (Z) GotoInstr(join, Thread::Current()->GetNextDeoptId());
} else {
entry = condition.entry;
}
@@ -3588,7 +3588,8 @@ Fragment StreamingFlowGraphBuilder::BuildDoStatement() {
repeat += Goto(join);
loop_depth_dec();
return Fragment(new (Z) GotoInstr(join), loop_exit);
return Fragment(new (Z) GotoInstr(join, Thread::Current()->GetNextDeoptId()),
loop_exit);
}
Fragment StreamingFlowGraphBuilder::BuildForStatement() {