Commit d240ffec authored by bmeurer's avatar bmeurer Committed by Commit bot

[interpreter] Properly collect rhs feedback for comparisons with oddballs.

Ignition skipped collecting NumberOrOddball feedback if the right hand
side of a relational comparison is undefined, thus leading to a
deoptimization loop, because it reported Number feedback to TurboFan.

This was caught on 3d-raytrace test of SunSpider.

R=rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/2513903002
Cr-Commit-Position: refs/heads/master@{#41094}
parent 28d7c1fb
......@@ -1081,9 +1081,10 @@ void Interpreter::DoCompareOpWithFeedback(Token::Value compare_op,
__ Word32Equal(rhs_instance_type, __ Int32Constant(ODDBALL_TYPE));
__ GotoUnless(rhs_is_oddball, &rhs_is_not_oddball);
var_type_feedback.Bind(
__ Int32Constant(CompareOperationFeedback::kNumberOrOddball));
__ Goto(&do_compare);
var_type_feedback.Bind(__ Word32Or(
var_type_feedback.value(),
__ Int32Constant(CompareOperationFeedback::kNumberOrOddball)));
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_oddball);
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment