Project: v8 Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Issue 5456 GC too aggressive in nuking maps for temporary objects (aka Use of named arguments subject to deoptimization storms)
Starred by 7 users Project Member Reported by mvstan...@chromium.org, Oct 4 Back to list
Status: Started
Owner:
Cc:
Components:
HW: All
OS: All
Priority: 1
Type: Bug

Blocked on:
issue 5495

Blocking:
issue 2935
issue 4407



Sign in to add a comment
As described in this twitter thread:

https://twitter.com/sebmarkbage/status/783069272805220352

Summary: React uses named arguments. But the Map used in the allocation of the property bag for the arguments is cleared on GC, even though the function is very hot. We deoptimize the function in this case, lots of lazy deopts occur through the event loop because of it.

Before, we held these maps in optimized code strongly. Now, we hold them weakly. We may need a middle ground...perhaps weakly held for map checks but strongly for allocations.


 
Cc: u...@chromium.org hpayer@chromium.org
Owner: bmeu...@chromium.org
Components: Compiler
Do you know when this regression happened?
Note that the deopt storms would likely happen even if the allocation is on the hot path because the property bags are short living, so the GC almost never sees them.
Owner: u...@chromium.org
Cc: stefan.p...@gmail.com hablich@chromium.org kris.sel...@gmail.com
Components: -Compiler Runtime GC
Labels: -Priority-Medium Performance HelpWanted OS-All Priority-High
Ok, it doesn't even take a lot to trigger this problem (nowadays at least), i.e. the following test case already shows the problem:

===================================================
// Flags: --allow-natives-syntax --expose-gc

function foo() {
  var a = {};
  a.y = 1;
  return a;
}

foo();
foo();
%OptimizeFunctionOnNextCall(foo);
foo();
gc();
assertOptimized(foo);
===================================================

Also with constructor function instead of object literal:

===================================================
// Flags: --allow-natives-syntax --expose-gc

function A() {}

function foo() {
  var a = new A;
  a.y = 1;
  return a;
}

foo();
foo();
%OptimizeFunctionOnNextCall(foo);
foo();
gc();
assertOptimized(foo);
===================================================

I remember I tried to reproduce the "Ember problem" this way some time ago, and it wasn't this obvious, so something made it worse in the mean time.
And you don't even need the optimizing compiler in the equation. The optimizing compiler just makes it worse due to the deoptimization storm, but just running the following program

===================================================
function foo() {
  var a = {}
  a.y = 1;
  return a;
}

foo();
gc();
foo();
===================================================

with --trace-maps --expose-gc yields the following output:

===================================================
...
[TraceMaps: Transition from= 0x270b95b82c51 to= 0x270b95b89b01 name= y ]
[TraceMaps: Transition from= 0x270b95b82c51 to= 0x270b95b89899 name= y ]
===================================================

Which means we first learn a transition from the initial map (0x270b95b82c51) of the object literal assigned to a to 0x270b95b89b01 (containing y in addition), then the GC nukes this map, and on the next invocation we have to recreate the transition tree, i.e. creating a new map 0x270b95b89899 for the transition to the map also containing y.
Comment 7 Deleted
Summary: GC too aggressive in nuking maps for temporary objects (aka Use of named arguments subject to deoptimization storms) (was: (aka Use of named arguments subject to deoptimization storms))
Cc: -bmeu...@chromium.org
Owner: bmeu...@chromium.org
Cc: danno@chromium.org
And even worse, the lazy bailouts count against the deoptimization limit, so at some point we will give up optimizing the hot code completely - which given our current circumstances is unfortunately not a bad thing, since then we only pay for recreating the transition trees and not also pay the deoptimization cost on top :-(

===================================================
// Flags: --allow-natives-syntax --expose-gc

function foo() {
  var a = {};
  a.y = 1;
  return a;
}

for (var i = 0; i < 12; ++i) {
  foo();
  foo();
  %OptimizeFunctionOnNextCall(foo);
  foo();
  assertOptimized(foo);
  gc();
}===================================================

Cc: bmeu...@chromium.org
Owner: ishell@chromium.org
Offline discussion with relevant folks: We will try to make the links in the transition arrays strong, and implement a different way to track constants, so that we no longer point to JSFunctions from Maps.
> Offline discussion with relevant folks: We will try to make the links in the transition arrays strong, and implement a different way to track constants, so that we no longer point to JSFunctions from Maps.

Wouldn't this introduce memory leaks due to map -> prototype pointers?
It would be nice if we could cache prototype transitions in the prototype objects.
Object.create is already cached on the prototype, the other transitions are probably uncommon enough to not matter as much. But we can treat the prototype weak in the prototype transitions, whereas everything else is strong.
I was referring to the map.prototype, which is a strong reference that can cause leaks.

BTW, does a map have strong reference to the constructor or was this link removed?
Map.prototype has equal lifetime as the closure pointing to the map. There is nothing there to keep weak.
Status: Started
Blockedon: 5495
Blocking: 2935
Here's another example with literals, which doesn't even require a transitioning store, i.e. transition tree with just the root map:

==========================================================
function hot(o) { return o.x + o.y; }
function mapPlus(a, y) { return a.map(x => hot({x, y})); }

var a = [1,2,3];
print(mapPlus(a, 1));
print(mapPlus(a, 2));
%OptimizeFunctionOnNextCall(hot);
print(mapPlus(a, 3));
gc(); // BOOOM!
print(mapPlus(a, 4));
==========================================================

The problem here is that the closure dies and thus the literals array dies and thus the boilerplate dies and hence there's no strong link to the map, even though we embedded the map in the map check in the hot function. A quick glance at Ember source code and Ember tutorials, plus looking through some React stuff shows that this is a quite popular pattern. The strong links in the transition tree won't solve this issue. Maybe we also need to take into account the "hotness" of certain metadata, i.e. indicated by having optimized code objects using that.
Status: Assigned
Ulan, Toon, Hannes and I met about the code example in Comment 20, and it looks like a good solution is for the optimized code of mapPlus to hold onto the literals array for {x, y} STRONGLY.

It's already guaranteed that this literals array will not create cross-context leaks.

In that sense, this illustrates a *different* (though obviously important) problem. Benedikt, can you offer your comments? We could then file another bug for this case, and let the solution outlined in Comment 11 proceed on it's own?

Per conversation with Benedikt, this solution solves some edges, but a) only for optimized code for mapPlus and b) inline the closure creation. But we need a solution that is independent of whether mapPlus gets optimized or not.
When do you get a deopt issue if you don't optimize?

