| Index: test/cctest/interpreter/bytecode-expectations-printer.h
|
| diff --git a/test/cctest/interpreter/bytecode-expectations-printer.h b/test/cctest/interpreter/bytecode-expectations-printer.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..62ff63eb6a76afb1b1d28a49b7d2ed4644031c2b
|
| --- /dev/null
|
| +++ b/test/cctest/interpreter/bytecode-expectations-printer.h
|
| @@ -0,0 +1,87 @@
|
| +// 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.
|
| +
|
| +#ifndef TEST_CCTEST_INTERPRETER_BYTECODE_EXPECTATIONS_PRINTER_H_
|
| +#define TEST_CCTEST_INTERPRETER_BYTECODE_EXPECTATIONS_PRINTER_H_
|
| +
|
| +#include <iostream>
|
| +#include <string>
|
| +
|
| +#include "src/interpreter/bytecodes.h"
|
| +#include "src/objects.h"
|
| +
|
| +namespace v8 {
|
| +
|
| +class Isolate;
|
| +
|
| +namespace internal {
|
| +namespace interpreter {
|
| +
|
| +class BytecodeArrayIterator;
|
| +
|
| +class BytecodeExpectationsPrinter final {
|
| + public:
|
| + enum class ConstantPoolType {
|
| + kUnknown,
|
| + kString,
|
| + kInteger,
|
| + kDouble,
|
| + kMixed,
|
| + };
|
| +
|
| + BytecodeExpectationsPrinter(v8::Isolate* i,
|
| + ConstantPoolType t = ConstantPoolType::kMixed)
|
| + : isolate_(i), const_pool_type_(t) {}
|
| +
|
| + void PrintExpectation(std::ostream& stream, // NOLINT
|
| + const std::string& snippet) const;
|
| +
|
| + void set_constant_pool_type(ConstantPoolType t) { const_pool_type_ = t; }
|
| + ConstantPoolType constant_pool_type() const { return const_pool_type_; }
|
| +
|
| + private:
|
| + void PrintEscapedString(std::ostream& stream, // NOLINT
|
| + const std::string& string) const;
|
| + void PrintBytecodeOperand(std::ostream& stream, // NOLINT
|
| + const BytecodeArrayIterator& bytecode_iter,
|
| + const Bytecode& bytecode, int op_index) const;
|
| + void PrintBytecode(std::ostream& stream, // NOLINT
|
| + const BytecodeArrayIterator& bytecode_iter) const;
|
| + void PrintV8String(std::ostream& stream, // NOLINT
|
| + i::String* string) const;
|
| + void PrintConstant(std::ostream& stream, // NOLINT
|
| + i::Handle<i::Object> constant) const;
|
| + void PrintFrameSize(std::ostream& stream, // NOLINT
|
| + i::Handle<i::BytecodeArray> bytecode_array) const;
|
| + void PrintBytecodeSequence(std::ostream& stream, // NOLINT
|
| + i::Handle<i::BytecodeArray> bytecode_array) const;
|
| + void PrintConstantPool(std::ostream& stream, // NOLINT
|
| + i::FixedArray* constant_pool) const;
|
| + void PrintCodeSnippet(std::ostream& stream, // NOLINT
|
| + const std::string& body) const;
|
| + void PrintBytecodeArray(std::ostream& stream, // NOLINT
|
| + const std::string& body,
|
| + i::Handle<i::BytecodeArray> bytecode_array) const;
|
| +
|
| + v8::Local<v8::String> V8StringFromUTF8(const char* data) const;
|
| + std::string WrapCodeInFunction(const char* function_name,
|
| + const std::string& function_body) const;
|
| +
|
| + v8::Local<v8::Value> CompileAndRun(const char* program) const;
|
| + i::Handle<i::BytecodeArray> GetBytecodeArrayForGlobal(
|
| + const char* global_name) const;
|
| +
|
| + i::Isolate* i_isolate() const {
|
| + return reinterpret_cast<i::Isolate*>(isolate_);
|
| + }
|
| +
|
| + v8::Isolate* isolate_;
|
| + ConstantPoolType const_pool_type_;
|
| +};
|
| +
|
| +} // namespace interpreter
|
| +} // namespace internal
|
| +} // namespace v8
|
| +
|
| +#endif // TEST_CCTEST_INTERPRETER_BYTECODE_EXPECTATIONS_PRINTER_H_
|
|
|