V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
jump-threading.h
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_COMPILER_BACKEND_JUMP_THREADING_H_
6 #define V8_COMPILER_BACKEND_JUMP_THREADING_H_
7 
8 #include "src/compiler/backend/instruction.h"
9 
10 namespace v8 {
11 namespace internal {
12 namespace compiler {
13 
14 // Forwards jumps to empty basic blocks that end with a second jump to the
15 // destination of the second jump, transitively.
17  public:
18  // Compute the forwarding map of basic blocks to their ultimate destination.
19  // Returns {true} if there is at least one block that is forwarded.
20  static bool ComputeForwarding(Zone* local_zone, ZoneVector<RpoNumber>& result,
21  InstructionSequence* code, bool frame_at_start);
22 
23  // Rewrite the instructions to forward jumps and branches.
24  // May also negate some branches.
25  static void ApplyForwarding(Zone* local_zone,
26  ZoneVector<RpoNumber>& forwarding,
27  InstructionSequence* code);
28 };
29 
30 } // namespace compiler
31 } // namespace internal
32 } // namespace v8
33 
34 #endif // V8_COMPILER_BACKEND_JUMP_THREADING_H_
Definition: libplatform.h:13