Lines Matching refs:data

14 #include "src/builtins/profile-data-reader.h"
677 explicit PipelineImpl(PipelineData* data) : data_(data) {}
779 PipelineData* data, const char* phase_name,
782 : phase_scope_(data->pipeline_statistics(), phase_name),
783 zone_scope_(data->zone_stats(), phase_name),
784 origin_scope_(data->node_origins(), phase_name),
785 runtime_call_timer_scope(data->runtime_call_stats(),
790 PipelineRunScope(PipelineData* data, const char* phase_name)
791 : phase_scope_(data->pipeline_statistics(), phase_name),
792 zone_scope_(data->zone_stats(), phase_name),
793 origin_scope_(data->node_origins(), phase_name) {
950 void TraceScheduleAndVerify(OptimizedCompilationInfo* info, PipelineData* data,
952 RCS_SCOPE(data->runtime_call_stats(),
957 UnparkedScopeIfNeeded scope(data->broker());
961 << ",\"data\":\"";
971 UnparkedScopeIfNeeded scope(data->broker());
973 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
982 void AddReducer(PipelineData* data, GraphReducer* graph_reducer,
984 if (data->info()->source_positions()) {
986 data->graph_zone()->New<SourcePositionWrapper>(
987 reducer, data->source_positions());
990 if (data->info()->trace_turbo_json()) {
992 data->graph_zone()->New<NodeOriginsWrapper>(reducer,
993 data->node_origins());
1132 PipelineJobScope(PipelineData* data, RuntimeCallStats* stats) : data_(data) {
1309 void Run(PipelineData* data, Zone* temp_zone) {
1311 if (data->info()->analyze_environment_liveness()) {
1314 if (data->info()->bailout_on_uninitialized()) {
1318 JSFunctionRef closure = MakeRef(data->broker(), data->info()->closure());
1321 data->broker(), temp_zone, closure.shared(),
1322 closure.raw_feedback_cell(data->dependencies()),
1323 data->info()->osr_offset(), data->jsgraph(), frequency,
1324 data->source_positions(), SourcePosition::kNotInlined,
1325 data->info()->code_kind(), flags, &data->info()->tick_counter(),
1326 ObserveNodeInfo{data->observe_node_manager(),
1327 data->info()->node_observer()});
1334 void Run(PipelineData* data, Zone* temp_zone) {
1335 OptimizedCompilationInfo* info = data->info();
1336 GraphReducer graph_reducer(temp_zone, data->graph(), &info->tick_counter(),
1337 data->broker(), data->jsgraph()->Dead(),
1338 data->observe_node_manager());
1339 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1340 data->common(), temp_zone);
1343 &graph_reducer, data->graph(), data->broker(), data->common(),
1344 data->machine(), temp_zone, BranchSemantics::kJS);
1346 if (data->info()->bailout_on_uninitialized()) {
1349 if (data->info()->inline_js_wasm_calls() && data->info()->inlining()) {
1352 JSCallReducer call_reducer(&graph_reducer, data->jsgraph(), data->broker(),
1355 &graph_reducer, data->jsgraph(), data->broker(),
1356 data->specialization_context(),
1357 data->info()->function_context_specializing()
1358 ? data->info()->closure()
1362 if (data->info()->bailout_on_uninitialized()) {
1369 &graph_reducer, data->jsgraph(), data->broker(), flags,
1370 data->dependencies(), temp_zone, info->zone());
1372 &graph_reducer, temp_zone, data->info(), data->jsgraph(),
1373 data->broker(), data->source_positions(), JSInliningHeuristic::kJSOnly);
1375 JSIntrinsicLowering intrinsic_lowering(&graph_reducer, data->jsgraph(),
1376 data->broker());
1377 AddReducer(data, &graph_reducer, &dead_code_elimination);
1378 AddReducer(data, &graph_reducer, &checkpoint_elimination);
1379 AddReducer(data, &graph_reducer, &common_reducer);
1380 AddReducer(data, &graph_reducer, &native_context_specialization);
1381 AddReducer(data, &graph_reducer, &context_specialization);
1382 AddReducer(data, &graph_reducer, &intrinsic_lowering);
1383 AddReducer(data, &graph_reducer, &call_reducer);
1384 if (data->info()->inlining()) {
1385 AddReducer(data, &graph_reducer, &inlining);
1392 data->set_has_js_wasm_calls(true);
1400 void Run(PipelineData* data, Zone* temp_zone) {
1401 DCHECK(data->has_js_wasm_calls());
1403 OptimizedCompilationInfo* info = data->info();
1404 GraphReducer graph_reducer(temp_zone, data->graph(), &info->tick_counter(),
1405 data->broker(), data->jsgraph()->Dead());
1406 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1407 data->common(), temp_zone);
1409 &graph_reducer, data->graph(), data->broker(), data->common(),
1410 data->machine(), temp_zone, BranchSemantics::kMachine);
1411 JSInliningHeuristic inlining(&graph_reducer, temp_zone, data->info(),
1412 data->jsgraph(), data->broker(),
1413 data->source_positions(),
1415 AddReducer(data, &graph_reducer, &dead_code_elimination);
1416 AddReducer(data, &graph_reducer, &common_reducer);
1417 AddReducer(data, &graph_reducer, &inlining);
1426 void Run(PipelineData* data, Zone* temp_zone) {
1427 GraphTrimmer trimmer(temp_zone, data->graph());
1429 data->jsgraph()->GetCachedNodes(&roots);
1430 UnparkedScopeIfNeeded scope(data->broker(), FLAG_trace_turbo_trimming);
1438 void Run(PipelineData* data, Zone* temp_zone, Typer* typer) {
1440 data->jsgraph()->GetCachedNodes(&roots);
1443 roots.push_back(data->jsgraph()->TrueConstant());
1444 roots.push_back(data->jsgraph()->FalseConstant());
1446 LoopVariableOptimizer induction_vars(data->jsgraph()->graph(),
1447 data->common(), temp_zone);
1451 UnparkedScopeIfNeeded scope(data->broker());
1459 void Run(PipelineData* data, Zone* temp_zone) {
1473 data->jsgraph()->GetCachedNodes(&roots);
1479 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1480 data->jsgraph()->Dead(), data->observe_node_manager());
1482 AddReducer(data, &graph_reducer, &remove_type_reducer);
1490 void Run(PipelineData* data, Zone* temp_zone) {
1491 data->broker()->InitializeAndStartSerializing();
1498 void Run(PipelineData* data, Zone* temp_zone) {
1500 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1501 data->jsgraph()->Dead(), data->observe_node_manager());
1502 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1503 data->common(), temp_zone);
1504 JSCreateLowering create_lowering(&graph_reducer, data->dependencies(),
1505 data->jsgraph(), data->broker(),
1507 JSTypedLowering typed_lowering(&graph_reducer, data->jsgraph(),
1508 data->broker(), temp_zone);
1510 &graph_reducer, data->jsgraph(), data->broker());
1511 TypedOptimization typed_optimization(&graph_reducer, data->dependencies(),
1512 data->jsgraph(), data->broker());
1514 &graph_reducer, data->jsgraph(), data->broker(), BranchSemantics::kJS);
1517 &graph_reducer, data->graph(), data->broker(), data->common(),
1518 data->machine(), temp_zone, BranchSemantics::kJS);
1519 AddReducer(data, &graph_reducer, &dead_code_elimination);
1521 AddReducer(data, &graph_reducer, &create_lowering);
1522 AddReducer(data, &graph_reducer, &constant_folding_reducer);
1523 AddReducer(data, &graph_reducer, &typed_lowering);
1524 AddReducer(data, &graph_reducer, &typed_optimization);
1525 AddReducer(data, &graph_reducer, &simple_reducer);
1526 AddReducer(data, &graph_reducer, &checkpoint_elimination);
1527 AddReducer(data, &graph_reducer, &common_reducer);
1531 UnparkedScopeIfNeeded scope(data->broker());
1541 void Run(PipelineData* data, Zone* temp_zone) {
1542 EscapeAnalysis escape_analysis(data->jsgraph(),
1543 &data->info()->tick_counter(), temp_zone);
1546 GraphReducer reducer(temp_zone, data->graph(),
1547 &data->info()->tick_counter(), data->broker(),
1548 data->jsgraph()->Dead(), data->observe_node_manager());
1550 &reducer, data->jsgraph(), data->broker(),
1553 AddReducer(data, &reducer, &escape_reducer);
1556 UnparkedScopeIfNeeded scope(data->broker());
1568 void Run(PipelineData* data, Zone* temp_zone) {
1570 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1571 data->jsgraph()->Dead(), data->observe_node_manager());
1572 AddTypeAssertionsReducer type_assertions(&graph_reducer, data->jsgraph(),
1574 AddReducer(data, &graph_reducer, &type_assertions);
1582 void Run(PipelineData* data, Zone* temp_zone, Linkage* linkage) {
1583 SimplifiedLowering lowering(data->jsgraph(), data->broker(), temp_zone,
1584 data->source_positions(), data->node_origins(),
1585 &data->info()->tick_counter(), linkage,
1586 data->info(), data->observe_node_manager());
1589 UnparkedScopeIfNeeded scope(data->broker());
1598 void Run(PipelineData* data, Zone* temp_zone) {
1599 GraphTrimmer trimmer(temp_zone, data->graph());
1601 data->jsgraph()->GetCachedNodes(&roots);
1603 UnparkedScopeIfNeeded scope(data->broker(), FLAG_trace_turbo_trimming);
1608 data->jsgraph()->graph(), &data->info()->tick_counter(), temp_zone);
1611 UnparkedScopeIfNeeded scope(data->broker());
1612 LoopPeeler(data->graph(), data->common(), loop_tree, temp_zone,
1613 data->source_positions(), data->node_origins())
1622 void Run(PipelineData* data, Zone* temp_zone, wasm::CompilationEnv* env,
1625 if (!WasmInliner::graph_size_allows_inlining(data->graph()->NodeCount())) {
1629 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1630 data->jsgraph()->Dead(), data->observe_node_manager());
1631 DeadCodeElimination dead(&graph_reducer, data->graph(), data->common(),
1633 std::unique_ptr<char[]> debug_name = data->info()->GetDebugName();
1635 data->source_positions(), data->node_origins(),
1636 data->mcgraph(), wire_bytes, loop_info,
1638 AddReducer(data, &graph_reducer, &dead);
1639 AddReducer(data, &graph_reducer, &inliner);
1665 void Run(PipelineData* data, Zone* temp_zone,
1677 data->graph(), data->common(), temp_zone,
1678 data->source_positions(), data->node_origins());
1689 void Run(PipelineData* data, Zone* temp_zone,
1698 PeelWasmLoop(loop_info.header, loop, data->graph(), data->common(),
1699 temp_zone, data->source_positions(), data->node_origins());
1711 void Run(PipelineData* data, Zone* temp_zone) {
1712 LoopPeeler::EliminateLoopExits(data->graph(), temp_zone);
1719 void Run(PipelineData* data, Zone* temp_zone) {
1721 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1722 data->jsgraph()->Dead(), data->observe_node_manager());
1723 JSGenericLowering generic_lowering(data->jsgraph(), &graph_reducer,
1724 data->broker());
1725 AddReducer(data, &graph_reducer, &generic_lowering);
1728 UnparkedScopeIfNeeded scope(data->broker());
1737 void Run(PipelineData* data, Zone* temp_zone) {
1739 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1740 data->jsgraph()->Dead(), data->observe_node_manager());
1741 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1742 data->common(), temp_zone);
1743 SimplifiedOperatorReducer simple_reducer(&graph_reducer, data->jsgraph(),
1744 data->broker(),
1747 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1748 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph());
1750 &graph_reducer, data->graph(), data->broker(), data->common(),
1751 data->machine(), temp_zone, BranchSemantics::kMachine);
1752 AddReducer(data, &graph_reducer, &dead_code_elimination);
1753 AddReducer(data, &graph_reducer, &simple_reducer);
1754 AddReducer(data, &graph_reducer, &redundancy_elimination);
1755 AddReducer(data, &graph_reducer, &machine_reducer);
1756 AddReducer(data, &graph_reducer, &common_reducer);
1757 AddReducer(data, &graph_reducer, &value_numbering);
1765 void Run(PipelineData* data, Zone* temp_zone) {
1766 ControlFlowOptimizer optimizer(data->graph(), data->common(),
1767 data->machine(),
1768 &data->info()->tick_counter(), temp_zone);
1776 void Run(PipelineData* data, Zone* temp_zone) {
1780 GraphTrimmer trimmer(temp_zone, data->graph());
1782 data->jsgraph()->GetCachedNodes(&roots);
1784 UnparkedScopeIfNeeded scope(data->broker(), FLAG_trace_turbo_trimming);
1793 temp_zone, data->graph(), Scheduler::kTempSchedule,
1794 &data->info()->tick_counter(), data->profile_data());
1795 TraceScheduleAndVerify(data->info(), data, schedule,
1803 LinearizeEffectControl(data->jsgraph(), schedule, temp_zone,
1804 data->source_positions(), data->node_origins(),
1805 data->broker());
1813 GraphReducer graph_reducer(temp_zone, data->graph(),
1814 &data->info()->tick_counter(), data->broker(),
1815 data->jsgraph()->Dead(),
1816 data->observe_node_manager());
1817 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1818 data->common(), temp_zone);
1820 &graph_reducer, data->graph(), data->broker(), data->common(),
1821 data->machine(), temp_zone, BranchSemantics::kMachine);
1822 AddReducer(data, &graph_reducer, &dead_code_elimination);
1823 AddReducer(data, &graph_reducer, &common_reducer);
1832 void Run(PipelineData* data, Zone* temp_zone) {
1833 GraphTrimmer trimmer(temp_zone, data->graph());
1835 data->jsgraph()->GetCachedNodes(&roots);
1837 UnparkedScopeIfNeeded scope(data->broker(), FLAG_trace_turbo_trimming);
1841 StoreStoreElimination::Run(data->jsgraph(), &data->info()->tick_counter(),
1849 void Run(PipelineData* data, Zone* temp_zone) {
1851 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1852 data->jsgraph()->Dead(), data->observe_node_manager());
1854 &graph_reducer, data->jsgraph(), temp_zone, data->source_positions(),
1856 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1857 data->common(), temp_zone);
1859 LoadElimination load_elimination(&graph_reducer, data->jsgraph(),
1862 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1864 &graph_reducer, data->graph(), data->broker(), data->common(),
1865 data->machine(), temp_zone, BranchSemantics::kJS);
1866 TypedOptimization typed_optimization(&graph_reducer, data->dependencies(),
1867 data->jsgraph(), data->broker());
1869 &graph_reducer, data->jsgraph(), data->broker());
1870 TypeNarrowingReducer type_narrowing_reducer(&graph_reducer, data->jsgraph(),
1871 data->broker());
1873 AddReducer(data, &graph_reducer, &branch_condition_elimination);
1874 AddReducer(data, &graph_reducer, &dead_code_elimination);
1875 AddReducer(data, &graph_reducer, &redundancy_elimination);
1876 AddReducer(data, &graph_reducer, &load_elimination);
1877 AddReducer(data, &graph_reducer, &type_narrowing_reducer);
1878 AddReducer(data, &graph_reducer, &constant_folding_reducer);
1879 AddReducer(data, &graph_reducer, &typed_optimization);
1880 AddReducer(data, &graph_reducer, &checkpoint_elimination);
1881 AddReducer(data, &graph_reducer, &common_reducer);
1882 AddReducer(data, &graph_reducer, &value_numbering);
1885 UnparkedScopeIfNeeded scope(data->broker());
1894 void Run(PipelineData* data, Zone* temp_zone) {
1896 GraphTrimmer trimmer(temp_zone, data->graph());
1898 data->jsgraph()->GetCachedNodes(&roots);
1900 UnparkedScopeIfNeeded scope(data->broker(), FLAG_trace_turbo_trimming);
1906 data->jsgraph(), temp_zone,
1907 data->info()->allocation_folding()
1910 data->debug_name(), &data->info()->tick_counter());
1918 void Run(PipelineData* data, Zone* temp_zone) {
1920 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1921 data->jsgraph()->Dead(), data->observe_node_manager());
1923 &graph_reducer, data->jsgraph(), temp_zone, data->source_positions());
1924 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
1925 data->common(), temp_zone);
1926 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1927 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph());
1929 &graph_reducer, data->graph(), data->broker(), data->common(),
1930 data->machine(), temp_zone, BranchSemantics::kMachine);
1931 JSGraphAssembler graph_assembler(data->jsgraph(), temp_zone);
1932 SelectLowering select_lowering(&graph_assembler, data->graph());
1933 AddReducer(data, &graph_reducer, &branch_condition_elimination);
1934 AddReducer(data, &graph_reducer, &dead_code_elimination);
1935 AddReducer(data, &graph_reducer, &machine_reducer);
1936 AddReducer(data, &graph_reducer, &common_reducer);
1937 AddReducer(data, &graph_reducer, &select_lowering);
1938 AddReducer(data, &graph_reducer, &value_numbering);
1946 void Run(PipelineData* data, Zone* temp_zone) {
1948 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1949 data->jsgraph()->Dead(), data->observe_node_manager());
1950 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1951 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph());
1953 AddReducer(data, &graph_reducer, &machine_reducer);
1954 AddReducer(data, &graph_reducer, &value_numbering);
1962 void Run(PipelineData* data, Zone* temp_zone) {
1964 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
1965 data->mcgraph()->Dead(), data->observe_node_manager());
1966 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
1967 AddReducer(data, &graph_reducer, &value_numbering);
1975 void Run(PipelineData* data, Zone* temp_zone) {
1978 temp_zone, data->graph(), data->common(), data->machine());
1987 void Run(PipelineData* data, Zone* temp_zone) {
1989 data->graph());
1998 void Run(PipelineData* data, Zone* temp_zone, bool allow_signalling_nan) {
2004 GraphReducer graph_reducer(temp_zone, data->graph(),
2005 &data->info()->tick_counter(), data->broker(),
2006 data->jsgraph()->Dead(),
2007 data->observe_node_manager());
2008 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph(),
2010 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
2011 data->common(), temp_zone);
2013 &graph_reducer, data->graph(), data->broker(), data->common(),
2014 data->machine(), temp_zone, BranchSemantics::kMachine);
2015 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
2016 CsaLoadElimination load_elimination(&graph_reducer, data->jsgraph(),
2018 WasmEscapeAnalysis escape(&graph_reducer, data->mcgraph());
2019 AddReducer(data, &graph_reducer, &machine_reducer);
2020 AddReducer(data, &graph_reducer, &dead_code_elimination);
2021 AddReducer(data, &graph_reducer, &common_reducer);
2022 AddReducer(data, &graph_reducer, &value_numbering);
2024 AddReducer(data, &graph_reducer, &load_elimination);
2025 AddReducer(data, &graph_reducer, &escape);
2030 GraphReducer graph_reducer(temp_zone, data->graph(),
2031 &data->info()->tick_counter(), data->broker(),
2032 data->jsgraph()->Dead(),
2033 data->observe_node_manager());
2034 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph(),
2036 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
2037 data->common(), temp_zone);
2039 &graph_reducer, data->graph(), data->broker(), data->common(),
2040 data->machine(), temp_zone, BranchSemantics::kMachine);
2041 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
2043 &graph_reducer, data->jsgraph(), temp_zone, data->source_positions());
2044 AddReducer(data, &graph_reducer, &machine_reducer);
2045 AddReducer(data, &graph_reducer, &dead_code_elimination);
2046 AddReducer(data, &graph_reducer, &common_reducer);
2047 AddReducer(data, &graph_reducer, &value_numbering);
2048 AddReducer(data, &graph_reducer, &branch_condition_elimination);
2058 void Run(PipelineData* data, Zone* temp_zone) {
2063 GraphReducer graph_reducer(temp_zone, data->graph(),
2064 &data->info()->tick_counter(), data->broker(),
2065 data->jsgraph()->Dead(),
2066 data->observe_node_manager());
2067 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph(),
2069 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
2070 data->common(), temp_zone);
2072 &graph_reducer, data->graph(), data->broker(), data->common(),
2073 data->machine(), temp_zone, BranchSemantics::kMachine);
2074 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
2075 CsaLoadElimination load_elimination(&graph_reducer, data->jsgraph(),
2077 AddReducer(data, &graph_reducer, &machine_reducer);
2078 AddReducer(data, &graph_reducer, &dead_code_elimination);
2079 AddReducer(data, &graph_reducer, &common_reducer);
2080 AddReducer(data, &graph_reducer, &value_numbering);
2081 AddReducer(data, &graph_reducer, &load_elimination);
2085 GraphReducer graph_reducer(temp_zone, data->graph(),
2086 &data->info()->tick_counter(), data->broker(),
2087 data->jsgraph()->Dead(),
2088 data->observe_node_manager());
2089 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph(),
2091 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
2092 data->common(), temp_zone);
2094 &graph_reducer, data->graph(), data->broker(), data->common(),
2095 data->machine(), temp_zone, BranchSemantics::kMachine);
2096 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
2098 &graph_reducer, data->jsgraph(), temp_zone, data->source_positions());
2099 AddReducer(data, &graph_reducer, &machine_reducer);
2100 AddReducer(data, &graph_reducer, &dead_code_elimination);
2101 AddReducer(data, &graph_reducer, &common_reducer);
2102 AddReducer(data, &graph_reducer, &value_numbering);
2103 AddReducer(data, &graph_reducer, &branch_condition_elimination);
2112 void Run(PipelineData* data, Zone* temp_zone, bool allow_signalling_nan) {
2114 temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
2115 data->jsgraph()->Dead(), data->observe_node_manager());
2117 &graph_reducer, data->jsgraph(), temp_zone, data->source_positions());
2118 DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
2119 data->common(), temp_zone);
2120 MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph(),
2123 &graph_reducer, data->graph(), data->broker(), data->common(),
2124 data->machine(), temp_zone, BranchSemantics::kMachine);
2125 ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
2126 AddReducer(data, &graph_reducer, &branch_condition_elimination);
2127 AddReducer(data, &graph_reducer, &dead_code_elimination);
2128 AddReducer(data, &graph_reducer, &machine_reducer);
2129 AddReducer(data, &graph_reducer, &common_reducer);
2130 AddReducer(data, &graph_reducer, &value_numbering);
2138 void Run(PipelineData* data, Zone* temp_zone) {
2140 temp_zone, data->graph(),
2141 data->info()->splitting() ? Scheduler::kSplitNodes
2143 &data->info()->tick_counter(), data->profile_data());
2144 data->set_schedule(schedule);
2183 void Run(PipelineData* data, Zone* temp_zone, Linkage* linkage) {
2185 temp_zone, data->graph()->NodeCount(), linkage, data->sequence(),
2186 data->schedule(), data->source_positions(), data->frame(),
2187 data->info()->switch_jump_table()
2190 &data->info()->tick_counter(), data->broker(),
2191 data->address_of_max_unoptimized_frame_height(),
2192 data->address_of_max_pushed_argument_count(),
2193 data->info()->source_positions()
2200 data->assembler_options().enable_root_relative_access
2203 data->info()->trace_turbo_json()
2207 data->set_compilation_failed();
2209 if (data->info()->trace_turbo_json()) {
2210 TurboJsonFile json_of(data->info(), std::ios_base::app);
2213 << InstructionRangesAsJSON{data->sequence(),
2223 void Run(PipelineData* data, Zone* temp_zone) {
2224 ConstraintBuilder builder(data->top_tier_register_allocation_data());
2233 void Run(PipelineData* data, Zone* temp_zone) {
2234 ConstraintBuilder builder(data->top_tier_register_allocation_data());
2243 void Run(PipelineData* data, Zone* temp_zone) {
2244 LiveRangeBuilder builder(data->top_tier_register_allocation_data(),
2253 void Run(PipelineData* data, Zone* temp_zone) {
2254 BundleBuilder builder(data->top_tier_register_allocation_data());
2263 void Run(PipelineData* data, Zone* temp_zone) {
2264 RegAllocator allocator(data->top_tier_register_allocation_data(),
2274 void Run(PipelineData* data, Zone* temp_zone) {
2275 RegAllocator allocator(data->top_tier_register_allocation_data(),
2285 void Run(PipelineData* data, Zone* temp_zone) {
2286 RegAllocator allocator(data->top_tier_register_allocation_data(),
2295 void Run(PipelineData* data, Zone* temp_zone) {
2296 OperandAssigner assigner(data->top_tier_register_allocation_data());
2304 void Run(PipelineData* data, Zone* temp_zone) {
2305 OperandAssigner assigner(data->top_tier_register_allocation_data());
2314 void Run(PipelineData* data, Zone* temp_zone) {
2315 OperandAssigner assigner(data->top_tier_register_allocation_data());
2324 void Run(PipelineData* data, Zone* temp_zone) {
2325 ReferenceMapPopulator populator(data->top_tier_register_allocation_data());
2334 void Run(PipelineData* data, Zone* temp_zone) {
2335 LiveRangeConnector connector(data->top_tier_register_allocation_data());
2344 void Run(PipelineData* data, Zone* temp_zone) {
2345 LiveRangeConnector connector(data->top_tier_register_allocation_data());
2353 void Run(PipelineData* data, Zone* temp_zone) {
2354 DefineOutputs(data->mid_tier_register_allocator_data());
2361 void Run(PipelineData* data, Zone* temp_zone) {
2362 AllocateRegisters(data->mid_tier_register_allocator_data());
2369 void Run(PipelineData* data, Zone* temp_zone) {
2370 AllocateSpillSlots(data->mid_tier_register_allocator_data());
2377 void Run(PipelineData* data, Zone* temp_zone) {
2378 PopulateReferenceMaps(data->mid_tier_register_allocator_data());
2385 void Run(PipelineData* data, Zone* temp_zone) {
2386 MoveOptimizer move_optimizer(temp_zone, data->sequence());
2394 void Run(PipelineData* data, Zone* temp_zone) {
2395 FrameElider(data->sequence()).Run();
2402 void Run(PipelineData* data, Zone* temp_zone, bool frame_at_start) {
2404 if (JumpThreading::ComputeForwarding(temp_zone, &result, data->sequence(),
2406 JumpThreading::ApplyForwarding(temp_zone, result, data->sequence());
2414 void Run(PipelineData* data, Zone* temp_zone) {
2415 data->code_generator()->AssembleCode();
2422 void Run(PipelineData* data, Zone* temp_zone) {
2423 data->set_code(data->code_generator()->FinalizeCode());
2431 void Run(PipelineData* data, Zone* temp_zone, const char* phase) {
2432 OptimizedCompilationInfo* info = data->info();
2433 Graph* graph = data->graph();
2436 UnparkedScopeIfNeeded scope(data->broker());
2440 json_of << "{\"name\":\"" << phase << "\",\"type\":\"graph\",\"data\":"
2441 << AsJSON(*graph, data->source_positions(), data->node_origins())
2447 Schedule* schedule = data->schedule();
2450 temp_zone, data->graph(), Scheduler::kNoFlags,
2451 &info->tick_counter(), data->profile_data());
2454 UnparkedScopeIfNeeded scope(data->broker());
2456 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
2461 UnparkedScopeIfNeeded scope(data->broker());
2463 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
2475 void Run(PipelineData* data, Zone* temp_zone, const bool untyped,
2478 switch (data->info()->code_kind()) {
2489 Verifier::Run(data->graph(), !untyped ? Verifier::TYPED : Verifier::UNTYPED,
2630 PipelineData* data = data_;
2632 data->BeginPhaseKind("V8.TFBrokerInitAndSerialization");
2635 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
2646 data->source_positions()->AddDecorator();
2647 if (data->info()->trace_turbo_json()) {
2648 data->node_origins()->AddDecorator();
2651 data->broker()->SetTargetNativeContextRef(data->native_context());
2653 data->broker()->StopSerializing();
2654 data->EndPhaseKind();
2658 PipelineData* data = this->data_;
2659 UnparkedScopeIfNeeded unparked_scope(data->broker());
2661 data->BeginPhaseKind("V8.TFGraphCreation");
2673 MakeRef(data->broker(), info()->shared_info());
2677 data->AddTyperFlag(Typer::kThisIsReceiver);
2681 data->AddTyperFlag(Typer::kNewTargetIsReceiver);
2685 data->EndPhaseKind();
2691 PipelineData* data = this->data_;
2693 data->BeginPhaseKind("V8.TFLowering");
2701 Run<TyperPhase>(data->CreateTyper());
2707 if (data->info()->loop_peeling()) {
2719 data->DeleteTyper();
2723 if (data->compilation_failed()) {
2726 data->EndPhaseKind();
2744 if (data->has_js_wasm_calls()) {
2745 DCHECK(data->info()->inline_js_wasm_calls());
2767 data->BeginPhaseKind("V8.TFBlockBuilding");
2769 data->InitializeFrameData(linkage->GetIncomingDescriptor());
2808 data->source_positions()->RemoveDecorator();
2809 if (data->info()->trace_turbo_json()) {
2810 data->node_origins()->RemoveDecorator();
2823 // to reject profiling data if the builtin's current code doesn't match the
2902 PipelineData data(&zone_stats, &info, isolate, isolate->allocator(), graph,
2906 PipelineJobScope scope(&data, isolate->counters()->runtime_call_stats());
2908 data.set_verify_graph(FLAG_verify_csa);
2916 PipelineImpl pipeline(&data);
2919 CodeTracer::StreamScope tracing_scope(data.GetCodeTracer());
2956 graph_hash_before_scheduling = HashGraphForPGO(data.graph());
2961 PrintF("Rejected profile data for %s due to function change\n", debug_name);
2963 data.set_profile_data(profile_data);
2967 DCHECK_NOT_NULL(data.schedule());
2973 data.graph(), data.jsgraph(), data.schedule(),
2974 data.source_positions(), data.node_origins(),
2975 data.jump_optimization_info(), options,
3025 PipelineData data(&zone_stats, wasm_engine, &info, mcgraph, nullptr,
3034 PipelineImpl pipeline(&data);
3037 CodeTracer::StreamScope tracing_scope(data.GetCodeTracer());
3089 << "\"data\":\"";
3105 CodeTracer::StreamScope tracing_scope(data.GetCodeTracer());
3131 PipelineData data(&zone_stats, wasm_engine, info, mcgraph,
3135 PipelineImpl pipeline(&data);
3137 if (data.info()->trace_turbo_json() || data.info()->trace_turbo_graph()) {
3138 CodeTracer::StreamScope tracing_scope(data.GetCodeTracer());
3141 << "Begin compiling method " << data.info()->GetDebugName().get()
3147 data.BeginPhaseKind("V8.WasmOptimization");
3175 data.info()->set_splitting();
3178 if (data.node_origins()) {
3179 data.node_origins()->RemoveDecorator();
3182 data.BeginPhaseKind("V8.InstructionSelection");
3203 if (data.info()->trace_turbo_json()) {
3204 TurboJsonFile json_of(data.info(), std::ios_base::app);
3207 << "\"data\":\"";
3222 if (data.info()->trace_turbo_json() || data.info()->trace_turbo_graph()) {
3223 CodeTracer::StreamScope tracing_scope(data.GetCodeTracer());
3226 << "Finished compiling method " << data.info()->GetDebugName().get()
3241 << codesize << " name " << data.info()->GetDebugName().get()
3259 PipelineData data(&zone_stats, isolate, info, pipeline_statistics.get());
3260 PipelineImpl pipeline(&data);
3262 Linkage linkage(Linkage::ComputeIncoming(data.instruction_zone(), info));
3272 LocalIsolateScope local_isolate_scope(data.broker(), info,
3286 data.broker()->SetPersistentAndCopyCanonicalHandlesForTesting(
3293 if (!will_retire_broker) *out_broker = data.ReleaseBroker();
3307 PipelineData data(&zone_stats, info, isolate, isolate->allocator(), graph,
3317 PipelineImpl pipeline(&data);
3328 if (data.schedule() == nullptr) {
3356 PipelineData data(&zone_stats, &info, sequence->isolate(), sequence);
3357 data.InitializeFrameData(nullptr);
3365 PipelineImpl pipeline(&data);
3372 return !data.compilation_failed();
3376 PipelineData* data = this->data_;
3379 DCHECK_NULL(data->schedule());
3382 TraceScheduleAndVerify(data->info(), data, data->schedule(), "schedule");
3387 PipelineData* data = this->data_;
3390 DCHECK_NOT_NULL(data->graph());
3391 DCHECK_NOT_NULL(data->schedule());
3394 UnparkedScopeIfNeeded unparked_scope(data->broker());
3395 data->info()->set_profiler_data(BasicBlockInstrumentor::Instrument(
3396 info(), data->graph(), data->schedule(), data->isolate()));
3400 data->verify_graph() ||
3403 !strcmp(FLAG_turbo_verify_machine_graph, data->debug_name())));
3408 auto jump_opt = data->jump_optimization_info();
3414 UnparkedScopeIfNeeded scope(data->broker());
3416 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
3419 << "--- Verifying " << data->debug_name()
3422 << *data->schedule()
3424 << "--- End of " << data->debug_name() << " generated by TurboFan\n"
3429 bool is_stub = !data->info()->IsOptimizing();
3431 if (data->info()->IsWasm()) is_stub = false;
3433 Zone temp_zone(data->allocator(), kMachineGraphVerifierZoneName);
3434 MachineGraphVerifier::Run(data->graph(), data->schedule(), linkage, is_stub,
3435 data->debug_name(), &temp_zone);
3438 data->InitializeInstructionSequence(call_descriptor);
3442 if (!data->frame()) {
3443 data->InitializeFrameData(call_descriptor);
3447 if (data->compilation_failed()) {
3449 data->EndPhaseKind();
3453 if (info()->trace_turbo_json() && !data->MayHaveUnverifiableGraph()) {
3454 UnparkedScopeIfNeeded scope(data->broker());
3457 tcf << AsC1V("CodeGen", data->schedule(), data->source_positions(),
3458 data->sequence());
3474 data->DeleteGraphZone();
3476 data->BeginPhaseKind("V8.TFRegisterAllocation");
3493 data->info()->code_kind() == CodeKind::WASM_FUNCTION &&
3496 data->sequence()->VirtualRegisterCount() >
3517 if (data->compilation_failed()) {
3520 data->EndPhaseKind();
3532 data->EndPhaseKind();
3538 PipelineData* data = this->data_;
3539 JumpOptimizationInfo* jump_opt = data->jump_optimization_info();
3542 InstructionSequence* code = data->sequence();
3602 PipelineData* data = this->data_;
3603 data->BeginPhaseKind("V8.TFCodeGeneration");
3604 data->InitializeCodeGenerator(linkage);
3606 UnparkedScopeIfNeeded unparked_scope(data->broker());
3609 if (data->info()->trace_turbo_json()) {
3610 TurboJsonFile json_of(data->info(), std::ios_base::app);
3613 << InstructionStartsAsJSON{&data->code_generator()->instr_starts()}
3615 &data->code_generator()->offsets_info()};
3618 data->DeleteInstructionZone();
3619 data->EndPhaseKind();
3623 PipelineData* data = this->data_;
3624 data->BeginPhaseKind("V8.TFFinalizeCode");
3625 if (data->broker() && retire_broker) {
3626 data->broker()->Retire();
3630 MaybeHandle<Code> maybe_code = data->code();
3643 << BlockStartsAsJSON{&data->code_generator()->block_starts()}
3644 << "\"data\":\"";
3655 json_of << data->source_position_output() << ",\n";
3656 JsonPrintAllSourceWithPositions(json_of, data->info(), isolate());
3660 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
3666 data->EndPhaseKind();
3696 void TraceSequence(OptimizedCompilationInfo* info, PipelineData* data,
3699 UnparkedScopeIfNeeded scope(data->broker());
3703 << ",\"blocks\":" << InstructionSequenceAsJSON{data->sequence()}
3705 << RegisterAllocationDataAsJSON{*(data->register_allocation_data()),
3706 *(data->sequence())}
3710 UnparkedScopeIfNeeded scope(data->broker());
3712 CodeTracer::StreamScope tracing_scope(data->GetCodeTracer());
3715 << *data->sequence();
3724 PipelineData* data = this->data_;
3730 new Zone(data->allocator(), kRegisterAllocatorVerifierZoneName));
3732 verifier_zone.get(), config, data->sequence(), data->frame());
3742 if (data->info()->trace_turbo_allocation()) {
3745 data->InitializeTopTierRegisterAllocationData(config, call_descriptor, flags);
3752 TraceSequence(info(), data, "before register allocation");
3754 CHECK(!data->top_tier_register_allocation_data()
3756 CHECK(data->top_tier_register_allocation_data()
3760 if (info()->trace_turbo_json() && !data->MayHaveUnverifiableGraph()) {
3763 "PreAllocation", data->top_tier_register_allocation_data());
3768 if (data->sequence()->HasFPVirtualRegisters()) {
3772 if (data->sequence()->HasSimd128VirtualRegisters() &&
3799 TraceSequence(info(), data, "after register allocation");
3806 if (info()->trace_turbo_json() && !data->MayHaveUnverifiableGraph()) {
3809 "CodeGen", data->top_tier_register_allocation_data());
3812 data->DeleteRegisterAllocationZone();
3818 PipelineData* data = data_;
3824 new Zone(data->allocator(), kRegisterAllocatorVerifierZoneName));
3826 verifier_zone.get(), config, data->sequence(), data->frame());
3830 data->sequence()->ValidateEdgeSplitForm();
3831 data->sequence()->ValidateDeferredBlockEntryPaths();
3832 data->sequence()->ValidateDeferredBlockExitPaths();
3834 data->InitializeMidTierRegisterAllocationData(config, call_descriptor);
3836 TraceSequence(info(), data, "before register allocation");
3846 TraceSequence(info(), data, "after register allocation");
3853 data->DeleteRegisterAllocationZone();