Index: src/compiler/bytecode-branch-analysis.h |
diff --git a/src/compiler/bytecode-branch-analysis.h b/src/compiler/bytecode-branch-analysis.h |
index dd72b87cef0814fab28f109dbe03e352ee2dbe37..7d32da828132fb10f4d100b0d7c736aca1ad4cdd 100644 |
--- a/src/compiler/bytecode-branch-analysis.h |
+++ b/src/compiler/bytecode-branch-analysis.h |
@@ -7,7 +7,6 @@ |
#include "src/bit-vector.h" |
#include "src/handles.h" |
-#include "src/zone-containers.h" |
namespace v8 { |
namespace internal { |
@@ -16,15 +15,13 @@ class BytecodeArray; |
namespace compiler { |
-class BytecodeBranchInfo; |
- |
-// A class for identifying the branch targets and their branch sites |
-// within a bytecode array. This information can be used to construct |
-// the local control flow logic for high-level IR graphs built from |
-// bytecode. |
+// A class for identifying branch targets within a bytecode array. |
+// This information can be used to construct the local control flow |
+// logic for high-level IR graphs built from bytecode. |
// |
-// NB This class relies on the only backwards branches in bytecode |
-// being jumps back to loop headers. |
+// N.B. If this class is used to determine loop headers, then such a |
+// usage relies on the only backwards branches in bytecode being jumps |
+// back to loop headers. |
class BytecodeBranchAnalysis BASE_EMBEDDED { |
public: |
BytecodeBranchAnalysis(Handle<BytecodeArray> bytecode_array, Zone* zone); |
@@ -37,31 +34,24 @@ class BytecodeBranchAnalysis BASE_EMBEDDED { |
// Returns true if there are any forward branches to the bytecode at |
// |offset|. |
bool forward_branches_target(int offset) const { |
- const ZoneVector<int>* sites = ForwardBranchesTargetting(offset); |
- return sites != nullptr && sites->size() > 0; |
+ return is_forward_target_.Contains(offset); |
} |
// Returns true if there are any backward branches to the bytecode |
// at |offset|. |
bool backward_branches_target(int offset) const { |
- const ZoneVector<int>* sites = BackwardBranchesTargetting(offset); |
- return sites != nullptr && sites->size() > 0; |
+ return is_backward_target_.Contains(offset); |
} |
private: |
void AddBranch(int origin_offset, int target_offset); |
- // Offsets of bytecodes having a backward branch to the bytecode at |offset|. |
- const ZoneVector<int>* BackwardBranchesTargetting(int offset) const; |
- |
- // Offsets of bytecodes having a forward branch to the bytecode at |offset|. |
- const ZoneVector<int>* ForwardBranchesTargetting(int offset) const; |
- |
Zone* zone() const { return zone_; } |
Handle<BytecodeArray> bytecode_array() const { return bytecode_array_; } |
- ZoneMap<int, BytecodeBranchInfo*> branch_infos_; |
Handle<BytecodeArray> bytecode_array_; |
+ BitVector is_backward_target_; |
+ BitVector is_forward_target_; |
Zone* zone_; |
DISALLOW_COPY_AND_ASSIGN(BytecodeBranchAnalysis); |