Commit 31a8ec77 authored by mstarzinger's avatar mstarzinger Committed by Commit bot

[turbofan] Fix bogus representation for {kCheckTaggedHole}.

The operator in question is guaranteed to produce a tagged value that is
not equal to the-hole, it however does not guarantee the value to be a
HeapObject. The correct representation hence is {kTagged}.

R=bmeurer@chromium.org
TEST=mjsunit/regress/regress-crbug-665587
BUG=chromium:665587

Review-Url: https://codereview.chromium.org/2504183002
Cr-Commit-Position: refs/heads/master@{#41032}
parent feb78771
......@@ -2466,8 +2466,7 @@ class RepresentationSelector {
return;
}
case IrOpcode::kCheckTaggedHole: {
VisitUnop(node, UseInfo::AnyTagged(),
MachineRepresentation::kTaggedPointer);
VisitUnop(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged);
return;
}
case IrOpcode::kConvertTaggedHoleToUndefined: {
......
// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax --expose-gc
var a = new (function() { this[0] = 1 });
function f() {
for (var i = 0; i < 4; ++i) {
var x = a[0];
(function() { return x });
if (i == 1) %OptimizeOsr();
gc();
}
}
f();
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