| 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);
|
|
|