Commit e0960e19 authored by verwaest@chromium.org's avatar verwaest@chromium.org

Fix polymorphic inlining of accessors in a test-context.

R=ishell@chromium.org

Review URL: https://codereview.chromium.org/164003002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 52649ed2
......@@ -5791,9 +5791,13 @@ void HOptimizedGraphBuilder::HandlePolymorphicNamedFieldAccess(
}
ASSERT(join != NULL);
join->SetJoinId(ast_id);
set_current_block(join);
if (!ast_context()->IsEffect()) ast_context()->ReturnValue(Pop());
if (join->HasPredecessor()) {
join->SetJoinId(ast_id);
set_current_block(join);
if (!ast_context()->IsEffect()) ast_context()->ReturnValue(Pop());
} else {
set_current_block(NULL);
}
}
......
// Copyright 2014 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
function t1() { return this instanceof t1; }
function t2() { return this instanceof t2; }
var o1 = new (function() { })();
Object.defineProperty(o1, "t", {get:function() { return this instanceof o1.constructor; }});
var o2 = new (function() { })();
Object.defineProperty(o2, "t", {get:function() { return this instanceof o1.constructor; }});
var o3 = new (function() { })();
o3.t = true;
function f(o) {
return 1 + (o.t ? 1 : 2);
}
f(o1);
f(o1);
f(o2);
%OptimizeFunctionOnNextCall(f);
f(o3);
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