c6414dacdd
This reverts commit 87f71769c5
.
Reason for revert: Performance regressions https://chromeperf.appspot.com/group_report?rev=46185
Original change's description:
> [ignition] Merge bytecode array builder and writer
>
> Move bytecode array writing logic into the array builder, allowing us to
> remove the bytecode array writer and bytecode node, and convert runtime
> operand writing to compile-time bytecode operand writing using the
> information statically known at compile time.
>
> Bug: v8:6474
> Change-Id: I210cd9897fd41293745614e4a253c7c251dfffc9
> Reviewed-on: https://chromium-review.googlesource.com/533055
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#46183}
TBR=rmcilroy@chromium.org,leszeks@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:6474
Bug: chromium:736646
Change-Id: I00287b2bbbb8efa5a3141bc9c2906f91a7d33e51
Reviewed-on: https://chromium-review.googlesource.com/549319
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46235}
58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
// Copyright 2017 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-node.h"
|
|
|
|
#include <iomanip>
|
|
#include "src/source-position-table.h"
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
namespace interpreter {
|
|
|
|
void BytecodeNode::Print(std::ostream& os) const {
|
|
#ifdef DEBUG
|
|
std::ios saved_state(nullptr);
|
|
saved_state.copyfmt(os);
|
|
os << Bytecodes::ToString(bytecode_);
|
|
|
|
for (int i = 0; i < operand_count(); ++i) {
|
|
os << ' ' << std::setw(8) << std::setfill('0') << std::hex << operands_[i];
|
|
}
|
|
os.copyfmt(saved_state);
|
|
|
|
if (source_info_.is_valid()) {
|
|
os << ' ' << source_info_;
|
|
}
|
|
os << '\n';
|
|
#else
|
|
os << static_cast<const void*>(this);
|
|
#endif // DEBUG
|
|
}
|
|
|
|
bool BytecodeNode::operator==(const BytecodeNode& other) const {
|
|
if (this == &other) {
|
|
return true;
|
|
} else if (this->bytecode() != other.bytecode() ||
|
|
this->source_info() != other.source_info()) {
|
|
return false;
|
|
} else {
|
|
for (int i = 0; i < this->operand_count(); ++i) {
|
|
if (this->operand(i) != other.operand(i)) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
std::ostream& operator<<(std::ostream& os, const BytecodeNode& node) {
|
|
node.Print(os);
|
|
return os;
|
|
}
|
|
|
|
} // namespace interpreter
|
|
} // namespace internal
|
|
} // namespace v8
|