Our idea was to hold on strongly to any literal array from the same native context btw, in case you were thinking about non-nested functions.
Cc: -mvstan...@chromium.org ishell@chromium.org
Components: -GC
Owner: mvstan...@chromium.org
Status: Started
Working on a solution/design-document. The key is that we need to strongly root the literals for an inner closure. The feedback vector of the outer closure makes this possible. Neat :).

Igor (ishell) is already working on constant tracking, a component of the solution, and I'll work on the vector changes. There are additional changes such as the introduction of a FunctionLiteralID, and I'll co-ordinate with verwaest@ on that.
Checking in a solution now, it doesn't use the FunctionLiteralID. It follows the simpler approach of creating the literals array in the containing closure feedback vector and ensuring it gets passed when a closure is created. 

If there is an issue with memory usage we might try indirecting with a cell to create the array later. 
Project Member Comment 27 by bugdroid1@chromium.org, Dec 21
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/93df094081f04c629c3df2e40318de90ce5e0fb9

commit 93df094081f04c629c3df2e40318de90ce5e0fb9
Author: mvstanton <mvstanton@chromium.org>
Date: Wed Dec 21 14:06:29 2016

[TypeFeedbackVector] Root literal arrays in function literals slots

Literal arrays and feedback vectors for a function can be garbage
collected if we don't have a rooted closure for the function, which
happens often. It's expensive to come back from this (recreating
boilerplates and gathering feedback again), and the cost is
disproportionate if the function was inlined into optimized code.

