Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Unified Diff: src/compiler/bytecode-branch-analysis.cc

Issue 1646873004: [interpreter] Simplify BytecodeBranchAnalysis to minimum. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_interpreter-cleanup-graph-builder-reachability
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/bytecode-branch-analysis.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/bytecode-branch-analysis.cc
diff --git a/src/compiler/bytecode-branch-analysis.cc b/src/compiler/bytecode-branch-analysis.cc
index 3320ad7c0968a46e24c5ebdcc25fecadedf91600..4e96a53aebb4ab7be22a39332dce0b571f695661 100644
--- a/src/compiler/bytecode-branch-analysis.cc
+++ b/src/compiler/bytecode-branch-analysis.cc
@@ -11,47 +11,13 @@ namespace v8 {
namespace internal {
namespace compiler {
-// The class contains all of the sites that contain
-// branches to a particular target (bytecode offset).
-class BytecodeBranchInfo final : public ZoneObject {
- public:
- explicit BytecodeBranchInfo(Zone* zone)
- : back_edge_offsets_(zone), fore_edge_offsets_(zone) {}
-
- void AddBranch(int source_offset, int target_offset);
-
- // The offsets of bytecodes that refer to this bytecode as
- // a back-edge predecessor.
- const ZoneVector<int>* back_edge_offsets() { return &back_edge_offsets_; }
-
- // The offsets of bytecodes that refer to this bytecode as
- // a forwards-edge predecessor.
- const ZoneVector<int>* fore_edge_offsets() { return &fore_edge_offsets_; }
-
- private:
- ZoneVector<int> back_edge_offsets_;
- ZoneVector<int> fore_edge_offsets_;
-
- DISALLOW_COPY_AND_ASSIGN(BytecodeBranchInfo);
-};
-
-
-void BytecodeBranchInfo::AddBranch(int source_offset, int target_offset) {
- if (source_offset < target_offset) {
- fore_edge_offsets_.push_back(source_offset);
- } else {
- back_edge_offsets_.push_back(source_offset);
- }
-}
-
-
BytecodeBranchAnalysis::BytecodeBranchAnalysis(
Handle<BytecodeArray> bytecode_array, Zone* zone)
- : branch_infos_(zone),
- bytecode_array_(bytecode_array),
+ : bytecode_array_(bytecode_array),
+ is_backward_target_(bytecode_array->length(), zone),
+ is_forward_target_(bytecode_array->length(), zone),
zone_(zone) {}
-
void BytecodeBranchAnalysis::Analyze() {
interpreter::BytecodeArrayIterator iterator(bytecode_array());
while (!iterator.done()) {
@@ -64,38 +30,12 @@ void BytecodeBranchAnalysis::Analyze() {
}
}
-
-const ZoneVector<int>* BytecodeBranchAnalysis::BackwardBranchesTargetting(
- int offset) const {
- auto iterator = branch_infos_.find(offset);
- if (branch_infos_.end() != iterator) {
- return iterator->second->back_edge_offsets();
- } else {
- return nullptr;
- }
-}
-
-
-const ZoneVector<int>* BytecodeBranchAnalysis::ForwardBranchesTargetting(
- int offset) const {
- auto iterator = branch_infos_.find(offset);
- if (branch_infos_.end() != iterator) {
- return iterator->second->fore_edge_offsets();
- } else {
- return nullptr;
- }
-}
-
void BytecodeBranchAnalysis::AddBranch(int source_offset, int target_offset) {
- BytecodeBranchInfo* branch_info = nullptr;
- auto iterator = branch_infos_.find(target_offset);
- if (branch_infos_.end() == iterator) {
- branch_info = new (zone()) BytecodeBranchInfo(zone());
- branch_infos_.insert(std::make_pair(target_offset, branch_info));
+ if (source_offset < target_offset) {
+ is_forward_target_.Add(target_offset);
} else {
- branch_info = iterator->second;
+ is_backward_target_.Add(target_offset);
}
- branch_info->AddBranch(source_offset, target_offset);
}
} // namespace compiler
« no previous file with comments | « src/compiler/bytecode-branch-analysis.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698