|
[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}
Committed: https://chromium.googlesource.com/v8/v8/+/aea3ce3df3dc8838940e5db74c9d459a3ba999e3
Total comments: 13
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+805 lines, -836 lines) |
Patch |
|
M |
src/arm/macro-assembler-arm.cc
|
View
|
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/arm64/macro-assembler-arm64.cc
|
View
|
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/builtins/arm/builtins-arm.cc
|
View
|
1
2
3
|
5 chunks |
+13 lines, -22 lines |
0 comments
|
Download
|
|
M |
src/builtins/arm64/builtins-arm64.cc
|
View
|
1
2
3
|
5 chunks |
+10 lines, -17 lines |
0 comments
|
Download
|
|
M |
src/builtins/builtins-constructor.cc
|
View
|
|
4 chunks |
+13 lines, -13 lines |
0 comments
|
Download
|
|
M |
src/builtins/ia32/builtins-ia32.cc
|
View
|
|
5 chunks |
+9 lines, -19 lines |
0 comments
|
Download
|
|
M |
src/builtins/mips/builtins-mips.cc
|
View
|
1
2
3
|
5 chunks |
+13 lines, -22 lines |
0 comments
|
Download
|
|
M |
src/builtins/mips64/builtins-mips64.cc
|
View
|
1
2
3
|
5 chunks |
+13 lines, -22 lines |
0 comments
|
Download
|
|
M |
src/builtins/ppc/builtins-ppc.cc
|
View
|
1
2
3
4
5
6
|
5 chunks |
+10 lines, -17 lines |
0 comments
|
Download
|
|
M |
src/builtins/s390/builtins-s390.cc
|
View
|
1
2
3
4
5
6
|
5 chunks |
+10 lines, -16 lines |
0 comments
|
Download
|
|
M |
src/builtins/x64/builtins-x64.cc
|
View
|
1
2
3
|
5 chunks |
+10 lines, -17 lines |
0 comments
|
Download
|
|
M |
src/builtins/x87/builtins-x87.cc
|
View
|
1
2
3
4
5
6
|
5 chunks |
+9 lines, -18 lines |
0 comments
|
Download
|
|
M |
src/code-stub-assembler.cc
|
View
|
1
2
3
4
5
6
7
|
2 chunks |
+3 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/compilation-cache.h
|
View
|
|
5 chunks |
+32 lines, -29 lines |
0 comments
|
Download
|
|
M |
src/compilation-cache.cc
|
View
|
1
2
3
4
|
6 chunks |
+71 lines, -82 lines |
0 comments
|
Download
|
|
M |
src/compiler.cc
|
View
|
1
2
3
4
|
10 chunks |
+77 lines, -41 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-create-lowering.cc
|
View
|
|
2 chunks |
+5 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-graph.h
|
View
|
|
2 chunks |
+0 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-graph.cc
|
View
|
|
1 chunk |
+0 lines, -5 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-native-context-specialization.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
src/contexts.h
|
View
|
1
2
3
4
5
6
|
1 chunk |
+2 lines, -3 lines |
0 comments
|
Download
|
|
M |
src/contexts.cc
|
View
|
|
6 chunks |
+8 lines, -27 lines |
0 comments
|
Download
|
|
M |
src/debug/liveedit.cc
|
View
|
1
2
3
4
5
6
7
|
5 chunks |
+23 lines, -44 lines |
0 comments
|
Download
|
|
M |
src/deoptimizer.cc
|
View
|
|
2 chunks |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/factory.h
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/factory.cc
|
View
|
1
2
3
|
5 chunks |
+4 lines, -7 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/arm/full-codegen-arm.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/arm64/full-codegen-arm64.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/ia32/full-codegen-ia32.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/mips/full-codegen-mips.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/mips64/full-codegen-mips64.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/ppc/full-codegen-ppc.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/s390/full-codegen-s390.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/x64/full-codegen-x64.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/full-codegen/x87/full-codegen-x87.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/handles-inl.h
|
View
|
|
1 chunk |
+0 lines, -1 line |
0 comments
|
Download
|
|
M |
src/heap/object-stats.cc
|
View
|
|
1 chunk |
+5 lines, -21 lines |
0 comments
|
Download
|
|
M |
src/ia32/macro-assembler-ia32.cc
|
View
|
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/interpreter/interpreter-assembler.cc
|
View
|
1
2
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
|
M |
src/mips/macro-assembler-mips.cc
|
View
|
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/mips64/macro-assembler-mips64.cc
|
View
|
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/objects.h
|
View
|
1
2
3
4
5
6
|
7 chunks |
+37 lines, -21 lines |
0 comments
|
Download
|
|
M |
src/objects.cc
|
View
|
1
2
3
4
|
13 chunks |
+230 lines, -80 lines |
0 comments
|
Download
|
|
M |
src/objects-inl.h
|
View
|
1
2
3
4
5
6
|
3 chunks |
+13 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/objects-printer.cc
|
View
|
1
2
3
4
5
6
7
|
2 chunks |
+9 lines, -1 line |
0 comments
|
Download
|
|
M |
src/ppc/macro-assembler-ppc.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/profiler/heap-snapshot-generator.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+4 lines, -3 lines |
0 comments
|
Download
|
|
M |
src/runtime/runtime-interpreter.cc
|
View
|
|
1 chunk |
+5 lines, -1 line |
0 comments
|
Download
|
|
M |
src/runtime/runtime-scopes.cc
|
View
|
1
2
3
4
5
6
7
|
4 chunks |
+19 lines, -5 lines |
0 comments
|
Download
|
|
M |
src/s390/macro-assembler-s390.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/type-feedback-vector.cc
|
View
|
1
2
3
4
5
6
7
|
3 chunks |
+12 lines, -16 lines |
0 comments
|
Download
|
|
M |
src/x64/macro-assembler-x64.cc
|
View
|
7
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/x87/macro-assembler-x87.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
test/cctest/heap/test-heap.cc
|
View
|
1
2
3
4
5
6
|
4 chunks |
+12 lines, -216 lines |
0 comments
|
Download
|
|
M |
test/cctest/interpreter/interpreter-tester.h
|
View
|
|
1 chunk |
+0 lines, -3 lines |
0 comments
|
Download
|
|
M |
test/cctest/test-code-stub-assembler.cc
|
View
|
|
1 chunk |
+1 line, -2 lines |
0 comments
|
Download
|
|
M |
test/cctest/test-compiler.cc
|
View
|
|
1 chunk |
+0 lines, -1 line |
0 comments
|
Download
|
|
M |
test/cctest/test-feedback-vector.cc
|
View
|
1
2
3
4
5
6
7
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
test/cctest/test-heap-profiler.cc
|
View
|
|
1 chunk |
+12 lines, -8 lines |
0 comments
|
Download
|
|
M |
test/cctest/test-serialize.cc
|
View
|
1
2
3
4
|
3 chunks |
+10 lines, -11 lines |
0 comments
|
Download
|
|
A |
test/mjsunit/strong-rooted-literals.js
|
View
|
|
1 chunk |
+55 lines, -0 lines |
0 comments
|
Download
|
|
M |
test/unittests/interpreter/interpreter-assembler-unittest.cc
|
View
|
|
1 chunk |
+7 lines, -5 lines |
0 comments
|
Download
|
|
M |
tools/gdbinit
|
View
|
1
2
3
4
5
|
1 chunk |
+10 lines, -0 lines |
0 comments
|
Download
|
Total messages: 40 (31 generated)
|