LCOV - code coverage report
Current view: top level - src/compiler - js-inlining.h (source / functions) Hit Total Coverage
Test: app.info Lines: 2 2 100.0 %
Date: 2017-04-26 Functions: 0 2 0.0 %

          Line data    Source code
       1             : // Copyright 2014 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #ifndef V8_COMPILER_JS_INLINING_H_
       6             : #define V8_COMPILER_JS_INLINING_H_
       7             : 
       8             : #include "src/compiler/graph-reducer.h"
       9             : #include "src/compiler/js-graph.h"
      10             : 
      11             : namespace v8 {
      12             : namespace internal {
      13             : 
      14             : class BailoutId;
      15             : class CompilationInfo;
      16             : 
      17             : namespace compiler {
      18             : 
      19             : class SourcePositionTable;
      20             : 
      21             : // The JSInliner provides the core graph inlining machinery. Note that this
      22             : // class only deals with the mechanics of how to inline one graph into another,
      23             : // heuristics that decide what and how much to inline are beyond its scope.
      24      395343 : class JSInliner final : public AdvancedReducer {
      25             :  public:
      26             :   JSInliner(Editor* editor, Zone* local_zone, CompilationInfo* info,
      27             :             JSGraph* jsgraph, SourcePositionTable* source_positions)
      28             :       : AdvancedReducer(editor),
      29             :         local_zone_(local_zone),
      30             :         info_(info),
      31             :         jsgraph_(jsgraph),
      32      395342 :         source_positions_(source_positions) {}
      33             : 
      34             :   // Reducer interface, eagerly inlines everything.
      35             :   Reduction Reduce(Node* node) final;
      36             : 
      37             :   // Can be used by inlining heuristics or by testing code directly, without
      38             :   // using the above generic reducer interface of the inlining machinery.
      39             :   Reduction ReduceJSCall(Node* node);
      40             : 
      41             :  private:
      42             :   CommonOperatorBuilder* common() const;
      43             :   JSOperatorBuilder* javascript() const;
      44             :   SimplifiedOperatorBuilder* simplified() const;
      45             :   Graph* graph() const;
      46             :   JSGraph* jsgraph() const { return jsgraph_; }
      47             : 
      48             :   Zone* const local_zone_;
      49             :   CompilationInfo* info_;
      50             :   JSGraph* const jsgraph_;
      51             :   SourcePositionTable* const source_positions_;
      52             : 
      53             :   bool DetermineCallTarget(Node* node,
      54             :                            Handle<SharedFunctionInfo>& shared_info_out);
      55             :   void DetermineCallContext(Node* node, Node*& context_out,
      56             :                             Handle<FeedbackVector>& feedback_vector_out);
      57             : 
      58             :   Node* CreateArtificialFrameState(Node* node, Node* outer_frame_state,
      59             :                                    int parameter_count, BailoutId bailout_id,
      60             :                                    FrameStateType frame_state_type,
      61             :                                    Handle<SharedFunctionInfo> shared);
      62             : 
      63             :   Node* CreateTailCallerFrameState(Node* node, Node* outer_frame_state);
      64             : 
      65             :   Reduction InlineCall(Node* call, Node* new_target, Node* context,
      66             :                        Node* frame_state, Node* start, Node* end,
      67             :                        Node* exception_target,
      68             :                        const NodeVector& uncaught_subcalls);
      69             : };
      70             : 
      71             : }  // namespace compiler
      72             : }  // namespace internal
      73             : }  // namespace v8
      74             : 
      75             : #endif  // V8_COMPILER_JS_INLINING_H_

Generated by: LCOV version 1.10