v8/src/compiler
Dan Elphick 500d73b93e [compiler] Optimize AddInputsToFrameStateDescriptor
Optimizes InstructionSelector::AddInputsToFrameStateDescriptor by
taking advantage of SparseInputMask data structure to more quickly
handle empty inputs and insert all the OptimizedOut entries in one go.
The number of empty inputs is now determined using CountTrailingZeros
rather than iterating over them one at a time.

Gives a 9% improvement to SelectInstructions runtime call stat for
Octane in turboprop.

Bug: v8:10051
Change-Id: Ib13d6f9644b4c89ba0546a19fe0ed623d69fec99
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037443
Commit-Queue: Dan Elphick <delphick@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66591}
2020-03-05 11:45:15 +00:00
..
backend [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
access-builder.cc [torque] shape: define in-object properties properly 2019-11-21 19:29:24 +00:00
access-builder.h Reland x3 "[runtime] Remove extension slots from context objects" 2019-10-22 14:26:02 +00:00
access-info.cc [torque] Generate instance types 2019-10-11 22:37:22 +00:00
access-info.h Update DescriptorArray and Map to use InternalIndex 2019-10-11 14:40:43 +00:00
add-type-assertions-reducer.cc [turbofan] Add optional runtime checks for range types 2019-07-12 08:32:59 +00:00
add-type-assertions-reducer.h [turbofan] Add optional runtime checks for range types 2019-07-12 08:32:59 +00:00
all-nodes.cc
all-nodes.h
allocation-builder-inl.h [cleanup] Split out bit-field.h and bounds.h from utils/utils.h 2019-11-15 13:00:08 +00:00
allocation-builder.h [turbofan] Remove JSGraph::Constant for Handles 2019-08-28 15:36:59 +00:00
basic-block-instrumentor.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
basic-block-instrumentor.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
branch-elimination.cc [turbofan] fix nondeterminism in mksnapshot 2020-02-26 08:54:37 +00:00
branch-elimination.h [compiler]Use Phi in Branch if control flow is known 2019-08-28 19:12:03 +00:00
bytecode-analysis.cc [turbofan] Pass a read-only value by const-reference rather than pointer 2019-07-29 10:41:42 +00:00
bytecode-analysis.h [turbofan] Move bytecode analysis to the serializer 2019-07-15 12:41:57 +00:00
bytecode-graph-builder.cc [interpreter] Make FunctionEntry StackCheck bytecodes implicit 2020-02-10 17:05:23 +00:00
bytecode-graph-builder.h [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
bytecode-liveness-map.cc
bytecode-liveness-map.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
c-linkage.cc [arm64] Do not push FP and LR to the stack twice 2020-02-19 10:37:14 +00:00
checkpoint-elimination.cc [turbofan] Don't expect framestate input to be a Framestate 2019-11-21 12:41:33 +00:00
checkpoint-elimination.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
code-assembler.cc [cleanup] TNodify RoundIntPtrToFloat64 2020-02-25 10:42:13 +00:00
code-assembler.h Make ToInteger always truncate -0 2020-03-02 20:40:01 +00:00
common-node-cache.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
common-node-cache.h [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
common-operator-reducer.cc [turbofan] fix bug in CommonOperatorReducer::ReduceReturn 2019-06-25 11:00:01 +00:00
common-operator-reducer.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
common-operator.cc [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
common-operator.h [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
compilation-dependencies.cc Update DescriptorArray and Map to use InternalIndex 2019-10-11 14:40:43 +00:00
compilation-dependencies.h Update DescriptorArray and Map to use InternalIndex 2019-10-11 14:40:43 +00:00
compilation-dependency.h [turbofan] Disentangle header include chains 2019-07-05 14:26:05 +00:00
compiler-source-position-table.cc
compiler-source-position-table.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
constant-folding-reducer.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
constant-folding-reducer.h
control-equivalence.cc Remove and update some outdated TODO(mstarzinger). 2019-12-13 10:18:04 +00:00
control-equivalence.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
control-flow-optimizer.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
control-flow-optimizer.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
csa-load-elimination.cc [ptr-compr] Remove the DecompressionElimination Reducer 2019-11-07 11:42:45 +00:00
csa-load-elimination.h [csa] Track stores and perform simple alias analysis in CSA Load Elimination 2019-06-18 08:46:55 +00:00
dead-code-elimination.cc Reland "[turbofan] re-wire Unreachable to the graph end at EffectPhi's" 2019-05-14 13:17:11 +00:00
dead-code-elimination.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
decompression-optimizer.cc [ptr-compr] Added BitcastTaggedToWord* to DecompressionOptimizer 2020-01-08 21:48:29 +00:00
decompression-optimizer.h [ptr-compr] Remove the last of ChangeTaggedToCompressed 2020-01-08 14:20:35 +00:00
DEPS [compiler] Add include guard for code-assembler.h 2019-03-18 12:40:02 +00:00
diamond.h [wasm] Use GraphAssembler in wrappers 2020-01-15 12:01:53 +00:00
effect-control-linearizer.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
effect-control-linearizer.h [TurboProp] Remove the second schedule for TurboProp. 2019-10-24 10:08:35 +00:00
escape-analysis-reducer.cc [turbofan] Reintroduce LoadStackArgument simplified operator 2019-09-24 16:42:38 +00:00
escape-analysis-reducer.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
escape-analysis.cc [turbofan] Fully brokerize JSInlining and EscapeAnalysis 2019-08-30 08:26:37 +00:00
escape-analysis.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
feedback-source.cc Reland "[turbofan] Further brokerize BytecodeGraphBuilder" 2019-08-26 08:58:44 +00:00
feedback-source.h Reland "[turbofan] Further brokerize BytecodeGraphBuilder" 2019-08-26 08:58:44 +00:00
frame-states.cc Reland "Update GetIterator bytecode to load and call object[Symbol.iterator]" 2019-09-06 13:44:12 +00:00
frame-states.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
frame.cc
frame.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
functional-list.h Revert "[turbofan] Make hints equality cheaper using hashing" 2020-01-21 10:26:12 +00:00
globals.h Preserve feedback and speculation mode for JSCall 2019-11-04 13:22:50 +00:00
graph-assembler.cc [wasm] Inline two simple macros 2020-02-06 12:54:04 +00:00
graph-assembler.h [wasm] Inline two simple macros 2020-02-06 12:54:04 +00:00
graph-reducer.cc [TurboFan] Loop variable analysis requires more sensitivity 2019-12-02 15:20:52 +00:00
graph-reducer.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
graph-trimmer.cc
graph-trimmer.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
graph-visualizer.cc Add Simd128 register case to graph visualizer 2019-12-04 12:30:23 +00:00
graph-visualizer.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
graph.cc [turbofan] Protect against overflow of node id and input index field 2019-09-19 16:02:36 +00:00
graph.h [gasm] Strengthen typing 2019-11-28 14:22:26 +00:00
heap-refs.h [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
int64-lowering.cc [wasm][i64-lowering] Refactor special CallDescriptor lowering 2020-02-25 10:23:46 +00:00
int64-lowering.h [wasm][i64-lowering] Refactor special CallDescriptor lowering 2020-02-25 10:23:46 +00:00
js-call-reducer.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
js-call-reducer.h Revert "Revert [gasm] Implement ReduceArrayPrototypeReduce using the graph assembler" 2020-02-11 14:05:03 +00:00
js-context-specialization.cc [turbofan] Fix confusing broker warning 2019-11-18 13:39:52 +00:00
js-context-specialization.h Move handles-related files to src/handles 2019-05-23 06:00:15 +00:00
js-create-lowering.cc [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
js-create-lowering.h [TurboFan] Prefer ProcessedFeedback over raw serialized Vector reads 2019-09-27 12:12:01 +00:00
js-generic-lowering.cc [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
js-generic-lowering.h [turbofan] Brokerize JSGenericLowering 2019-08-21 16:06:49 +00:00
js-graph.cc [turbofan] Remove JSGraph::Constant for Handles 2019-08-28 15:36:59 +00:00
js-graph.h [turbofan] Remove JSGraph::Constant for Handles 2019-08-28 15:36:59 +00:00
js-heap-broker.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
js-heap-broker.h [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-heap-copy-reducer.cc [TurboFan] Prefer ProcessedFeedback over raw serialized Vector reads 2019-09-27 12:12:01 +00:00
js-heap-copy-reducer.h
js-inlining-heuristic.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
js-inlining-heuristic.h [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-inlining.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
js-inlining.h [turbofan] Eliminate more non-const reference arguments 2019-07-26 09:33:08 +00:00
js-intrinsic-lowering.cc [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-intrinsic-lowering.h [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-native-context-specialization.cc [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
js-native-context-specialization.h [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
js-operator.cc Preserve feedback and speculation mode for JSCall 2019-11-04 13:22:50 +00:00
js-operator.h [cleanup] Split out bit-field.h and bounds.h from utils/utils.h 2019-11-15 13:00:08 +00:00
js-type-hint-lowering.cc [turbofan] Optimize BigInt subtraction 2019-11-19 13:51:32 +00:00
js-type-hint-lowering.h Reland "Update GetIterator bytecode to load and call object[Symbol.iterator]" 2019-09-06 13:44:12 +00:00
js-typed-lowering.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
js-typed-lowering.h Reland x3 "[runtime] Remove extension slots from context objects" 2019-10-22 14:26:02 +00:00
linkage.cc Reland "[wasm] Refactor AtomicWait implementation" 2020-03-02 14:49:55 +00:00
linkage.h Reland "[turbofan] Fast API calls from TurboFan" 2020-02-21 15:51:40 +00:00
load-elimination.cc [turbofan] fix too aggressive DCHECK in load elimination 2019-12-12 16:03:03 +00:00
load-elimination.h [turbofan] Relax double const store invariant in load elim. for literals 2019-08-23 17:10:48 +00:00
loop-analysis.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
loop-analysis.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
loop-peeling.cc
loop-peeling.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
loop-variable-optimizer.cc
loop-variable-optimizer.h
machine-graph-verifier.cc [ptr-compr] Added BitcastTaggedToWord* to DecompressionOptimizer 2020-01-08 21:48:29 +00:00
machine-graph-verifier.h
machine-graph.cc [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
machine-graph.h [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
machine-operator-reducer.cc Complete Torque definition of JSArrayBuffer 2020-02-28 17:27:12 +00:00
machine-operator-reducer.h Complete Torque definition of JSArrayBuffer 2020-02-28 17:27:12 +00:00
machine-operator.cc [wasm-simd][x64] Implement integer absolute on x64 and interpreter 2020-02-26 03:57:11 +00:00
machine-operator.h [wasm-simd][x64] Implement integer absolute on x64 and interpreter 2020-02-26 03:57:11 +00:00
map-inference.cc [compiler] Fix RegExpPrototypeTest reduction 2019-11-19 14:21:12 +00:00
map-inference.h [compiler] Fix RegExpPrototypeTest reduction 2019-11-19 14:21:12 +00:00
memory-lowering.cc [turbofan] make GraphAssembler isolate independent 2019-12-23 13:47:29 +00:00
memory-lowering.h [turbofan] make GraphAssembler isolate independent 2019-12-23 13:47:29 +00:00
memory-optimizer.cc [ptr-compr] Remove the last of ChangeTaggedToCompressed 2020-01-08 14:20:35 +00:00
memory-optimizer.h [turbofan] make GraphAssembler isolate independent 2019-12-23 13:47:29 +00:00
node-aux-data.h [compiler][cleanup] Using 'using' instead of 'typedef' 2019-03-29 13:03:30 +00:00
node-cache.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
node-cache.h [compiler][cleanup] Using 'using' instead of 'typedef' 2019-03-29 13:03:30 +00:00
node-marker.cc
node-marker.h
node-matchers.cc
node-matchers.h [ptr-compr][turbofan][x64] Improve comparisons with compressed heap objects 2019-10-07 14:02:22 +00:00
node-origin-table.cc
node-origin-table.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
node-properties.cc [turbofan] Fix bug in receiver maps inference 2020-02-19 10:15:34 +00:00
node-properties.h [turbofan] Allow inlining the most common node operations 2019-12-10 10:20:39 +00:00
node.cc [node] OwnedBy fix for only one owner check 2020-01-20 16:36:02 +00:00
node.h [node] OwnedBy fix for only one owner check 2020-01-20 16:36:02 +00:00
opcodes.cc
opcodes.h [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
operation-typer.cc Update LookupIterator and ICs for size_t indices 2019-11-20 16:47:39 +00:00
operation-typer.h [turbofan] Non-speculative BigInt operators 2019-07-15 08:27:47 +00:00
operator-properties.cc Reland x3 "[runtime] Remove extension slots from context objects" 2019-10-22 14:26:02 +00:00
operator-properties.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
operator.cc
operator.h [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
osr.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
osr.h
OWNERS Remove mstarzinger@ from OWNERS files. 2019-12-13 11:13:14 +00:00
per-isolate-compiler-cache.h [turbofan] Clean up heap broker initialization 2019-08-30 10:19:20 +00:00
persistent-map.h Revert "Reland "[regalloc] Use an adaptive data structure for live sets"" 2019-11-18 07:26:01 +00:00
pipeline-statistics.cc [cleanup] Avoid {Object::operator->} 2019-05-23 07:52:07 +00:00
pipeline-statistics.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
pipeline.cc [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
pipeline.h [turbofan] Make broker own the is_concurrent_inlining flag 2020-01-22 15:21:55 +00:00
processed-feedback.h [TurboFan] Prefer ProcessedFeedback over raw serialized Vector reads 2019-09-27 12:12:01 +00:00
property-access-builder.cc [ptr-compr] Remove the DecompressionElimination Reducer 2019-11-07 11:42:45 +00:00
property-access-builder.h Move handles-related files to src/handles 2019-05-23 06:00:15 +00:00
raw-machine-assembler.cc [turbofan][ppc] Fix CallDescriptor::NoFunctionDescriptor. 2019-10-25 11:42:30 +00:00
raw-machine-assembler.h [ptr-compr] Remove the last of ChangeTaggedToCompressed 2020-01-08 14:20:35 +00:00
redundancy-elimination.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
redundancy-elimination.h
refs-map.cc
refs-map.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
representation-change.cc Reland "[turbofan] Fast API calls from TurboFan" 2020-02-21 15:51:40 +00:00
representation-change.h Reland "[turbofan] Fast API calls from TurboFan" 2020-02-21 15:51:40 +00:00
schedule.cc [TurboProp] Have BasicBlockUpdater update successor's predecessors on AddThrow. 2019-10-28 10:38:52 +00:00
schedule.h [TurboProp] Have BasicBlockUpdater update successor's predecessors on AddThrow. 2019-10-28 10:38:52 +00:00
scheduled-machine-lowering.cc [gasm] Rename current_{effect_,control_} to {effect_,control_} 2019-11-20 10:32:00 +00:00
scheduled-machine-lowering.h [turbofan] make GraphAssembler isolate independent 2019-12-23 13:47:29 +00:00
scheduler.cc Remove and update some outdated TODO(mstarzinger). 2019-12-13 10:18:04 +00:00
scheduler.h [TurboProp] Verify schedule after each scheduled lowering pass. 2019-10-28 16:53:19 +00:00
select-lowering.cc [turbofan] make GraphAssembler isolate independent 2019-12-23 13:47:29 +00:00
select-lowering.h [turbofan] make GraphAssembler isolate independent 2019-12-23 13:47:29 +00:00
serializer-for-background-compilation.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
serializer-for-background-compilation.h [TurboFan] Don't run child serializer if inlining is turned off 2019-11-25 16:34:08 +00:00
serializer-hints.h Revert "[turbofan] Make hints equality cheaper using hashing" 2020-01-21 10:26:12 +00:00
simd-scalar-lowering.cc [wasm-simd] Scalar lowering for load extends 2020-02-21 03:22:38 +00:00
simd-scalar-lowering.h [wasm-simd] Scalar lowering for load splat (s8x16, s16x8, s32x4) 2020-02-07 19:59:09 +00:00
simplified-lowering.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
simplified-lowering.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
simplified-operator-reducer.cc [ptr-compr] Remove Compressed mentions from in the pipeline 2019-11-11 12:23:41 +00:00
simplified-operator-reducer.h [turbofan] Remove a dead declaration 2019-11-25 14:27:28 +00:00
simplified-operator.cc [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
simplified-operator.h [Turbofan] Allow CallIC to be polymorphic for same SharedFunctionInfos 2020-02-29 09:09:42 +00:00
state-values-utils.cc [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
state-values-utils.h [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
store-store-elimination.cc [compiler] Use PersistentMap in store-store elimination 2019-09-17 07:22:10 +00:00
store-store-elimination.h [compiler] Remove implementation details from store-store header 2019-09-05 07:59:20 +00:00
type-cache.cc v8: Fix -Wextra-semi warnings, enable warning. 2019-02-13 14:11:28 +00:00
type-cache.h [wasm] Bring memory limits up to spec 2020-02-24 11:00:16 +00:00
type-narrowing-reducer.cc [cleanup] Remove unnecessary include 2019-02-26 15:54:51 +00:00
type-narrowing-reducer.h
typed-optimization.cc [turbofan] Disable TypedOptimization for loop-related Phi nodes 2019-07-03 15:29:01 +00:00
typed-optimization.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
typer.cc [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
typer.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
types.cc [weakrefs] Rename FinalizationGroup to FinalizationRegistry in C++ 2020-02-24 23:02:12 +00:00
types.h [turbofan] Disentangle header include chains 2019-07-05 14:26:05 +00:00
value-numbering-reducer.cc
value-numbering-reducer.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
verifier.cc [ptr-compr][csa] Use TaggedIndex nodes in IC builtins 2020-03-04 15:45:32 +00:00
verifier.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
wasm-compiler.cc Reland "[wasm] Refactor AtomicWait implementation" 2020-03-02 14:49:55 +00:00
wasm-compiler.h Reland "[wasm] Refactor AtomicWait implementation" 2020-03-02 14:49:55 +00:00
write-barrier-kind.h Reland: [csa] verify skipped write-barriers in MemoryOptimizer 2019-05-15 11:46:30 +00:00
zone-stats.cc
zone-stats.h [Turbofan] Wiser zone allocation for child serializers 2019-09-18 14:53:54 +00:00