| Index: src/compiler/jump-threading.h
|
| diff --git a/src/compiler/jump-threading.h b/src/compiler/jump-threading.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b801fecc0a2fbac65cc35126c8b5f6d62ae0ca10
|
| --- /dev/null
|
| +++ b/src/compiler/jump-threading.h
|
| @@ -0,0 +1,34 @@
|
| +// Copyright 2014 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.
|
| +
|
| +#ifndef V8_COMPILER_JUMP_THREADING_H_
|
| +#define V8_COMPILER_JUMP_THREADING_H_
|
| +
|
| +#include "src/compiler/instruction.h"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +namespace compiler {
|
| +
|
| +// Forwards jumps to empty basic blocks that end with a second jump to the
|
| +// destination of the second jump, transitively.
|
| +class JumpThreading {
|
| + public:
|
| + // Compute the forwarding map of basic blocks to their ultimate destination.
|
| + // Returns {true} if there is at least one block that is forwarded.
|
| + static bool ComputeForwarding(Zone* local_zone,
|
| + ZoneVector<BasicBlock::RpoNumber>& result,
|
| + InstructionSequence* code);
|
| +
|
| + // Rewrite the instructions to forward jumps and branches.
|
| + // May also negate some branches.
|
| + static void ApplyForwarding(ZoneVector<BasicBlock::RpoNumber>& forwarding,
|
| + InstructionSequence* code);
|
| +};
|
| +
|
| +} // namespace compiler
|
| +} // namespace internal
|
| +} // namespace v8
|
| +
|
| +#endif // V8_COMPILER_JUMP_THREADING_H
|
|
|