LCOV - code coverage report
Current view: top level - src/compiler - js-typed-lowering.h (source / functions) Hit Total Coverage
Test: app.info Lines: 1 1 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_TYPED_LOWERING_H_
       6             : #define V8_COMPILER_JS_TYPED_LOWERING_H_
       7             : 
       8             : #include "src/base/compiler-specific.h"
       9             : #include "src/base/flags.h"
      10             : #include "src/compiler/graph-reducer.h"
      11             : #include "src/compiler/opcodes.h"
      12             : #include "src/globals.h"
      13             : 
      14             : namespace v8 {
      15             : namespace internal {
      16             : 
      17             : // Forward declarations.
      18             : class CompilationDependencies;
      19             : class Factory;
      20             : 
      21             : namespace compiler {
      22             : 
      23             : // Forward declarations.
      24             : class CommonOperatorBuilder;
      25             : class JSGraph;
      26             : class JSOperatorBuilder;
      27             : class SimplifiedOperatorBuilder;
      28             : class TypeCache;
      29             : 
      30             : // Lowers JS-level operators to simplified operators based on types.
      31             : class V8_EXPORT_PRIVATE JSTypedLowering final
      32             :     : public NON_EXPORTED_BASE(AdvancedReducer) {
      33             :  public:
      34             :   // Flags that control the mode of operation.
      35             :   enum Flag {
      36             :     kNoFlags = 0u,
      37             :     kDeoptimizationEnabled = 1u << 0,
      38             :   };
      39             :   typedef base::Flags<Flag> Flags;
      40             : 
      41             :   JSTypedLowering(Editor* editor, CompilationDependencies* dependencies,
      42             :                   Flags flags, JSGraph* jsgraph, Zone* zone);
      43      395343 :   ~JSTypedLowering() final {}
      44             : 
      45             :   Reduction Reduce(Node* node) final;
      46             : 
      47             :  private:
      48             :   friend class JSBinopReduction;
      49             : 
      50             :   Reduction ReduceJSAdd(Node* node);
      51             :   Reduction ReduceJSComparison(Node* node);
      52             :   Reduction ReduceJSLoadNamed(Node* node);
      53             :   Reduction ReduceJSLoadProperty(Node* node);
      54             :   Reduction ReduceJSStoreProperty(Node* node);
      55             :   Reduction ReduceJSOrdinaryHasInstance(Node* node);
      56             :   Reduction ReduceJSLoadContext(Node* node);
      57             :   Reduction ReduceJSStoreContext(Node* node);
      58             :   Reduction ReduceJSLoadModule(Node* node);
      59             :   Reduction ReduceJSStoreModule(Node* node);
      60             :   Reduction ReduceJSEqual(Node* node);
      61             :   Reduction ReduceJSStrictEqual(Node* node);
      62             :   Reduction ReduceJSToBoolean(Node* node);
      63             :   Reduction ReduceJSToInteger(Node* node);
      64             :   Reduction ReduceJSToLength(Node* node);
      65             :   Reduction ReduceJSToName(Node* node);
      66             :   Reduction ReduceJSToNumberInput(Node* input);
      67             :   Reduction ReduceJSToNumber(Node* node);
      68             :   Reduction ReduceJSToStringInput(Node* input);
      69             :   Reduction ReduceJSToString(Node* node);
      70             :   Reduction ReduceJSToObject(Node* node);
      71             :   Reduction ReduceJSConvertReceiver(Node* node);
      72             :   Reduction ReduceJSConstruct(Node* node);
      73             :   Reduction ReduceJSCallForwardVarargs(Node* node);
      74             :   Reduction ReduceJSCall(Node* node);
      75             :   Reduction ReduceJSForInNext(Node* node);
      76             :   Reduction ReduceJSLoadMessage(Node* node);
      77             :   Reduction ReduceJSStoreMessage(Node* node);
      78             :   Reduction ReduceJSGeneratorStore(Node* node);
      79             :   Reduction ReduceJSGeneratorRestoreContinuation(Node* node);
      80             :   Reduction ReduceJSGeneratorRestoreRegister(Node* node);
      81             :   Reduction ReduceJSTypeOf(Node* node);
      82             :   Reduction ReduceNumberBinop(Node* node);
      83             :   Reduction ReduceInt32Binop(Node* node);
      84             :   Reduction ReduceUI32Shift(Node* node, Signedness signedness);
      85             :   Reduction ReduceCreateConsString(Node* node);
      86             :   Reduction ReduceSpeculativeNumberAdd(Node* node);
      87             :   Reduction ReduceSpeculativeNumberMultiply(Node* node);
      88             :   Reduction ReduceSpeculativeNumberBinop(Node* node);
      89             :   Reduction ReduceSpeculativeNumberComparison(Node* node);
      90             : 
      91             :   Factory* factory() const;
      92             :   Graph* graph() const;
      93             :   JSGraph* jsgraph() const { return jsgraph_; }
      94             :   Isolate* isolate() const;
      95             :   JSOperatorBuilder* javascript() const;
      96             :   CommonOperatorBuilder* common() const;
      97             :   SimplifiedOperatorBuilder* simplified() const;
      98             :   CompilationDependencies* dependencies() const;
      99             :   Flags flags() const { return flags_; }
     100             : 
     101             :   CompilationDependencies* dependencies_;
     102             :   Flags flags_;
     103             :   JSGraph* jsgraph_;
     104             :   Type* shifted_int32_ranges_[4];
     105             :   Type* pointer_comparable_type_;
     106             :   TypeCache const& type_cache_;
     107             : };
     108             : 
     109             : DEFINE_OPERATORS_FOR_FLAGS(JSTypedLowering::Flags)
     110             : 
     111             : }  // namespace compiler
     112             : }  // namespace internal
     113             : }  // namespace v8
     114             : 
     115             : #endif  // V8_COMPILER_JS_TYPED_LOWERING_H_

Generated by: LCOV version 1.10