PPC: Correctify instanceof and make it optimizable.
authormbrandy <mbrandy@us.ibm.com>
Thu, 27 Aug 2015 15:10:50 +0000 (08:10 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 27 Aug 2015 15:11:03 +0000 (15:11 +0000)
commit448a3c0fe0f0d7b412bec455153b6b30e9aa803c
tree923273d7e284d00efdbc83bcc34cd0bd591c7e0e
parent5d3f801a463df6644e26f709db691d44469643c8
PPC: Correctify instanceof and make it optimizable.

Port 5d875a57fa2e65c1a4a6b50aeb23c38299c3cfbc

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=bmeurer@chromium.org, jyan@ca.ibm.com, dstence@us.ibm.com, joransiu@ca.ibm.com
BUG=v8:4376
LOG=n

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

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