Commit Graph

33297 Commits

Author SHA1 Message Date
adamk
680ae2c001 [interpreter] Logically separate hole-checking and const assignment errors
In addition, make use of Variable::binding_needs_init() in addition to
VariableMode when deciding whether to do hole checking in variable assignment.

R=rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/2227203002
Cr-Commit-Position: refs/heads/master@{#38555}
2016-08-10 17:32:41 +00:00
lpy
c72f637c73 Move SimulatorHelper into V8 out of profiler clients.
This patch is based on alph's CL https://codereview.chromium.org/2128613004/.

This patch makes GetStackSample propogate the register state when using
simulator helper, and adds argument to avoid using register state from simulator
when pass the native register state.

BUG=v8:4789
LOG=N

Review-Url: https://codereview.chromium.org/2189513002
Cr-Commit-Position: refs/heads/master@{#38554}
2016-08-10 17:12:27 +00:00
lpy
0359e1f63e [Tracing] Create TraceConfig JSON string parser in D8.
BUG=v8:4561
LOG=N

Review-Url: https://codereview.chromium.org/2208873002
Cr-Commit-Position: refs/heads/master@{#38553}
2016-08-10 17:11:08 +00:00
krasin
a9b5eb0c59 cctest: put some types into anonymous namespace.
This is to prevent a collision with Expectations class defined in test-field-type-tracking.cc, which happens in Clang under certain conditions (official build + Precise + unknown).

While the original intent was to just workaround the Clang bug, putting types into anonymous namespace seems reasonable anyway (thank you to Benedikt Meurer for the suggestion!)

BUG=630335

Review-Url: https://codereview.chromium.org/2227073002
Cr-Commit-Position: refs/heads/master@{#38552}
2016-08-10 16:46:33 +00:00
bjaideep
04c51b214f PPC/s390: Use Variable::binding_needs_init() to determine hole initialization
Port 6768456db5

Original commit message:

    The old code was using VariableMode, but that signal is both
    over-pessimistic (some CONST and LET variables need no hole-initialization)
    and inconsistent with other uses of the InitializationFlag enum (such
    as %LoadLookupSlot).

    This changes no observable behavior, but removes unnecessary hole
    initialization and hole checks in a few places, including
    block-scoped function declarations, super property lookups,
    and new.target.

R=adamk@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2229383004
Cr-Commit-Position: refs/heads/master@{#38551}
2016-08-10 16:43:56 +00:00
rmcilroy
d1ab9f126c [Interpreter] Avoid allocating handles in bytecode-array-writer
Don't allocate handles in the bytecode array writer, to allow off-thread
bytecode generation.

BUG=v8:5203

Review-Url: https://codereview.chromium.org/2226333002
Cr-Commit-Position: refs/heads/master@{#38550}
2016-08-10 16:42:04 +00:00
ishell
b558894ac4 [ic] Merge LoadGlobalIC_Slow builtins for inside typeof and outside typeof cases.
... and let the stub ask the IC whether it should throw or not when the property was not found.
This CL undoes ast-numbering changes made here: https://codereview.chromium.org/2219303002/

BUG=chromium:634467
TBR=verwaest@chromium.org

Review-Url: https://codereview.chromium.org/2220203002
Cr-Commit-Position: refs/heads/master@{#38549}
2016-08-10 16:36:06 +00:00
mstarzinger
685210ecb0 [interpreter] Switch profiler to use frames for OSR.
This switches the interface of the runtime profiler to use frames as
opposed to functions for performing on-stack replacement. Requests for
such replacements need to target a specific frame. This will enable us
to activate bytecode as well as baseline code for the same function.

The existing %OptimizeOsr runtime function also had to adapted and now
takes an optional stack depth to target a specific stack frame.

R=bmeurer@chromium.org
BUG=v8:4764

Review-Url: https://codereview.chromium.org/2230783004
Cr-Commit-Position: refs/heads/master@{#38548}
2016-08-10 15:59:31 +00:00
mlippautz
09e7c01b31 [heap] Fix LAB tests
Let's not write out of bounds here.

R=hpayer@chromium.org
BUG=chromium:636331

Review-Url: https://codereview.chromium.org/2237473002
Cr-Commit-Position: refs/heads/master@{#38547}
2016-08-10 15:58:03 +00:00
epertoso
c78c499a64 Disables readability/fn_sizes for v8.
NOTRY=true
NOPRESUBMIT=true
NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2231083002
Cr-Commit-Position: refs/heads/master@{#38546}
2016-08-10 15:15:21 +00:00
epertoso
779e3d6df0 Revert of [turbofan] Reduces x << y ^ x >>> (32 - y) to x ror (32 - y). (patchset #1 id:1 of https://codereview.chromium.org/2199323003/ )
Reason for revert:
It may or may not have caused a regression in kraken-crypto-ccm.

Original issue's description:
> [turbofan] Reduces x << y ^ x >>> (32 - y) to x ror (32 - y).
>
> The MachineOperatorReducer was only reducing word32 expressions of the type x << y | x >>> (32 - y) (and variants) to the equivalent Word32Ror. This CL applies the same pattern-matching logic to Word32Xor.
>
> BUG=
>
> Committed: https://crrev.com/a86397d890d3caa01a947e2a6e71beb1f58e6e6b
> Cr-Commit-Position: refs/heads/master@{#38284}

TBR=bmeurer@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
NOPRESUBMIT=true
BUG=

Review-Url: https://codereview.chromium.org/2230213002
Cr-Commit-Position: refs/heads/master@{#38545}
2016-08-10 14:47:17 +00:00
danno
d3905561b9 [turbolizer] Use locations rather than ranges everywhere
Also convert CodeView to a class and fix a host of selection
bugs in the process, as well as move the logic and data to
"enrich" location with one type of location data with location
data known globally to the whole graph in the selection broker.

Review-Url: https://codereview.chromium.org/2230083004
Cr-Commit-Position: refs/heads/master@{#38544}
2016-08-10 14:46:11 +00:00
epertoso
63516a8c60 [interpreter] Collect type feedback in Add, Mul, Div and Mod.
Introduces code stubs to collect type feedback for the Add, Mul, Div and Mod operations in the interpreter, and modifies the BytecodeGraphBuilder to make use of it.

BUG=v8:5273
LOG=N

Review-Url: https://codereview.chromium.org/2224343002
Cr-Commit-Position: refs/heads/master@{#38543}
2016-08-10 14:34:00 +00:00
rmcilroy
27a60a38b1 [Interpreter] Create ScopeInfos in ast-numbering phase.
Creates ScopeInfos during the ast-numbering phase so that they
are already created during bytecode generation so that they don't
need to be allocated during concurrent bytecode generation.

BUG=v8:5203

Review-Url: https://codereview.chromium.org/2223283002
Cr-Commit-Position: refs/heads/master@{#38542}
2016-08-10 14:27:57 +00:00
mstarzinger
417b3010b2 [generators] Add asserts preventing mixed functions.
This adds assertions to generator support functions that distinguish
between old-style and new-style generators which make sure only one
of those styles is actually used. Even though normal functions can soon
be mixed (bytecode and baseline code at the same time), generator
functions are still exclusively in only one tier.

R=neis@chromium.org
BUG=v8:5265

Review-Url: https://codereview.chromium.org/2233863002
Cr-Commit-Position: refs/heads/master@{#38541}
2016-08-10 14:19:51 +00:00
mstarzinger
9e60db1f38 [interpreter] Add ability to preserve bytecode.
This adds the --ignition-preserve-bytecode flag which will preserve any
existing bytecode, even if a tier-up to baseline code is performed. This
is preparatory work in order to allow mixed stacks where bytecode and
baseline code can be active at the same time.

It also adds a {HasBaselineCode} predicate symmetric to the existing
{HasBytecodeArray} predicate. Both predicates are independent and any
combination of answers is valid.

Further adaptation of the rest of the runtime will be done step-wise in
follow-up changes.

R=yangguo@chromium.org
BUG=v8:5265

Review-Url: https://codereview.chromium.org/2224923003
Cr-Commit-Position: refs/heads/master@{#38540}
2016-08-10 13:54:05 +00:00
jkummerow
8e8bfb5d72 [KeyedLoadIC] Refactor typed array loading code
This is just reformatting, no change in behavior.

Review-Url: https://codereview.chromium.org/2228023002
Cr-Commit-Position: refs/heads/master@{#38539}
2016-08-10 12:36:08 +00:00
neis
b2ff10c43d [modules] Detect all indirect exports and represent them as such.
BUG=v8:1569

Review-Url: https://codereview.chromium.org/2223893004
Cr-Commit-Position: refs/heads/master@{#38538}
2016-08-10 12:18:27 +00:00
mlippautz
555c961990 Revert of [heap] Switch to 500k pages (patchset #24 id:780001 of https://codereview.chromium.org/2013713003/ )
Reason for revert:
Failures on waterfall:

e.g. http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/11134

Original issue's description:
> [heap] Switch to 500k pages
>
> - Decrease regular heap object size to 300k, keeping the same ration (60%)
>   between this limit and page size.
>
> In a follow up, we can now get rid of the new space border page while
> keeping the 1M minimum new space size.
>
> Some results (v8.infinite_scroll; 3 runs):
> - evacuate.avg: +15.3% (1.4->1.2)
> - evacuate.max: +24.4% (2.4->1.8)
>
> BUG=chromium:581412
> LOG=N
> R=hpayer@chromium.org, ulan@chromium.org, yangguo@chromium.org
>
> Committed: https://crrev.com/ffe5c670e1559d11e7b252e15fec38765e7dbe4f
> Cr-Commit-Position: refs/heads/master@{#38533}

TBR=hpayer@chromium.org,ulan@chromium.org,yangguo@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:581412

Review-Url: https://codereview.chromium.org/2229403003
Cr-Commit-Position: refs/heads/master@{#38537}
2016-08-10 12:13:00 +00:00
verwaest
cbe5d41d88 Make the AstValueFactory more efficient and less memory hungry
This makes strings_ and values_ in AstValueFactory a linked list through the AstString and AstValue objects. Additionally the CL computes whether strings are convertible to array indexes directly using the AstString's hash + literal bytes just as Name does, rather than indirecting over name if available.

BUG=

Review-Url: https://codereview.chromium.org/2225423002
Cr-Commit-Position: refs/heads/master@{#38536}
2016-08-10 11:55:14 +00:00
peterssen
d073777bbf Add faster, but unsafe version of LoadInternalField.
LoadInternalField performs some redundant checks in the context of
fast accessors.
This improves the speedup from 20% to 60% for next/previousSibling in
the Dromaeo DOM traversal benchmarks.

BUG=chromium:508898

Review-Url: https://codereview.chromium.org/2186593002
Cr-Commit-Position: refs/heads/master@{#38535}
2016-08-10 11:54:11 +00:00
verwaest
58524d6df3 Fix CollectNonLocals
Now it actually collects free variables of the target function, rather than any reference to a non-stack-allocated variable in any of the inner scopes.

BUG=

Review-Url: https://codereview.chromium.org/2229373002
Cr-Commit-Position: refs/heads/master@{#38534}
2016-08-10 11:49:42 +00:00
mlippautz
ffe5c670e1 [heap] Switch to 500k pages
- Decrease regular heap object size to 300k, keeping the same ration (60%)
  between this limit and page size.

In a follow up, we can now get rid of the new space border page while
keeping the 1M minimum new space size.

Some results (v8.infinite_scroll; 3 runs):
- evacuate.avg: +15.3% (1.4->1.2)
- evacuate.max: +24.4% (2.4->1.8)

BUG=chromium:581412
LOG=N
R=hpayer@chromium.org, ulan@chromium.org, yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2013713003
Cr-Commit-Position: refs/heads/master@{#38533}
2016-08-10 11:45:31 +00:00
neis
29e85e36f3 [modules] Split imports into regular and special, store regular ones in a map.
BUG=v8:1569

Review-Url: https://codereview.chromium.org/2224333002
Cr-Commit-Position: refs/heads/master@{#38532}
2016-08-10 11:42:13 +00:00
bgeron
3306dbc2f8 [turbofan] Ensure nodes without kNoThrow have only IfSuccess or IfException uses.
This adds an IfSuccess control use in three places:

- in the lowering of isinstance,
- in wasm BuildTrapCode,
- in wasm BuildJavaScriptToNumber,
- WasmGrowMemory is marked as kNoThrow.

BUG=

Review-Url: https://codereview.chromium.org/2226163004
Cr-Commit-Position: refs/heads/master@{#38531}
2016-08-10 11:34:35 +00:00
jgruber
4cff8218b8 Allow access to scopes of suspended generator objects
The scopes of suspended generators can now be accessed through GeneratorMirror
(similar to FrameMirror).

BUG=v8:5235

Review-Url: https://codereview.chromium.org/2228393002
Cr-Commit-Position: refs/heads/master@{#38530}
2016-08-10 11:14:45 +00:00
jgruber
a91811e192 Move remaining Message functions to C++
BUG=

Review-Url: https://codereview.chromium.org/2224973002
Cr-Commit-Position: refs/heads/master@{#38529}
2016-08-10 09:58:26 +00:00
yangguo
e2e676d51d [debugger] use source position to identify break points.
This makes break point info independent from the code kind being executed.

BUG=v8:5265

Review-Url: https://codereview.chromium.org/2230143002
Cr-Commit-Position: refs/heads/master@{#38528}
2016-08-10 09:57:20 +00:00
verwaest
7e065bad8c Don't compare the hash in AstRawStringCompare since it's guaranteed by the HashMap implementation
BUG=

Review-Url: https://codereview.chromium.org/2227733003
Cr-Commit-Position: refs/heads/master@{#38527}
2016-08-10 09:43:47 +00:00
rmcilroy
09e921d4c8 [Interpreter] Avoid dereferencing handles on BytecodeGenerator for AST operations.
Updates a number of AST operations to avoid dereferencing handles
such that they can safely be called off-thread. Also adds a
HandleDereferenceMode argument to some operations where handles are
compared. If handle dereferencing is allowed, the handles are compared
directly, if not then their locations are compared (which relies on the
handles being created in a CanonicalHandleScope).

BUG=v8:5203
TBR=adamk@chromium.org

Review-Url: https://codereview.chromium.org/2223523002
Cr-Commit-Position: refs/heads/master@{#38526}
2016-08-10 09:33:20 +00:00
epertoso
9e14155da9 [turbofan] Fix CheckedInt32Mod lowering.
We now deopt when the lhs of a mod is negative and the rhs is 1 too (previously, we erroneusly returned 0 instead of -0).

BUG=v8:5278
R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2233713002
Cr-Commit-Position: refs/heads/master@{#38525}
2016-08-10 09:24:59 +00:00
bjaideep
2b15dd52ad PPC/s390: [turbofan] Remove the FloatXXSubPreserveNan operators.
Port f8938e5096

Original commit message:

    This CL changes the semantics of FloatXXSub to match the semantics of
    the semantics of FloatXXSubPreserveNan. Therefore there is no need
    anymore for the FloatXXSubPreserveNan operators.

    The optimizations in VisitFloatXXSub which are removed in this CL have
    already been moved to machine-operator-reducer.cc in
    https://codereview.chromium.org/2226663002

R=ahaas@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2228973002
Cr-Commit-Position: refs/heads/master@{#38524}
2016-08-10 09:04:00 +00:00
bmeurer
da2a53552e [turbofan] Improve typing for CheckBounds.
Also eliminate redundant CheckBounds node during SimplifiedLowering if
we can prove that the index is within the [0.0, length[ range.

R=epertoso@chromium.org

Review-Url: https://codereview.chromium.org/2229343002
Cr-Commit-Position: refs/heads/master@{#38523}
2016-08-10 08:49:33 +00:00
vogelheim
fab2efa84a Make LiteralBuffer + LiteralScope private.
Reduce the Scanner API, in order to make subsequent rework easier.

R=marja@chromium.org
BUG=v8:4947

Review-Url: https://codereview.chromium.org/2192883002
Cr-Commit-Position: refs/heads/master@{#38522}
2016-08-10 08:40:40 +00:00
yangguo
56b7a5fa68 Revert of [debugger] reapply break points after clearing one shots. (patchset #1 id:1 of https://codereview.chromium.org/2221333002/ )
Reason for revert:
Found better solution.

Original issue's description:
> [debugger] reapply break points after clearing one shots.
>
> On the debug info, we have a list of existing break points.  When we
> step in the debugger, we flood the function with one-shot break points.
> Afterwards, we clear these one-shots by clearing all break locations.
>
> Previously, while clearing break locations, we would skip ones that have
> actual break points. Now we clear all break locations, and then reapply
> break points. This is necessary for the next step, when we encode break
> point info by source position, and not code offset. Encoding by code
> offset would mean that break points are dependent on the code kind we
> use.
>
> R=jgruber@chromium.org
> BUG=v8:5265
>
> Committed: https://crrev.com/808981a22ee19461bbe981ab33b58792d991533e
> Cr-Commit-Position: refs/heads/master@{#38492}

TBR=jgruber@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:5265

Review-Url: https://codereview.chromium.org/2231653003
Cr-Commit-Position: refs/heads/master@{#38521}
2016-08-10 08:22:52 +00:00
danno
3899776f28 [turbolizer] Fix selection bugs and performance problems
Review-Url: https://codereview.chromium.org/2234523002
Cr-Commit-Position: refs/heads/master@{#38520}
2016-08-10 08:16:59 +00:00
neis
6e8a2d2722 [ast][parser] Remove redundant Declaration::mode_.
BUG=

Review-Url: https://codereview.chromium.org/2226223002
Cr-Commit-Position: refs/heads/master@{#38519}
2016-08-10 08:10:47 +00:00
jarin
acf0fd3ca1 [turbofan] Remove redundant 'virtual' from store elimination.
Review-Url: https://codereview.chromium.org/2234703002
Cr-Commit-Position: refs/heads/master@{#38518}
2016-08-10 07:26:03 +00:00
jarin
ca9ec36eb5 [turbofan] Do not rename context for loop exits in bytecode graph builder.
Renaming context confuses specialization passes. (And looking through
loop exit renames does not help because we insert Phis for SSA.)

BUG=chromium:635808

Review-Url: https://codereview.chromium.org/2221363002
Cr-Commit-Position: refs/heads/master@{#38517}
2016-08-10 06:51:22 +00:00
mtrofin
d29bb4bfab [wasm] serialization: updated external APIs.
We only need these external v8 APIs to expose serialization externally,
so bypassed having an internal layer for now.

BUG=v8:5072

Review-Url: https://codereview.chromium.org/2228073002
Cr-Commit-Position: refs/heads/master@{#38516}
2016-08-10 06:35:42 +00:00
yangguo
ead3188129 [serializer] reserve maps one by one to avoid fragmentation.
R=hpayer@chromium.org
BUG=chromium:612816,chromium:634900

Review-Url: https://codereview.chromium.org/2229583003
Cr-Commit-Position: refs/heads/master@{#38515}
2016-08-10 06:31:31 +00:00
bmeurer
7060bab81c [turbofan] Properly guard keyed stores wrt. setters in the prototype chain.
For holey/growing keyed stores, we need to check that there are no
setters in the prototype chain and protect against changes to that
via code dependencies.

R=verwaest@chromium.org
BUG=v8:5275,v8:5276

Review-Url: https://codereview.chromium.org/2231683002
Cr-Commit-Position: refs/heads/master@{#38514}
2016-08-10 06:30:22 +00:00
marija.antic
93809055aa MIPS: Implement Bovc and Bnvc instruction macros.
Implement Bovc and Bnvc instruction macros in macro assembler.

The change 6f920d7d59 revealed an issue with AddBranchOvf for mips R6.
All branching instructions other than BOVC and BNVC are handled by Branch macro, which assures
correct handling of long and short branches. As a consequence, AddBranchOvf for R6 was working correctly
only before trampoline was emitted, but the case of long branch was not handled at all. Implemented
instruction macros enable proper handling of BOVC and BNVC in cases when long branching is needed.

TEST=test/intl/general/case-mapping.js

BUG=

Review-Url: https://codereview.chromium.org/2225323002
Cr-Commit-Position: refs/heads/master@{#38513}
2016-08-10 06:06:53 +00:00
bmeurer
3909250a6c [turbofan] Add support for keyed access to strings.
This introduces initial support to handle keyed load access to
String primitives. This is accomplished via the existing operators
StringCharCodeAt and StringFromCharCode, which we already use to
optimize String.prototype.charCodeAt and String.fromCharCode.

R=yangguo@chromium.org
BUG=v8:5267

Review-Url: https://codereview.chromium.org/2232483002
Cr-Commit-Position: refs/heads/master@{#38512}
2016-08-10 04:33:32 +00:00
v8-autoroll
400f03ab97 Update V8 DEPS.
Rolling v8/build to e1fa1d72e5795ddcaff4ded5b083b1b08e52023a

Rolling v8/third_party/WebKit/Source/platform/inspector_protocol to eaa4c48e31e9f79fb6c4b665dc789dac0f0fb125

Rolling v8/third_party/icu to 53ce631655a61aaaa42b43b4d64abe23e9b8d71f

Rolling v8/tools/mb to d4f0973ff21ab990fed45c3803731c77197d65c8

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review-Url: https://codereview.chromium.org/2234653002
Cr-Commit-Position: refs/heads/master@{#38511}
2016-08-10 03:22:58 +00:00
lpy
7a3631e7e1 [Reland][Tracing] Embed V8 runtime call stats into tracing.
Currently we have V8 RuntimeCallStats that is independently from tracing when
running d8 with flag --runtime_call_stats. This patch embeds V8 runtime call
stats into tracing, by having a global table of runtime call counters each
isolate, resetting the table each time we enter a top level trace event, and
dumping the table for each top level trace event. This will make trace file more
compat, as well as enable runtime call stats in tracing system.

This patch adds ~5% overhead to V8 when the category is enabled, we measure the
overhead by running a script when category is enabled.

BUG=v8:5089

Committed: https://crrev.com/d014866173eaa2b548c566217b2c94b1d49385fa
Committed: https://crrev.com/1ca3b73bba4a7253ca8eeef39321d70e7d414331
Committed: https://crrev.com/3f936a5b17754783e92d2146eaf66c88a78ee45b
Review-Url: https://codereview.chromium.org/2187693002
Cr-Original-Original-Original-Commit-Position: refs/heads/master@{#38270}
Cr-Original-Original-Commit-Position: refs/heads/master@{#38314}
Cr-Original-Commit-Position: refs/heads/master@{#38403}
Cr-Commit-Position: refs/heads/master@{#38510}
2016-08-10 01:19:01 +00:00
bgeron
5caabdd5cc [turbofan] Improve the store-store elimination.
It can now deal with multiple objects at the same time (but no
aliasing), and it propagates store information upwards across effect
chain splits.

R=jarin
BUG=

Review-Url: https://codereview.chromium.org/2159303002
Cr-Commit-Position: refs/heads/master@{#38509}
2016-08-09 20:00:40 +00:00
verwaest
652e1e6d51 Redirect Scope::NewTemporary over parser
BUG=v8:5209

Review-Url: https://codereview.chromium.org/2220363004
Cr-Commit-Position: refs/heads/master@{#38508}
2016-08-09 19:49:49 +00:00
verwaest
0904b84e45 Indirect Get*Scope over parser/parserbase
This avoids direct scope() accesses and allows us to redirect it over ScopeState.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2226243002
Cr-Commit-Position: refs/heads/master@{#38507}
2016-08-09 19:06:10 +00:00
bmeurer
a12aa89151 [turbofan] Simplify BinaryOperationHints and CompareOperationHints.
Remove the useless information from the BinaryOperationHints and
CompareOperationHints, and cache the JS operators appropriately.

R=epertoso@chromium.org

Review-Url: https://codereview.chromium.org/2228983002
Cr-Commit-Position: refs/heads/master@{#38506}
2016-08-09 18:12:08 +00:00