LCOV - code coverage report
Current view: top level - src/compiler/backend - gap-resolver.h (source / functions) Hit Total Coverage
Test: app.info Lines: 3 3 100.0 %
Date: 2019-02-19 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_BACKEND_GAP_RESOLVER_H_
       6             : #define V8_COMPILER_BACKEND_GAP_RESOLVER_H_
       7             : 
       8             : #include "src/compiler/backend/instruction.h"
       9             : 
      10             : namespace v8 {
      11             : namespace internal {
      12             : namespace compiler {
      13             : 
      14             : class GapResolver final {
      15             :  public:
      16             :   // Interface used by the gap resolver to emit moves and swaps.
      17     2181438 :   class Assembler {
      18             :    public:
      19     2161589 :     virtual ~Assembler() = default;
      20             : 
      21             :     // Assemble move.
      22             :     virtual void AssembleMove(InstructionOperand* source,
      23             :                               InstructionOperand* destination) = 0;
      24             :     // Assemble swap.
      25             :     virtual void AssembleSwap(InstructionOperand* source,
      26             :                               InstructionOperand* destination) = 0;
      27             :   };
      28             : 
      29             :   explicit GapResolver(Assembler* assembler)
      30     2161559 :       : assembler_(assembler), split_rep_(MachineRepresentation::kSimd128) {}
      31             : 
      32             :   // Resolve a set of parallel moves, emitting assembler instructions.
      33             :   void Resolve(ParallelMove* parallel_move);
      34             : 
      35             :  private:
      36             :   // Performs the given move, possibly performing other moves to unblock the
      37             :   // destination operand.
      38             :   void PerformMove(ParallelMove* moves, MoveOperands* move);
      39             : 
      40             :   // Assembler used to emit moves and save registers.
      41             :   Assembler* const assembler_;
      42             : 
      43             :   // While resolving moves, the largest FP representation that can be moved.
      44             :   // Any larger moves must be split into an equivalent series of moves of this
      45             :   // representation.
      46             :   MachineRepresentation split_rep_;
      47             : };
      48             : 
      49             : }  // namespace compiler
      50             : }  // namespace internal
      51             : }  // namespace v8
      52             : 
      53             : #endif  // V8_COMPILER_BACKEND_GAP_RESOLVER_H_

Generated by: LCOV version 1.10