LCOV - code coverage report
Current view: top level - src/compiler - js-intrinsic-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 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_INTRINSIC_LOWERING_H_
       6             : #define V8_COMPILER_JS_INTRINSIC_LOWERING_H_
       7             : 
       8             : #include "src/base/compiler-specific.h"
       9             : #include "src/compiler/common-operator.h"
      10             : #include "src/compiler/graph-reducer.h"
      11             : #include "src/globals.h"
      12             : 
      13             : namespace v8 {
      14             : namespace internal {
      15             : 
      16             : // Forward declarations.
      17             : class Callable;
      18             : 
      19             : 
      20             : namespace compiler {
      21             : 
      22             : // Forward declarations.
      23             : class CommonOperatorBuilder;
      24             : struct FieldAccess;
      25             : class JSOperatorBuilder;
      26             : class JSGraph;
      27             : class SimplifiedOperatorBuilder;
      28             : 
      29             : 
      30             : // Lowers certain JS-level runtime calls.
      31             : class V8_EXPORT_PRIVATE JSIntrinsicLowering final
      32             :     : public NON_EXPORTED_BASE(AdvancedReducer) {
      33             :  public:
      34             :   enum DeoptimizationMode { kDeoptimizationEnabled, kDeoptimizationDisabled };
      35             : 
      36             :   JSIntrinsicLowering(Editor* editor, JSGraph* jsgraph,
      37             :                       DeoptimizationMode mode);
      38      395343 :   ~JSIntrinsicLowering() final {}
      39             : 
      40             :   Reduction Reduce(Node* node) final;
      41             : 
      42             :  private:
      43             :   Reduction ReduceCreateIterResultObject(Node* node);
      44             :   Reduction ReduceDebugIsActive(Node* node);
      45             :   Reduction ReduceDeoptimizeNow(Node* node);
      46             :   Reduction ReduceGeneratorClose(Node* node);
      47             :   Reduction ReduceGeneratorGetContext(Node* node);
      48             :   Reduction ReduceGeneratorGetInputOrDebugPos(Node* node);
      49             :   Reduction ReduceAsyncGeneratorGetAwaitInputOrDebugPos(Node* node);
      50             :   Reduction ReduceAsyncGeneratorReject(Node* node);
      51             :   Reduction ReduceAsyncGeneratorResolve(Node* node);
      52             :   Reduction ReduceGeneratorSaveInputForAwait(Node* node);
      53             :   Reduction ReduceGeneratorGetResumeMode(Node* node);
      54             :   Reduction ReduceIsInstanceType(Node* node, InstanceType instance_type);
      55             :   Reduction ReduceIsJSReceiver(Node* node);
      56             :   Reduction ReduceIsSmi(Node* node);
      57             :   Reduction ReduceFixedArrayGet(Node* node);
      58             :   Reduction ReduceFixedArraySet(Node* node);
      59             :   Reduction ReduceSubString(Node* node);
      60             :   Reduction ReduceToInteger(Node* node);
      61             :   Reduction ReduceToLength(Node* node);
      62             :   Reduction ReduceToNumber(Node* node);
      63             :   Reduction ReduceToObject(Node* node);
      64             :   Reduction ReduceToString(Node* node);
      65             :   Reduction ReduceCall(Node* node);
      66             :   Reduction ReduceGetSuperConstructor(Node* node);
      67             : 
      68             :   // TODO(turbofan): typedarray.js support; drop once TypedArrays are
      69             :   // converted to proper CodeStubAssembler based builtins.
      70             :   Reduction ReduceArrayBufferViewField(Node* node, FieldAccess const& access);
      71             :   Reduction ReduceArrayBufferViewWasNeutered(Node* node);
      72             :   Reduction ReduceMaxSmi(Node* node);
      73             :   Reduction ReduceTypedArrayMaxSizeInHeap(Node* node);
      74             : 
      75             :   // TODO(turbofan): collection.js support; drop once Maps and Sets are
      76             :   // converted to proper CodeStubAssembler based builtins.
      77             :   Reduction ReduceJSCollectionGetTable(Node* node);
      78             :   Reduction ReduceStringGetRawHashField(Node* node);
      79             :   Reduction ReduceTheHole(Node* node);
      80             : 
      81             :   // TODO(turbofan): JavaScript builtins support; drop once all uses of
      82             :   // %_ClassOf in JavaScript builtins are eliminated.
      83             :   Reduction ReduceClassOf(Node* node);
      84             : 
      85             :   Reduction Change(Node* node, const Operator* op);
      86             :   Reduction Change(Node* node, const Operator* op, Node* a, Node* b);
      87             :   Reduction Change(Node* node, const Operator* op, Node* a, Node* b, Node* c);
      88             :   Reduction Change(Node* node, const Operator* op, Node* a, Node* b, Node* c,
      89             :                    Node* d);
      90             :   Reduction Change(Node* node, Callable const& callable,
      91             :                    int stack_parameter_count);
      92             : 
      93             :   Graph* graph() const;
      94             :   JSGraph* jsgraph() const { return jsgraph_; }
      95             :   Isolate* isolate() const;
      96             :   CommonOperatorBuilder* common() const;
      97             :   JSOperatorBuilder* javascript() const;
      98             :   SimplifiedOperatorBuilder* simplified() const;
      99             :   DeoptimizationMode mode() const { return mode_; }
     100             : 
     101             :   JSGraph* const jsgraph_;
     102             :   DeoptimizationMode const mode_;
     103             : };
     104             : 
     105             : }  // namespace compiler
     106             : }  // namespace internal
     107             : }  // namespace v8
     108             : 
     109             : #endif  // V8_COMPILER_JS_INTRINSIC_LOWERING_H_

Generated by: LCOV version 1.10