v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
tiering-manager.h
Go to the documentation of this file.
1// Copyright 2012 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_EXECUTION_TIERING_MANAGER_H_
6#define V8_EXECUTION_TIERING_MANAGER_H_
7
8#include <optional>
9
11#include "src/handles/handles.h"
13
14namespace v8 {
15namespace internal {
16
17class BytecodeArray;
18class Isolate;
19class JSFunction;
20class OptimizationDecision;
21enum class CodeKind : uint8_t;
22enum class OptimizationReason : uint8_t;
23
24void TraceManualRecompile(Tagged<JSFunction> function, CodeKind code_kind,
25 ConcurrencyMode concurrency_mode);
26
28 public:
29 explicit TieringManager(Isolate* isolate) : isolate_(isolate) {}
30
31 void OnInterruptTick(DirectHandle<JSFunction> function, CodeKind code_kind);
32
34
35 // After this request, the next JumpLoop will perform OSR.
37
38 // For use when a JSFunction is available.
39 static int InterruptBudgetFor(
40 Isolate* isolate, Tagged<JSFunction> function,
41 std::optional<CodeKind> override_active_tier = {});
42
44
45 private:
46 // Make the decision whether to optimize the given function, and mark it for
47 // optimization if the decision was 'yes'.
48 // This function is also responsible for bumping the OSR urgency.
49 void MaybeOptimizeFrame(Tagged<JSFunction> function, CodeKind code_kind);
50
51 // After next tick indicates whether we've precremented the ticks before
52 // calling this function, or whether we're pretending that we already got the
53 // tick.
54 OptimizationDecision ShouldOptimize(Tagged<FeedbackVector> feedback_vector,
55 CodeKind code_kind);
56 void Optimize(Tagged<JSFunction> function, OptimizationDecision decision);
58
60 public:
62
63 private:
65 };
66
68};
69
70} // namespace internal
71} // namespace v8
72
73#endif // V8_EXECUTION_TIERING_MANAGER_H_
void RequestOsrAtNextOpportunity(Tagged< JSFunction > function)
void Baseline(Tagged< JSFunction > function, OptimizationReason reason)
void MaybeOptimizeFrame(Tagged< JSFunction > function, CodeKind code_kind)
OptimizationDecision ShouldOptimize(Tagged< FeedbackVector > feedback_vector, CodeKind code_kind)
void NotifyICChanged(Tagged< FeedbackVector > vector)
TieringManager(Isolate *isolate)
static int InterruptBudgetFor(Isolate *isolate, Tagged< JSFunction > function, std::optional< CodeKind > override_active_tier={})
void Optimize(Tagged< JSFunction > function, OptimizationDecision decision)
void OnInterruptTick(DirectHandle< JSFunction > function, CodeKind code_kind)
void MarkForTurboFanOptimization(Tagged< JSFunction > function)
Tagged(T object) -> Tagged< T >
void TraceManualRecompile(Tagged< JSFunction > function, CodeKind code_kind, ConcurrencyMode concurrency_mode)
#define V8_NODISCARD
Definition v8config.h:693