|
[turbofan] Add initial support for growing stores.
Introduce a dedicated MaybeGrowFastElements simplified operator, which
tries to grow a fast elements backing store for a given element that
should be added to an array/object. Use that to lower a growing keyed
store to a sequence of
1) check index is a valid array index,
2) check stored value,
3) maybe grow elements backing store (and deoptimize if it would
normalize), and
4) store the actual element.
The actual growing is done by two dedicated GrowFastDoubleElements
and GrowFastSmiOrObjectElements builtins, which are very similar to
the GrowArrayElementsStub that is used by Crankshaft.
Drive-by-fix: Turn CopyFixedArray into CopyFastSmiOrObjectElements
builtin, similar to the new growing builtins, so we don't need to
inline the store+write barrier for the elements into all optimized
code objects anymore.
Also fix a bug in the OperationTyper for NumberSilenceNaN, which was
triggered by this change.
BUG= v8:5272
Committed: https://crrev.com/e6822a8338c70ab476e545da95d958c23ac366f9
Cr-Commit-Position: refs/heads/master@{#38418}
Total comments: 6
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+369 lines, -43 lines) |
Patch |
|
M |
src/builtins/builtins.h
|
View
|
|
1 chunk |
+6 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/builtins/builtins-internal.cc
|
View
|
|
3 chunks |
+59 lines, -6 lines |
0 comments
|
Download
|
|
M |
src/code-factory.h
|
View
|
|
1 chunk |
+3 lines, -1 line |
0 comments
|
Download
|
|
M |
src/code-factory.cc
|
View
|
|
1 chunk |
+15 lines, -3 lines |
0 comments
|
Download
|
|
M |
src/compiler/effect-control-linearizer.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/effect-control-linearizer.cc
|
View
|
|
3 chunks |
+115 lines, -8 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-graph.h
|
View
|
|
2 chunks |
+2 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-graph.cc
|
View
|
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/js-native-context-specialization.cc
|
View
|
|
4 chunks |
+35 lines, -14 lines |
0 comments
|
Download
|
|
M |
src/compiler/load-elimination.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/load-elimination.cc
|
View
|
|
3 chunks |
+38 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/compiler/opcodes.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/operation-typer.cc
|
View
|
1
2
|
1 chunk |
+4 lines, -1 line |
0 comments
|
Download
|
|
M |
src/compiler/pipeline.cc
|
View
|
|
1 chunk |
+3 lines, -1 line |
0 comments
|
Download
|
|
M |
src/compiler/simplified-lowering.cc
|
View
|
1
2
3
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/simplified-operator.h
|
View
|
1
|
2 chunks |
+19 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/simplified-operator.cc
|
View
|
1
|
2 chunks |
+35 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/typer.cc
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/compiler/verifier.cc
|
View
|
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/interface-descriptors.h
|
View
|
|
3 chunks |
+6 lines, -5 lines |
0 comments
|
Download
|
Total messages: 16 (10 generated)
|