v8/test/unittests/compiler
Benedikt Meurer 855b88ae5a [turbofan] Properly optimize literals in inlined functions.
When inlining based on SharedFunctionInfo rather than based on concrete
JSFunction, we weren't able to properly optimize array, object and
regexp literals inside the inlinee, because we didn't know the concrete
FeedbackVector for the inlinee inside JSCreateLowering. This was because
JSCreateLowering wasn't properly updated after the literals moved to the
FeedbackVector. Now with this CL we also have the VectorSlotPair on the
literal creation operators, just like we do for property accesses and
calls, and are thus able to always access the appropriate FeedbackVector
and optimize the literal creation.

The impact is illustrated by the micro-benchmark on the tracking bug,
which goes from

  createEmptyArrayLiteral: 1846 ms.
  createShallowArrayLiteral: 1868 ms.
  createShallowObjectLiteral: 2246 ms.

to

  createEmptyArrayLiteral: 1175 ms.
  createShallowArrayLiteral: 1187 ms.
  createShallowObjectLiteral: 1195 ms.

with this CL, so up to 2x faster now.

Drive-by-fix: Also remove the unused CreateEmptyObjectLiteral builtin
and cleanup the names of the other builtins to be consistent with the
names of the TurboFan operators and Ignition bytecodes.

