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/opcodes.h" 6 7 #include <algorithm> 8 #include <ostream> 9 10 #include "src/base/macros.h" 11 12 namespace v8 { 13 namespace internal { 14 namespace compiler { 15 16 namespace { 17 18 char const* const kMnemonics[] = { 19 #define DECLARE_MNEMONIC(x, ...) #x, 20 ALL_OP_LIST(DECLARE_MNEMONIC) 21 #undef DECLARE_MNEMONIC 22 "UnknownOpcode"}; 23 24 } // namespace 25 26 27 // static Mnemonic(Value value)28char const* IrOpcode::Mnemonic(Value value) { 29 DCHECK_LE(0, static_cast<int>(value)); 30 DCHECK_LE(static_cast<int>(value), IrOpcode::Value::kLast); 31 size_t const n = std::min<size_t>(value, arraysize(kMnemonics) - 1); 32 return kMnemonics[n]; 33 } 34 35 operator <<(std::ostream & os,IrOpcode::Value opcode)36std::ostream& operator<<(std::ostream& os, IrOpcode::Value opcode) { 37 return os << IrOpcode::Mnemonic(opcode); 38 } 39 40 } // namespace compiler 41 } // namespace internal 42 } // namespace v8 43