| Index: src/interpreter/bytecode-operands.cc | 
| diff --git a/src/interpreter/bytecode-operands.cc b/src/interpreter/bytecode-operands.cc | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..6be81fe62eb5a0178c6abef6d8a64811fefc9f1e | 
| --- /dev/null | 
| +++ b/src/interpreter/bytecode-operands.cc | 
| @@ -0,0 +1,89 @@ | 
| +// Copyright 2016 the V8 project authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#include "src/interpreter/bytecode-operands.h" | 
| + | 
| +#include <iomanip> | 
| + | 
| +namespace v8 { | 
| +namespace internal { | 
| +namespace interpreter { | 
| + | 
| +namespace { | 
| + | 
| +const char* AccumulatorUseToString(AccumulatorUse accumulator_use) { | 
| +  switch (accumulator_use) { | 
| +    case AccumulatorUse::kNone: | 
| +      return "None"; | 
| +    case AccumulatorUse::kRead: | 
| +      return "Read"; | 
| +    case AccumulatorUse::kWrite: | 
| +      return "Write"; | 
| +    case AccumulatorUse::kReadWrite: | 
| +      return "ReadWrite"; | 
| +  } | 
| +  UNREACHABLE(); | 
| +  return ""; | 
| +} | 
| + | 
| +const char* OperandTypeToString(OperandType operand_type) { | 
| +  switch (operand_type) { | 
| +#define CASE(Name, _)        \ | 
| +  case OperandType::k##Name: \ | 
| +    return #Name; | 
| +    OPERAND_TYPE_LIST(CASE) | 
| +#undef CASE | 
| +  } | 
| +  UNREACHABLE(); | 
| +  return ""; | 
| +} | 
| + | 
| +const char* OperandScaleToString(OperandScale operand_scale) { | 
| +  switch (operand_scale) { | 
| +#define CASE(Name, _)         \ | 
| +  case OperandScale::k##Name: \ | 
| +    return #Name; | 
| +    OPERAND_SCALE_LIST(CASE) | 
| +#undef CASE | 
| +  } | 
| +  UNREACHABLE(); | 
| +  return ""; | 
| +} | 
| + | 
| +const char* OperandSizeToString(OperandSize operand_size) { | 
| +  switch (operand_size) { | 
| +    case OperandSize::kNone: | 
| +      return "None"; | 
| +    case OperandSize::kByte: | 
| +      return "Byte"; | 
| +    case OperandSize::kShort: | 
| +      return "Short"; | 
| +    case OperandSize::kQuad: | 
| +      return "Quad"; | 
| +  } | 
| +  UNREACHABLE(); | 
| +  return ""; | 
| +} | 
| + | 
| +}  // namespace | 
| + | 
| +std::ostream& operator<<(std::ostream& os, const AccumulatorUse& use) { | 
| +  return os << AccumulatorUseToString(use); | 
| +} | 
| + | 
| +std::ostream& operator<<(std::ostream& os, const OperandSize& operand_size) { | 
| +  return os << OperandSizeToString(operand_size); | 
| +} | 
| + | 
| +std::ostream& operator<<(std::ostream& os, const OperandScale& operand_scale) { | 
| +  return os << OperandScaleToString(operand_scale); | 
| +} | 
| + | 
| +std::ostream& operator<<(std::ostream& os, const OperandType& operand_type) { | 
| +  return os << OperandTypeToString(operand_type); | 
| +} | 
| + | 
| +}  // namespace interpreter | 
| +}  // namespace internal | 
| +}  // namespace v8 | 
|  |