aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc')
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc79
1 files changed, 45 insertions, 34 deletions
diff --git a/deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc b/deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc
index 507875742d..81be1c0028 100644
--- a/deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc
+++ b/deps/v8/test/cctest/interpreter/bytecode-expectations-printer.cc
@@ -12,7 +12,6 @@
#include "include/v8.h"
#include "src/base/logging.h"
-#include "src/compiler.h"
#include "src/runtime/runtime.h"
#include "src/interpreter/bytecode-array-iterator.h"
@@ -47,13 +46,19 @@ std::string BytecodeExpectationsPrinter::WrapCodeInFunction(
return program_stream.str();
}
-v8::Local<v8::Script> BytecodeExpectationsPrinter::Compile(
+v8::Local<v8::Script> BytecodeExpectationsPrinter::CompileScript(
const char* program) const {
v8::Local<v8::String> source = V8StringFromUTF8(program);
return v8::Script::Compile(isolate_->GetCurrentContext(), source)
.ToLocalChecked();
}
+v8::Local<v8::Module> BytecodeExpectationsPrinter::CompileModule(
+ const char* program) const {
+ v8::ScriptCompiler::Source source(V8StringFromUTF8(program));
+ return v8::ScriptCompiler::CompileModule(isolate_, &source).ToLocalChecked();
+}
+
void BytecodeExpectationsPrinter::Run(v8::Local<v8::Script> script) const {
(void)script->Run(isolate_->GetCurrentContext());
}
@@ -75,6 +80,13 @@ BytecodeExpectationsPrinter::GetBytecodeArrayForGlobal(
}
i::Handle<i::BytecodeArray>
+BytecodeExpectationsPrinter::GetBytecodeArrayForModule(
+ v8::Local<v8::Module> module) const {
+ i::Handle<i::Module> i_module = v8::Utils::OpenHandle(*module);
+ return i::handle(i_module->shared()->bytecode_array(), i_isolate());
+}
+
+i::Handle<i::BytecodeArray>
BytecodeExpectationsPrinter::GetBytecodeArrayForScript(
v8::Local<v8::Script> script) const {
i::Handle<i::JSFunction> js_function = v8::Utils::OpenHandle(*script);
@@ -151,6 +163,9 @@ void BytecodeExpectationsPrinter::PrintBytecodeOperand(
case OperandType::kIdx:
stream << bytecode_iterator.GetIndexOperand(op_index);
break;
+ case OperandType::kUImm:
+ stream << bytecode_iterator.GetUnsignedImmediateOperand(op_index);
+ break;
case OperandType::kImm:
stream << bytecode_iterator.GetImmediateOperand(op_index);
break;
@@ -225,32 +240,21 @@ void BytecodeExpectationsPrinter::PrintV8String(std::ostream& stream,
void BytecodeExpectationsPrinter::PrintConstant(
std::ostream& stream, i::Handle<i::Object> constant) const {
- switch (const_pool_type_) {
- case ConstantPoolType::kString:
- CHECK(constant->IsString());
+ if (constant->IsSmi()) {
+ stream << "Smi [";
+ i::Smi::cast(*constant)->SmiPrint(stream);
+ stream << "]";
+ } else {
+ stream << i::HeapObject::cast(*constant)->map()->instance_type();
+ if (constant->IsHeapNumber()) {
+ stream << " [";
+ i::HeapNumber::cast(*constant)->HeapNumberPrint(stream);
+ stream << "]";
+ } else if (constant->IsString()) {
+ stream << " [";
PrintV8String(stream, i::String::cast(*constant));
- break;
- case ConstantPoolType::kNumber:
- if (constant->IsSmi()) {
- i::Smi::cast(*constant)->SmiPrint(stream);
- } else if (constant->IsHeapNumber()) {
- i::HeapNumber::cast(*constant)->HeapNumberPrint(stream);
- } else {
- UNREACHABLE();
- }
- break;
- case ConstantPoolType::kMixed:
- if (constant->IsSmi()) {
- stream << "kInstanceTypeDontCare";
- } else {
- stream << "InstanceType::"
- << i::HeapObject::cast(*constant)->map()->instance_type();
- }
- break;
- case ConstantPoolType::kUnknown:
- default:
- UNREACHABLE();
- return;
+ stream << "]";
+ }
}
}
@@ -335,13 +339,20 @@ void BytecodeExpectationsPrinter::PrintExpectation(
wrap_ ? WrapCodeInFunction(test_function_name_.c_str(), snippet)
: snippet;
- v8::Local<v8::Script> script = Compile(source_code.c_str());
-
- if (execute_) Run(script);
-
- i::Handle<i::BytecodeArray> bytecode_array =
- top_level_ ? GetBytecodeArrayForScript(script)
- : GetBytecodeArrayForGlobal(test_function_name_.c_str());
+ i::Handle<i::BytecodeArray> bytecode_array;
+ if (module_) {
+ CHECK(top_level_ && !wrap_);
+ v8::Local<v8::Module> module = CompileModule(source_code.c_str());
+ bytecode_array = GetBytecodeArrayForModule(module);
+ } else {
+ v8::Local<v8::Script> script = CompileScript(source_code.c_str());
+ if (top_level_) {
+ bytecode_array = GetBytecodeArrayForScript(script);
+ } else {
+ Run(script);
+ bytecode_array = GetBytecodeArrayForGlobal(test_function_name_.c_str());
+ }
+ }
stream << "---\n";
PrintCodeSnippet(stream, snippet);