To guard against losing these arrays when we need them, we'll now
create literal arrays when creating the feedback vector for the outer
closure, and root them strongly in that vector.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2504153002
Cr-Commit-Position: refs/heads/master@{#41893}

[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/ast/ast-numbering.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/ast/ast.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/code-stubs.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/code-stubs.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler/ast-graph-builder.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler/bytecode-graph-builder.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler/js-generic-lowering.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler/js-operator.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/compiler/js-operator.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/contexts.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/contexts.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/crankshaft/hydrogen.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/debug/liveedit.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/factory.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/factory.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/flag-definitions.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/full-codegen/full-codegen.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/full-codegen/full-codegen.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/heap/object-stats.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/interface-descriptors.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/interpreter/bytecodes.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/interpreter/interpreter.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/objects-inl.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/objects-printer.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/objects.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/objects.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/runtime/runtime.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/type-feedback-vector-inl.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/type-feedback-vector.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/type-feedback-vector.h
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/src/x64/interface-descriptors-x64.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/CountOperators.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/Delete.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/Modules.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/test-feedback-vector.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/cctest/test-heap-profiler.cc
[add] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/mjsunit/strong-rooted-literals.js
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/unittests/compiler/js-create-lowering-unittest.cc
[modify] https://crrev.com/93df094081f04c629c3df2e40318de90ce5e0fb9/test/unittests/interpreter/bytecode-array-builder-unittest.cc

Project Member Comment 28 by bugdroid1@chromium.org, Dec 21
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/19aa7a20b0c39ea9ef81d6e021863183732f82c0

commit 19aa7a20b0c39ea9ef81d6e021863183732f82c0
Author: bjaideep <bjaideep@ca.ibm.com>
Date: Wed Dec 21 16:37:20 2016

PPC/s390: [TypeFeedbackVector] Root literal arrays in function literals slots

Port 93df094081f04c629c3df2e40318de90ce5e0fb9

Original Commit Message:

    Literal arrays and feedback vectors for a function can be garbage
    collected if we don't have a rooted closure for the function, which
    happens often. It's expensive to come back from this (recreating
    boilerplates and gathering feedback again), and the cost is
    disproportionate if the function was inlined into optimized code.

    To guard against losing these arrays when we need them, we'll now
    create literal arrays when creating the feedback vector for the outer
    closure, and root them strongly in that vector.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5456
LOG=N

Review-Url: https://codereview.chromium.org/2592043003
Cr-Commit-Position: refs/heads/master@{#41898}

[modify] https://crrev.com/19aa7a20b0c39ea9ef81d6e021863183732f82c0/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/19aa7a20b0c39ea9ef81d6e021863183732f82c0/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/19aa7a20b0c39ea9ef81d6e021863183732f82c0/src/ppc/interface-descriptors-ppc.cc
[modify] https://crrev.com/19aa7a20b0c39ea9ef81d6e021863183732f82c0/src/s390/interface-descriptors-s390.cc

Project Member Comment 29 by bugdroid1@chromium.org, Dec 22
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/aa8a208a473af43e7aa97626d8d2a4a81667850c

commit aa8a208a473af43e7aa97626d8d2a4a81667850c
Author: hablich <hablich@chromium.org>
Date: Thu Dec 22 10:26:36 2016

Revert of [TypeFeedbackVector] Root literal arrays in function literals slots (patchset #11 id:370001 of https://codereview.chromium.org/2504153002/ )

Reason for revert:
Speculative revert because of blocked roll: https://codereview.chromium.org/2596013002/

Original issue's description:
> [TypeFeedbackVector] Root literal arrays in function literals slots
>
> Literal arrays and feedback vectors for a function can be garbage
> collected if we don't have a rooted closure for the function, which
> happens often. It's expensive to come back from this (recreating
> boilerplates and gathering feedback again), and the cost is
> disproportionate if the function was inlined into optimized code.
>
> To guard against losing these arrays when we need them, we'll now
> create literal arrays when creating the feedback vector for the outer
> closure, and root them strongly in that vector.
>
> BUG=v8:5456
>
> Review-Url: https://codereview.chromium.org/2504153002
> Cr-Commit-Position: refs/heads/master@{#41893}
> Committed: https://chromium.googlesource.com/v8/v8/+/93df094081f04c629c3df2e40318de90ce5e0fb9

TBR=bmeurer@chromium.org,mlippautz@chromium.org,mvstanton@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:5456

Review-Url: https://codereview.chromium.org/2597163002
Cr-Commit-Position: refs/heads/master@{#41917}

[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/ast/ast-numbering.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/ast/ast.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/code-stubs.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/code-stubs.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler/ast-graph-builder.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler/bytecode-graph-builder.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler/js-generic-lowering.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler/js-operator.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/compiler/js-operator.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/contexts.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/contexts.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/crankshaft/hydrogen.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/debug/liveedit.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/factory.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/factory.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/flag-definitions.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/full-codegen/full-codegen.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/full-codegen/full-codegen.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/heap/object-stats.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/interface-descriptors.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/interpreter/bytecodes.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/interpreter/interpreter.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/objects-inl.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/objects-printer.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/objects.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/objects.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/runtime/runtime.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/type-feedback-vector-inl.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/type-feedback-vector.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/type-feedback-vector.h
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/src/x64/interface-descriptors-x64.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/CountOperators.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/Delete.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/Modules.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/test-feedback-vector.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/cctest/test-heap-profiler.cc
[delete] https://crrev.com/cc77bd8234a8aa2293c7a028571ae5e8d4d13134/test/mjsunit/strong-rooted-literals.js
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/unittests/compiler/js-create-lowering-unittest.cc
[modify] https://crrev.com/aa8a208a473af43e7aa97626d8d2a4a81667850c/test/unittests/interpreter/bytecode-array-builder-unittest.cc

Project Member Comment 30 by bugdroid1@chromium.org, Dec 27
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d2146f745c803b3c71c6330d3a0972f0dcec3831

commit d2146f745c803b3c71c6330d3a0972f0dcec3831
Author: bjaideep <bjaideep@ca.ibm.com>
Date: Tue Dec 27 21:25:10 2016

Revert of "PPC/s390: [TypeFeedbackVector] Root literal arrays in function literals slots"

Reason for revert:
Original CL was reverted, https://codereview.chromium.org/2597163002

Original issue's description:
> PPC/s390: [TypeFeedbackVector] Root literal arrays in function literals slots
>
> Port 93df094081f04c629c3df2e40318de90ce5e0fb9
>
> Original Commit Message:
>
>     Literal arrays and feedback vectors for a function can be garbage
>     collected if we don't have a rooted closure for the function, which
>     happens often. It's expensive to come back from this (recreating
>     boilerplates and gathering feedback again), and the cost is
>     disproportionate if the function was inlined into optimized code.
>
>     To guard against losing these arrays when we need them, we'll now
>     create literal arrays when creating the feedback vector for the outer
>     closure, and root them strongly in that vector.
>
> R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
> BUG=v8:5456
> LOG=N
>
> Review-Url: https://codereview.chromium.org/2592043003
> Cr-Commit-Position: refs/heads/master@{#41898}
> Committed: https://chromium.googlesource.com/v8/v8/+/19aa7a20b0c39ea9ef81d6e021863183732f82c0

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5456
LOG=N

Review-Url: https://codereview.chromium.org/2601793002
Cr-Commit-Position: refs/heads/master@{#41966}

[modify] https://crrev.com/d2146f745c803b3c71c6330d3a0972f0dcec3831/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/d2146f745c803b3c71c6330d3a0972f0dcec3831/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/d2146f745c803b3c71c6330d3a0972f0dcec3831/src/ppc/interface-descriptors-ppc.cc
[modify] https://crrev.com/d2146f745c803b3c71c6330d3a0972f0dcec3831/src/s390/interface-descriptors-s390.cc

I've got a fix now, but there is an aspect of the bug I still don't understand...will update in the next days...
Blocking: 4407
Project Member Comment 33 by bugdroid1@chromium.org, Jan 9
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/38602f1ff553b32815d34a05cd6d965f4fc20960

commit 38602f1ff553b32815d34a05cd6d965f4fc20960
Author: mvstanton <mvstanton@chromium.org>
Date: Mon Jan 09 15:31:00 2017

[FeedbackVector] Infrastructure for literal arrays in the vector.

This changes the NewClosure interface descriptor, but ignores
the additional vector/slot arguments for now. The feedback vector
gets larger, as it holds a space for each literal array. A follow-on
CL will constructively use this space.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2614373002
Cr-Commit-Position: refs/heads/master@{#42146}

[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/ast/ast-numbering.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/ast/ast.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/builtins/builtins-constructor.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/compiler/ast-graph-builder.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/compiler/bytecode-graph-builder.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/compiler/js-generic-lowering.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/compiler/js-operator.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/compiler/js-operator.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/crankshaft/hydrogen.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/factory.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/factory.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/flag-definitions.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/full-codegen/full-codegen.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/full-codegen/full-codegen.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/interface-descriptors.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/interpreter/bytecodes.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/interpreter/interpreter.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/objects-printer.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/ppc/interface-descriptors-ppc.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/runtime/runtime.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/s390/interface-descriptors-s390.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/type-feedback-vector-inl.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/type-feedback-vector.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/type-feedback-vector.h
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/src/x64/interface-descriptors-x64.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/BreakableBlocks.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/ConstVariableContextSlot.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/ContextParameters.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/CountOperators.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/Delete.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/LetVariableContextSlot.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/Modules.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/test-feedback-vector.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/cctest/test-heap-profiler.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/unittests/compiler/js-create-lowering-unittest.cc
[modify] https://crrev.com/38602f1ff553b32815d34a05cd6d965f4fc20960/test/unittests/interpreter/bytecode-array-builder-unittest.cc

Project Member Comment 34 by bugdroid1@chromium.org, Jan 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6

commit 31887804107bf5c103d915f5c601cfaaf1cd7cb6
Author: mvstanton <mvstanton@chromium.org>
Date: Thu Jan 12 09:28:48 2017

[TypeFeedbackVector] Root literal arrays in function literals slots

Literal arrays and feedback vectors for a function can be garbage
collected if we don't have a rooted closure for the function, which
happens often. It's expensive to come back from this (recreating
boilerplates and gathering feedback again), and the cost is
disproportionate if the function was inlined into optimized code.

To guard against losing these arrays when we need them, we'll now
create literal arrays when creating the feedback vector for the outer
closure, and root them strongly in that vector.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2620753003
Cr-Commit-Position: refs/heads/master@{#42258}

[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/compiler.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/compiler/js-graph.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/compiler/js-graph.h
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/contexts.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/contexts.h
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/debug/liveedit.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/heap/object-stats.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/objects-inl.h
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/objects.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/objects.h
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/src/type-feedback-vector.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/test/cctest/test-feedback-vector.cc
[add] https://crrev.com/31887804107bf5c103d915f5c601cfaaf1cd7cb6/test/mjsunit/strong-rooted-literals.js

Project Member Comment 35 by bugdroid1@chromium.org, Jan 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef

commit 3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef
Author: machenbach <machenbach@chromium.org>
Date: Thu Jan 12 10:10:56 2017

Revert of [TypeFeedbackVector] Root literal arrays in function literals slots (patchset #7 id:120001 of https://codereview.chromium.org/2620753003/ )

Reason for revert:
gc stress:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/8105

also on mac

Original issue's description:
> [TypeFeedbackVector] Root literal arrays in function literals slots
>
> Literal arrays and feedback vectors for a function can be garbage
> collected if we don't have a rooted closure for the function, which
> happens often. It's expensive to come back from this (recreating
> boilerplates and gathering feedback again), and the cost is
> disproportionate if the function was inlined into optimized code.
>
> To guard against losing these arrays when we need them, we'll now
> create literal arrays when creating the feedback vector for the outer
> closure, and root them strongly in that vector.
>
> BUG=v8:5456
>
> Review-Url: https://codereview.chromium.org/2620753003
> Cr-Commit-Position: refs/heads/master@{#42258}
> Committed: https://chromium.googlesource.com/v8/v8/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6

TBR=bmeurer@chromium.org,mstarzinger@chromium.org,yangguo@chromium.org,mvstanton@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:5456

Review-Url: https://codereview.chromium.org/2626863004
Cr-Commit-Position: refs/heads/master@{#42260}

[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/compiler.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/compiler/js-graph.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/compiler/js-graph.h
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/contexts.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/contexts.h
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/debug/liveedit.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/heap/object-stats.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/objects-inl.h
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/objects.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/objects.h
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/src/type-feedback-vector.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/3d9e2ea32d2cd09e5087cc507ee750fc2c18fbef/test/cctest/test-feedback-vector.cc
[delete] https://crrev.com/cfc2e5e180f416e24fcbf532f32ded47d38a49ff/test/mjsunit/strong-rooted-literals.js

Project Member Comment 36 by bugdroid1@chromium.org, Jan 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b8294aaa978e972978b8d82cedf63befad5d7af1

commit b8294aaa978e972978b8d82cedf63befad5d7af1
Author: mvstanton <mvstanton@chromium.org>
Date: Thu Jan 12 11:29:09 2017

[TypeFeedbackVector] Root literal arrays in function literals slots

Literal arrays and feedback vectors for a function can be garbage
collected if we don't have a rooted closure for the function, which
happens often. It's expensive to come back from this (recreating
boilerplates and gathering feedback again), and the cost is
disproportionate if the function was inlined into optimized code.

To guard against losing these arrays when we need them, we'll now
create literal arrays when creating the feedback vector for the outer
closure, and root them strongly in that vector.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2620753003
Cr-Original-Commit-Position: refs/heads/master@{#42258}
Committed: https://chromium.googlesource.com/v8/v8/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6
Review-Url: https://codereview.chromium.org/2620753003
Cr-Commit-Position: refs/heads/master@{#42264}

[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/compiler.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/compiler/js-graph.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/compiler/js-graph.h
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/compiler/js-native-context-specialization.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/contexts.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/contexts.h
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/debug/liveedit.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/heap/object-stats.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/objects-inl.h
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/objects.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/objects.h
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/src/type-feedback-vector.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/test/cctest/test-feedback-vector.cc
[add] https://crrev.com/b8294aaa978e972978b8d82cedf63befad5d7af1/test/mjsunit/strong-rooted-literals.js

Project Member Comment 37 by bugdroid1@chromium.org, Jan 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/be781e51f577723881d29028815d70270c9dc658

commit be781e51f577723881d29028815d70270c9dc658
Author: bjaideep <bjaideep@ca.ibm.com>
Date: Thu Jan 12 17:57:01 2017

PPC/s390: [TypeFeedbackVector] Root literal arrays in function literals slots

Port b8294aaa978e972978b8d82cedf63befad5d7af1

Original Commit Message:

    Literal arrays and feedback vectors for a function can be garbage
    collected if we don't have a rooted closure for the function, which
    happens often. It's expensive to come back from this (recreating
    boilerplates and gathering feedback again), and the cost is
    disproportionate if the function was inlined into optimized code.

    To guard against losing these arrays when we need them, we'll now
    create literal arrays when creating the feedback vector for the outer
    closure, and root them strongly in that vector.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5456
LOG=N

Review-Url: https://codereview.chromium.org/2626263002
Cr-Commit-Position: refs/heads/master@{#42280}

[modify] https://crrev.com/be781e51f577723881d29028815d70270c9dc658/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/be781e51f577723881d29028815d70270c9dc658/src/builtins/s390/builtins-s390.cc

Project Member Comment 38 by bugdroid1@chromium.org, Jan 19
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7803aa1ffb2f835c5f317ed2a097390d53e52567

commit 7803aa1ffb2f835c5f317ed2a097390d53e52567
Author: mvstanton <mvstanton@chromium.org>
Date: Thu Jan 19 10:38:04 2017

Revert [TypeFeedbackVector] Root literal arrays in function literal slots

GC performance issues need to be addressed first.

TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org
BUG=v8:5456

Review-Url: https://codereview.chromium.org/2642743002
Cr-Commit-Position: refs/heads/master@{#42495}

[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/builtins/x87/builtins-x87.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/compiler.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/compiler/js-graph.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/compiler/js-graph.h
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/compiler/js-native-context-specialization.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/contexts.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/contexts.h
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/debug/liveedit.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/heap/object-stats.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/objects-inl.h
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/objects.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/objects.h
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/src/type-feedback-vector.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/test/cctest/cctest.status
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/7803aa1ffb2f835c5f317ed2a097390d53e52567/test/cctest/test-feedback-vector.cc
[delete] https://crrev.com/c9a980d59ace8c9e7c2a947268e6ddf4db5419f3/test/mjsunit/strong-rooted-literals.js

Project Member Comment 39 by bugdroid1@chromium.org, Jan 19
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a8f289075758bdce5296ef517a269e1596b0ab99

commit a8f289075758bdce5296ef517a269e1596b0ab99
Author: machenbach <machenbach@chromium.org>
Date: Thu Jan 19 12:01:36 2017

Revert of Revert [TypeFeedbackVector] Root literal arrays in function literal slots (patchset #2 id:20001 of https://codereview.chromium.org/2642743002/ )

Reason for revert:
Breaks nosnap:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/13802

Original issue's description:
> Revert [TypeFeedbackVector] Root literal arrays in function literal slots
>
> GC performance issues need to be addressed first.
>
> TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org
> BUG=v8:5456
>
> Review-Url: https://codereview.chromium.org/2642743002
> Cr-Commit-Position: refs/heads/master@{#42495}
> Committed: https://chromium.googlesource.com/v8/v8/+/7803aa1ffb2f835c5f317ed2a097390d53e52567

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

Review-Url: https://codereview.chromium.org/2642933003
Cr-Commit-Position: refs/heads/master@{#42496}

[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/builtins/x87/builtins-x87.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/compiler.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/compiler/js-graph.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/compiler/js-graph.h
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/compiler/js-native-context-specialization.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/contexts.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/contexts.h
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/debug/liveedit.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/heap/object-stats.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/objects-inl.h
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/objects.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/objects.h
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/src/type-feedback-vector.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/test/cctest/cctest.status
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/test/cctest/test-feedback-vector.cc
[add] https://crrev.com/a8f289075758bdce5296ef517a269e1596b0ab99/test/mjsunit/strong-rooted-literals.js

Project Member Comment 40 by bugdroid1@chromium.org, Jan 19
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c

commit 55feaaea4c83bf72a409bb1ebde5b86c979d4d1c
Author: mvstanton <mvstanton@chromium.org>
Date: Thu Jan 19 17:12:28 2017

Revert [TypeFeedbackVector] Root literal arrays in function literal slots

GC performance issues need to be addressed first.

TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org
BUG=v8:5456

Review-Url: https://codereview.chromium.org/2642743002
Cr-Original-Commit-Position: refs/heads/master@{#42495}
Committed: https://chromium.googlesource.com/v8/v8/+/7803aa1ffb2f835c5f317ed2a097390d53e52567
Review-Url: https://codereview.chromium.org/2642743002
Cr-Commit-Position: refs/heads/master@{#42517}

[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/builtins/x87/builtins-x87.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/compiler.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/compiler/js-graph.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/compiler/js-graph.h
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/compiler/js-native-context-specialization.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/contexts.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/contexts.h
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/debug/liveedit.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/heap/object-stats.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/objects-inl.h
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/objects.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/objects.h
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/src/type-feedback-vector.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/test/cctest/test-api.cc
[modify] https://crrev.com/55feaaea4c83bf72a409bb1ebde5b86c979d4d1c/test/cctest/test-feedback-vector.cc
[delete] https://crrev.com/f604724448cce9994da73cf358e45be3200c07c1/test/mjsunit/strong-rooted-literals.js

Project Member Comment 41 by bugdroid1@chromium.org, Jan 24
Labels: merge-merged-5.7
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/74c25d3e354087fcd9f95ad359d802fe56914821

commit 74c25d3e354087fcd9f95ad359d802fe56914821
Author: Mike Stanton <ripsawridge@gmail.com>
Date: Tue Jan 24 13:52:19 2017

Merged: Revert [TypeFeedbackVector] Root literal arrays in function literal slots

Revision: 55feaaea4

BUG=v8:5456
LOG=N
NOTRY=true
NOPRESUBMIT=true
NOTREECHECKS=true
R=jochen@chromium.org

Review-Url: https://codereview.chromium.org/2657573002 .
Cr-Commit-Position: refs/branch-heads/5.7@{#18}
Cr-Branched-From: 975e9a320b6eaf9f12280c35df98e013beb8f041-refs/heads/5.7.492@{#1}
Cr-Branched-From: 8d76f0e3465a84bbf0bceab114900fbe75844e1f-refs/heads/master@{#42426}

[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/builtins/x87/builtins-x87.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/compiler.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/compiler/js-graph.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/compiler/js-graph.h
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/compiler/js-native-context-specialization.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/contexts.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/contexts.h
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/debug/liveedit.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/heap/object-stats.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/objects-inl.h
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/objects.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/objects.h
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/src/type-feedback-vector.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/test/cctest/test-api.cc
[modify] https://crrev.com/74c25d3e354087fcd9f95ad359d802fe56914821/test/cctest/test-feedback-vector.cc
[delete] https://crrev.com/8083da415a45df731b2bcaa872108262d10a185f/test/mjsunit/strong-rooted-literals.js

Project Member Comment 42 by bugdroid1@chromium.org, Jan 26
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d24ce605c99f5b45e596e88931127d6ce6d0d27a

commit d24ce605c99f5b45e596e88931127d6ce6d0d27a
Author: mvstanton <mvstanton@chromium.org>
Date: Thu Jan 26 10:03:00 2017

Interpreter tester should accept metadata instead of a vector

The InterpreterTester class cobbles together a JSFunction from
a manually created bytecode and feedback vector. However it's
fragile against design changes in the way literal arrays and
feedback vectors are handled. It's better to let it hand in
a feedback vector metadata object, and allow the system to
create the vector from that.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2652893010
Cr-Commit-Position: refs/heads/master@{#42684}

[modify] https://crrev.com/d24ce605c99f5b45e596e88931127d6ce6d0d27a/test/cctest/interpreter/interpreter-tester.cc
[modify] https://crrev.com/d24ce605c99f5b45e596e88931127d6ce6d0d27a/test/cctest/interpreter/interpreter-tester.h
[modify] https://crrev.com/d24ce605c99f5b45e596e88931127d6ce6d0d27a/test/cctest/interpreter/test-interpreter.cc
[modify] https://crrev.com/d24ce605c99f5b45e596e88931127d6ce6d0d27a/test/cctest/test-feedback-vector.h

Project Member Comment 44 by bugdroid1@chromium.org, Jan 30
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/93f05b64ae1c1f8e010467331de1bf02d800dede

commit 93f05b64ae1c1f8e010467331de1bf02d800dede
Author: mvstanton <mvstanton@chromium.org>
Date: Mon Jan 30 12:31:35 2017

[TypeFeedbackVector] Combine the literals array and the feedback vector.

They have the same lifetime. It's a match!

Both structures are native context dependent and dealt with (creation,
clearing, gathering feedback) at the same time. By treating the spaces used
for literal boilerplates as feedback vector slots, we no longer have to keep
track of the materialized literal count elsewhere.

A follow-on CL removes even more parser infrastructure related to this count.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2655853010
Cr-Commit-Position: refs/heads/master@{#42771}

[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/BUILD.gn
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/arm64/macro-assembler-arm64.cc
[delete] https://crrev.com/a15e9bfd3063792817b31feaddc8fe5a4d6921c2/src/ast/ast-literal-reindexer.cc
[delete] https://crrev.com/a15e9bfd3063792817b31feaddc8fe5a4d6921c2/src/ast/ast-literal-reindexer.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/ast/ast-numbering.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/ast/ast.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/ast/ast.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/ast/prettyprinter.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/code-stub-assembler.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/code-stub-assembler.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/access-builder.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/access-builder.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/ast-graph-builder.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/js-create-lowering.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/js-graph.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/js-graph.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/compiler/pipeline.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/contexts.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/contexts.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/crankshaft/hydrogen-instructions.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/crankshaft/hydrogen.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/debug/liveedit.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/deoptimizer.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/factory.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/factory.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/arm/full-codegen-arm.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/arm64/full-codegen-arm64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/full-codegen.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/full-codegen.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/ia32/full-codegen-ia32.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/mips/full-codegen-mips.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/mips64/full-codegen-mips64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/full-codegen/x64/full-codegen-x64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/heap/heap.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/heap/heap.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/heap/object-stats.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/interpreter/interpreter-assembler.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/objects-inl.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/objects-printer.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/objects.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/objects.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/parsing/parser-base.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/parsing/parser.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/parsing/parser.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/parsing/pattern-rewriter.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/parsing/preparser.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/runtime/runtime-literals.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/snapshot/partial-serializer.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/type-feedback-vector-inl.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/type-feedback-vector.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/type-feedback-vector.h
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/v8.gyp
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/cctest.status
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/ArrayLiteralsWide.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/CallAndSpread.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/CallRuntime.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/CountOperators.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/Delete.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/ForIn.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/ForOf.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/GenerateTestUndetectable.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/Generators.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/NewAndSpread.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/ObjectLiteralsWide.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/RegExpLiterals.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/RegExpLiteralsWide.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/SuperCallAndSpread.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/interpreter/bytecode_expectations/WithStatement.golden
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/test-code-stub-assembler.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/cctest/test-feedback-vector.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/unittests/compiler/js-create-lowering-unittest.cc
[modify] https://crrev.com/93f05b64ae1c1f8e010467331de1bf02d800dede/test/unittests/interpreter/interpreter-assembler-unittest.cc

Project Member Comment 45 by bugdroid1@chromium.org, Jan 30
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/626b95e37e58d10e9f504a645163c173b938fd21

commit 626b95e37e58d10e9f504a645163c173b938fd21
Author: bjaideep <bjaideep@ca.ibm.com>
Date: Mon Jan 30 15:25:54 2017

PPC/s390: [TypeFeedbackVector] Combine the literals array and the feedback vector.

Port 93f05b64ae1c1f8e010467331de1bf02d800dede

Original Commit Message:

    They have the same lifetime. It's a match!

    Both structures are native context dependent and dealt with (creation,
    clearing, gathering feedback) at the same time. By treating the spaces used
    for literal boilerplates as feedback vector slots, we no longer have to keep
    track of the materialized literal count elsewhere.

    A follow-on CL removes even more parser infrastructure related to this count.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5456
LOG=N

Review-Url: https://codereview.chromium.org/2659413002
Cr-Commit-Position: refs/heads/master@{#42778}

[modify] https://crrev.com/626b95e37e58d10e9f504a645163c173b938fd21/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/626b95e37e58d10e9f504a645163c173b938fd21/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/626b95e37e58d10e9f504a645163c173b938fd21/src/full-codegen/ppc/full-codegen-ppc.cc
[modify] https://crrev.com/626b95e37e58d10e9f504a645163c173b938fd21/src/full-codegen/s390/full-codegen-s390.cc
[modify] https://crrev.com/626b95e37e58d10e9f504a645163c173b938fd21/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/626b95e37e58d10e9f504a645163c173b938fd21/src/s390/macro-assembler-s390.cc

Project Member Comment 46 by bugdroid1@chromium.org, Feb 6
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/aea3ce3df3dc8838940e5db74c9d459a3ba999e3

commit aea3ce3df3dc8838940e5db74c9d459a3ba999e3
Author: mvstanton <mvstanton@chromium.org>
Date: Mon Feb 06 10:18:05 2017

[TypeFeedbackVector] Root feedback vectors at function literal site.

TypeFeedbackVectors are strongly rooted by a closure. However, in modern
JavaScript closures are created and abandoned more freely. An important
closure may not be present in the root-set at time of garbage collection,
even though we've cached optimized code and use it regularly. For
example, consider leaf functions in an event dispatching system. They may
well be "hot," but tragically non-present when we collect the heap.

Until now, we've relied on a weak root to cache the feedback vector in
this case. Since there is no way to signal intent or relative importance,
this weak root is as susceptible to clearing as any other weak root at
garbage collection time.

Meanwhile, the feedback vector has become more important. All of our
ICs store their data there. Literal and regex boilerplates are stored there.
If we lose the vector, then we not only lose optimized code built from
it, we also lose the very feedback which allowed us to create that optimized
code. Therefore it's vital to express that dependency through the root
set.

This CL does this by creating a strong link to a feedback
vector at the instantiation site of the function closure.
This instantiation site is in the code and feedback vector
of the outer closure.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2674593003
Cr-Commit-Position: refs/heads/master@{#42953}

[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/builtins-constructor.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/builtins/x87/builtins-x87.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/code-stub-assembler.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compilation-cache.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compilation-cache.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compiler.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compiler/js-graph.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compiler/js-graph.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/compiler/js-native-context-specialization.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/contexts.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/contexts.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/debug/liveedit.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/deoptimizer.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/factory.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/factory.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/arm/full-codegen-arm.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/arm64/full-codegen-arm64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/ia32/full-codegen-ia32.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/mips/full-codegen-mips.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/mips64/full-codegen-mips64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/ppc/full-codegen-ppc.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/s390/full-codegen-s390.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/x64/full-codegen-x64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/full-codegen/x87/full-codegen-x87.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/handles-inl.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/heap/object-stats.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/interpreter/interpreter-assembler.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/objects-inl.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/objects-printer.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/objects.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/objects.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/runtime/runtime-interpreter.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/runtime/runtime-scopes.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/type-feedback-vector.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/src/x87/macro-assembler-x87.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/interpreter/interpreter-tester.h
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/test-code-stub-assembler.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/test-compiler.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/test-feedback-vector.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/test-heap-profiler.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/cctest/test-serialize.cc
[add] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/mjsunit/strong-rooted-literals.js
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/test/unittests/interpreter/interpreter-assembler-unittest.cc
[modify] https://crrev.com/aea3ce3df3dc8838940e5db74c9d459a3ba999e3/tools/gdbinit

Labels: Priority-1
Sign in to add a comment