Bug: v8:6856
Change-Id: I453828d019b27c9aa1344edac0dd84e91a457097
Reviewed-on: https://chromium-review.googlesource.com/680656
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48140}
2017-09-25 13:05:16 +00:00
..
arm [turbofan] Fix arm backend matching of (x >>> 24) & 0xffff. 2017-08-31 13:50:07 +00:00
arm64 [iwyu|arm64] Pre-work for removing the illegal include macro-assembler.h -> assembler-inl.h 2017-03-15 12:08:50 +00:00
ia32 [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
mips [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
mips64 [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
ppc PPC/s390: [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-14 12:23:51 +00:00
regalloc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
s390 PPC/s390: [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-14 12:23:51 +00:00
x64 [turbofan] Enable complex memory operands for binops on ia32/x64 2017-03-13 08:50:54 +00:00
branch-elimination-unittest.cc [turbofan] Support variable size argument removal in TF-generated functions 2016-11-02 13:15:57 +00:00
bytecode-analysis-unittest.cc [turbofan] Never generate loop exit phis for the accumulator 2017-08-17 05:09:31 +00:00
checkpoint-elimination-unittest.cc [turbofan] Rename {CheckPoint} to {Checkpoint} everywhere. 2016-06-01 09:07:19 +00:00
code-assembler-unittest.cc [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
code-assembler-unittest.h [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
common-operator-reducer-unittest.cc [turbofan] Do not reduce Return nodes with multiple value inputs. 2017-01-17 19:01:32 +00:00
common-operator-unittest.cc [turbofan] Remove obsolte value input to {Throw} nodes. 2017-02-27 11:23:06 +00:00
compiler-test-utils.h [turbofan] Drop V8_TURBOFAN_BACKEND and V8_TURBOFAN_TARGET defines. 2015-08-10 07:17:34 +00:00
control-equivalence-unittest.cc This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. 2016-11-14 17:22:32 +00:00
control-flow-optimizer-unittest.cc [turbofan] Move TryCloneBranch in the EffectControlLinearizer pass. 2016-07-12 15:23:36 +00:00
dead-code-elimination-unittest.cc [turbofan] Remove IfExceptionHint from exception projections. 2016-08-02 14:49:10 +00:00
diamond-unittest.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
effect-control-linearizer-unittest.cc [turbofan] Elide redundant {IfSuccess} control projections. 2017-03-15 09:26:18 +00:00
graph-reducer-unittest.cc [Turbofan] Fixing A/B/C test operators in unittests 2017-08-07 17:12:36 +00:00
graph-reducer-unittest.h [turbofan] Add AdvancedReducer::ReplaceWithValue() method and convert JSInlining to an AdvancedReducer. 2015-05-12 12:41:36 +00:00
graph-trimmer-unittest.cc [turbofan] Proper dead code elimination as regular reducer. 2015-06-19 12:07:26 +00:00
graph-unittest.cc [turbofan] Sparse representation for state values 2017-01-05 10:44:44 +00:00
graph-unittest.h [turbofan] Improve typed lowering rules for JSToBoolean. 2016-11-24 06:37:14 +00:00
instruction-selector-unittest.cc Remove compiler distinction from RegisterConfiguration. 2017-08-03 07:47:36 +00:00
instruction-selector-unittest.h [turbofan] Remove ToFloat64AsInt and make ToFloat64 return a Double 2017-07-14 15:01:02 +00:00
instruction-sequence-unittest.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
instruction-sequence-unittest.h MIPS: Reland of Fix bad RegisterConfiguration usage in InstructionSequence unit tests 2016-12-23 10:51:08 +00:00
instruction-unittest.cc [Turbofan] Add concept of FP register aliasing on ARM 32. 2016-10-26 16:04:33 +00:00
int64-lowering-unittest.cc [wasm] Move the CallDescriptor creation methods out of ModuleEnv into the compiler. 2017-06-27 15:38:52 +00:00
js-builtin-reducer-unittest.cc [TurboFan] Delete AstGraphBuilder. 2017-08-10 15:56:21 +00:00
js-create-lowering-unittest.cc [turbofan] Properly optimize literals in inlined functions. 2017-09-25 13:05:16 +00:00
js-intrinsic-lowering-unittest.cc [TurboFan] Delete AstGraphBuilder. 2017-08-10 15:56:21 +00:00
js-operator-unittest.cc [Ignition / TurboFan] Revert all StringConcat bytecode implementation. 2017-07-19 16:03:46 +00:00
js-typed-lowering-unittest.cc [cleanup] Make StringLengthProtector into a Cell. 2017-08-28 06:26:17 +00:00
linkage-tail-call-unittest.cc Fix compilation failure when v8 compiled with GCC 5.x due to -Werror=unused-variable 2016-08-05 12:56:40 +00:00
live-range-builder.h [turbofan] Make MachineType a pair of enums. 2015-12-10 09:03:53 +00:00
load-elimination-unittest.cc [turbofan] Fix introduction of contradicting {TypeGuard}. 2017-08-08 11:54:51 +00:00
loop-peeling-unittest.cc [turbofan] Support variable size argument removal in TF-generated functions 2016-11-02 13:15:57 +00:00
machine-operator-reducer-unittest.cc [base] Consolidate IsPowerOfTwo{32,64} and IS_POWER_OF_TWO 2017-07-13 10:49:09 +00:00
machine-operator-unittest.cc [turbofan] Make Float32Neg and Float64Neg mandatory operators. 2016-08-05 18:52:05 +00:00
node-cache-unittest.cc [test] Turn compiler/test-node-cache into a unit test. 2015-04-29 14:40:05 +00:00
node-matchers-unittest.cc [turbofan] Relax limitation for using BaseWithIndexAndDisplacement for load/stores 2017-02-24 06:38:14 +00:00
node-properties-unittest.cc [turbofan] Remove IfExceptionHint from exception projections. 2016-08-02 14:49:10 +00:00
node-test-utils.cc [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
node-test-utils.h [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
node-unittest.cc [turbofan] Speed up structural graph verification. 2016-07-12 09:31:12 +00:00
opcodes-unittest.cc [unittests] Reduce compilation overhead of opcodes-unittest.cc. 2016-09-13 05:16:18 +00:00
persistent-unittest.cc Reland2: [turbofan] staging new implementation of escape analysis 2017-07-31 10:01:07 +00:00
schedule-unittest.cc Model exceptional edges from call nodes in TurboFan. 2015-02-20 09:55:00 +00:00
scheduler-rpo-unittest.cc Replace SmartPointer<T> with unique_ptr<T> 2016-07-25 11:14:34 +00:00
scheduler-unittest.cc This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. 2016-11-14 17:22:32 +00:00
simplified-operator-reducer-unittest.cc [turbofan] Let ChangeFloat64ToTagged canonicalize to Smi if possible. 2017-04-13 06:57:04 +00:00
simplified-operator-unittest.cc [turbofan] Remove obsolete LoadBuffer and StoreBuffer operators. 2017-08-11 19:17:37 +00:00
state-values-utils-unittest.cc [turbofan] Sparse representation for state values 2017-01-05 10:44:44 +00:00
typed-optimization-unittest.cc [TurboFan] Delete AstGraphBuilder. 2017-08-10 15:56:21 +00:00
typer-unittest.cc [compiler] Add yet more tests for monotonicity of typing. 2017-03-21 09:48:47 +00:00
value-numbering-reducer-unittest.cc [turbofan] Make sure value numbering only narrows types. 2016-07-14 08:10:21 +00:00
zone-stats-unittest.cc Named all zones in the project 2016-10-17 12:12:42 +00:00