X87: Correctify instanceof and make it optimizable.
authorchunyang.dai <chunyang.dai@intel.com>
Wed, 26 Aug 2015 09:56:37 +0000 (02:56 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 26 Aug 2015 09:56:54 +0000 (09:56 +0000)
commit3aeed04dc265ce3a5f0d244a6cf3e1fca670b0e0
tree3d52ab0159be2648db33f1da8bb46ea55696c52e
parentcbd4f5aa98eb82f5ef68c7163f2fd4f27b958e67
X87: Correctify instanceof and make it optimizable.

port 5d875a57fa2e65c1a4a6b50aeb23c38299c3cfbc (r30342).

original commit message:

    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.

R=weiliang.lin@intel.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#30376}
src/full-codegen/x87/full-codegen-x87.cc
src/x87/code-stubs-x87.cc
src/x87/interface-descriptors-x87.cc
src/x87/lithium-codegen-x87.cc
src/x87/lithium-codegen-x87.h
src/x87/lithium-x87.cc
src/x87/lithium-x87.h
src/x87/macro-assembler-x87.cc
src/x87/macro-assembler-x87.h