LCOV - code coverage report
Current view: top level - src/compiler - js-call-reducer.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 2015 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_CALL_REDUCER_H_
       6             : #define V8_COMPILER_JS_CALL_REDUCER_H_
       7             : 
       8             : #include "src/base/flags.h"
       9             : #include "src/compiler/graph-reducer.h"
      10             : 
      11             : namespace v8 {
      12             : namespace internal {
      13             : 
      14             : // Forward declarations.
      15             : class CompilationDependencies;
      16             : class Factory;
      17             : 
      18             : namespace compiler {
      19             : 
      20             : // Forward declarations.
      21             : class CommonOperatorBuilder;
      22             : class JSGraph;
      23             : class JSOperatorBuilder;
      24             : class SimplifiedOperatorBuilder;
      25             : 
      26             : // Performs strength reduction on {JSConstruct} and {JSCall} nodes,
      27             : // which might allow inlining or other optimizations to be performed afterwards.
      28      395343 : class JSCallReducer final : public AdvancedReducer {
      29             :  public:
      30             :   JSCallReducer(Editor* editor, JSGraph* jsgraph,
      31             :                 Handle<Context> native_context,
      32             :                 CompilationDependencies* dependencies)
      33             :       : AdvancedReducer(editor),
      34             :         jsgraph_(jsgraph),
      35             :         native_context_(native_context),
      36      395343 :         dependencies_(dependencies) {}
      37             : 
      38             :   Reduction Reduce(Node* node) final;
      39             : 
      40             :  private:
      41             :   Reduction ReduceArrayConstructor(Node* node);
      42             :   Reduction ReduceBooleanConstructor(Node* node);
      43             :   Reduction ReduceCallApiFunction(
      44             :       Node* node, Handle<FunctionTemplateInfo> function_template_info);
      45             :   Reduction ReduceNumberConstructor(Node* node);
      46             :   Reduction ReduceFunctionPrototypeApply(Node* node);
      47             :   Reduction ReduceFunctionPrototypeCall(Node* node);
      48             :   Reduction ReduceFunctionPrototypeHasInstance(Node* node);
      49             :   Reduction ReduceObjectGetPrototype(Node* node, Node* object);
      50             :   Reduction ReduceObjectGetPrototypeOf(Node* node);
      51             :   Reduction ReduceObjectPrototypeGetProto(Node* node);
      52             :   Reduction ReduceReflectGetPrototypeOf(Node* node);
      53             :   Reduction ReduceSpreadCall(Node* node, int arity);
      54             :   Reduction ReduceJSConstruct(Node* node);
      55             :   Reduction ReduceJSConstructWithSpread(Node* node);
      56             :   Reduction ReduceJSCall(Node* node);
      57             :   Reduction ReduceJSCallWithSpread(Node* node);
      58             : 
      59             :   Graph* graph() const;
      60             :   JSGraph* jsgraph() const { return jsgraph_; }
      61             :   Isolate* isolate() const;
      62             :   Factory* factory() const;
      63             :   Handle<Context> native_context() const { return native_context_; }
      64             :   Handle<JSGlobalProxy> global_proxy() const;
      65             :   CommonOperatorBuilder* common() const;
      66             :   JSOperatorBuilder* javascript() const;
      67             :   SimplifiedOperatorBuilder* simplified() const;
      68             :   CompilationDependencies* dependencies() const { return dependencies_; }
      69             : 
      70             :   JSGraph* const jsgraph_;
      71             :   Handle<Context> const native_context_;
      72             :   CompilationDependencies* const dependencies_;
      73             : };
      74             : 
      75             : }  // namespace compiler
      76             : }  // namespace internal
      77             : }  // namespace v8
      78             : 
      79             : #endif  // V8_COMPILER_JS_CALL_REDUCER_H_

Generated by: LCOV version 1.10