| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/compiler/operator.h" | 5 #include "src/compiler/operator.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 namespace v8 { | 9 namespace v8 { |
| 10 namespace internal { | 10 namespace internal { |
| 11 namespace compiler { | 11 namespace compiler { |
| 12 | 12 |
| 13 namespace { | 13 namespace { |
| 14 | 14 |
| 15 template <typename N> | 15 template <typename N> |
| 16 V8_INLINE N CheckRange(size_t val) { | 16 V8_INLINE N CheckRange(size_t val) { |
| 17 CHECK_LE(val, std::numeric_limits<N>::max()); | 17 CHECK_LE(val, std::numeric_limits<N>::max()); |
| 18 return static_cast<N>(val); | 18 return static_cast<N>(val); |
| 19 } | 19 } |
| 20 | 20 |
| 21 } // namespace | 21 } // namespace |
| 22 | 22 |
| 23 | 23 |
| 24 // static |
| 25 STATIC_CONST_MEMBER_DEFINITION const size_t Operator::kMaxControlOutputCount; |
| 26 |
| 27 |
| 24 Operator::Operator(Opcode opcode, Properties properties, const char* mnemonic, | 28 Operator::Operator(Opcode opcode, Properties properties, const char* mnemonic, |
| 25 size_t value_in, size_t effect_in, size_t control_in, | 29 size_t value_in, size_t effect_in, size_t control_in, |
| 26 size_t value_out, size_t effect_out, size_t control_out) | 30 size_t value_out, size_t effect_out, size_t control_out) |
| 27 : opcode_(opcode), | 31 : opcode_(opcode), |
| 28 properties_(properties), | 32 properties_(properties), |
| 29 mnemonic_(mnemonic), | 33 mnemonic_(mnemonic), |
| 30 value_in_(CheckRange<uint32_t>(value_in)), | 34 value_in_(CheckRange<uint32_t>(value_in)), |
| 31 effect_in_(CheckRange<uint16_t>(effect_in)), | 35 effect_in_(CheckRange<uint16_t>(effect_in)), |
| 32 control_in_(CheckRange<uint16_t>(control_in)), | 36 control_in_(CheckRange<uint16_t>(control_in)), |
| 33 value_out_(CheckRange<uint16_t>(value_out)), | 37 value_out_(CheckRange<uint16_t>(value_out)), |
| 34 effect_out_(CheckRange<uint8_t>(effect_out)), | 38 effect_out_(CheckRange<uint8_t>(effect_out)), |
| 35 control_out_(CheckRange<uint8_t>(control_out)) {} | 39 control_out_(CheckRange<uint16_t>(control_out)) {} |
| 36 | 40 |
| 37 | 41 |
| 38 std::ostream& operator<<(std::ostream& os, const Operator& op) { | 42 std::ostream& operator<<(std::ostream& os, const Operator& op) { |
| 39 op.PrintTo(os); | 43 op.PrintTo(os); |
| 40 return os; | 44 return os; |
| 41 } | 45 } |
| 42 | 46 |
| 43 | 47 |
| 44 void Operator::PrintTo(std::ostream& os) const { os << mnemonic(); } | 48 void Operator::PrintTo(std::ostream& os) const { os << mnemonic(); } |
| 45 | 49 |
| 46 } // namespace compiler | 50 } // namespace compiler |
| 47 } // namespace internal | 51 } // namespace internal |
| 48 } // namespace v8 | 52 } // namespace v8 |
| OLD | NEW |