5d875a57fa
The previous hack with HInstanceOfKnownGlobal was not only slower, but also very brittle and required a lot of weird hacks to support it. And what's even more important it wasn't even correct (because a map check on the lhs is never enough for instanceof). The new implementation provides a sane runtime implementation for InstanceOf plus a fast case in the InstanceOfStub, combined with a proper specialization in the case of a known global in CrankShaft, which does only the prototype chain walk (coupled with a code dependency on the known global). As a drive-by-fix: Also fix the incorrect Object.prototype.isPrototypeOf implementation. BUG=v8:4376 LOG=y Review URL: https://codereview.chromium.org/1304633002 Cr-Commit-Position: refs/heads/master@{#30342}
13 lines
384 B
JavaScript
13 lines
384 B
JavaScript
// Copyright 2015 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.
|
|
|
|
function Bar() { }
|
|
function Baz() { }
|
|
Baz.prototype = { __proto__: new Bar() }
|
|
var x = new Baz();
|
|
function foo(y) { return y instanceof Bar; }
|
|
assertTrue(foo(x));
|
|
Baz.prototype.__proto__ = null;
|
|
assertFalse(foo(x));
|