LCOV - code coverage report
Current view: top level - src/compiler - operator.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 13 13 100.0 %
Date: 2019-04-17 Functions: 4 4 100.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             : #include "src/compiler/operator.h"
       6             : 
       7             : #include <limits>
       8             : 
       9             : namespace v8 {
      10             : namespace internal {
      11             : namespace compiler {
      12             : 
      13             : namespace {
      14             : 
      15             : template <typename N>
      16             : V8_INLINE N CheckRange(size_t val) {
      17             :   // The getters on Operator for input and output counts currently return int.
      18             :   // Thus check that the given value fits in the integer range.
      19             :   // TODO(titzer): Remove this check once the getters return size_t.
      20   801782208 :   CHECK_LE(val, std::min(static_cast<size_t>(std::numeric_limits<N>::max()),
      21             :                          static_cast<size_t>(kMaxInt)));
      22   801782208 :   return static_cast<N>(val);
      23             : }
      24             : 
      25             : }  // namespace
      26             : 
      27   133630368 : Operator::Operator(Opcode opcode, Properties properties, const char* mnemonic,
      28             :                    size_t value_in, size_t effect_in, size_t control_in,
      29             :                    size_t value_out, size_t effect_out, size_t control_out)
      30             :     : mnemonic_(mnemonic),
      31             :       opcode_(opcode),
      32             :       properties_(properties),
      33             :       value_in_(CheckRange<uint32_t>(value_in)),
      34             :       effect_in_(CheckRange<uint32_t>(effect_in)),
      35             :       control_in_(CheckRange<uint32_t>(control_in)),
      36             :       value_out_(CheckRange<uint32_t>(value_out)),
      37             :       effect_out_(CheckRange<uint8_t>(effect_out)),
      38   935412576 :       control_out_(CheckRange<uint32_t>(control_out)) {}
      39             : 
      40        1430 : std::ostream& operator<<(std::ostream& os, const Operator& op) {
      41             :   op.PrintTo(os);
      42        1430 :   return os;
      43             : }
      44             : 
      45        1315 : void Operator::PrintToImpl(std::ostream& os, PrintVerbosity verbose) const {
      46        1315 :   os << mnemonic();
      47        1315 : }
      48             : 
      49         934 : void Operator::PrintPropsTo(std::ostream& os) const {
      50         934 :   std::string separator = "";
      51             : 
      52             : #define PRINT_PROP_IF_SET(name)         \
      53             :   if (HasProperty(Operator::k##name)) { \
      54             :     os << separator;                    \
      55             :     os << #name;                        \
      56             :     separator = ", ";                   \
      57             :   }
      58       10421 :   OPERATOR_PROPERTY_LIST(PRINT_PROP_IF_SET)
      59             : #undef PRINT_PROP_IF_SET
      60         934 : }
      61             : 
      62             : }  // namespace compiler
      63             : }  // namespace internal
      64             : }  // namespace v8

Generated by: LCOV version 1.10