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, ...@@ -1081,9 +1081,10 @@ void Interpreter::DoCompareOpWithFeedback(Token::Value compare_op,
__ Word32Equal(rhs_instance_type, __ Int32Constant(ODDBALL_TYPE)); __ Word32Equal(rhs_instance_type, __ Int32Constant(ODDBALL_TYPE));
__ GotoUnless(rhs_is_oddball, &rhs_is_not_oddball); __ GotoUnless(rhs_is_oddball, &rhs_is_not_oddball);
var_type_feedback.Bind( var_type_feedback.Bind(__ Word32Or(
__ Int32Constant(CompareOperationFeedback::kNumberOrOddball)); var_type_feedback.value(),
__ Goto(&do_compare); __ Int32Constant(CompareOperationFeedback::kNumberOrOddball)));
__ Goto(&update_feedback);
__ Bind(&rhs_is_not_oddball); __ 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