5#ifndef V8_OBJECTS_CODE_KIND_H_
6#define V8_OBJECTS_CODE_KIND_H_
18#define CODE_KIND_LIST(V) \
24 V(WASM_TO_CAPI_FUNCTION) \
25 V(WASM_TO_JS_FUNCTION) \
26 V(JS_TO_WASM_FUNCTION) \
28 V(INTERPRETED_FUNCTION) \
34#define DEFINE_CODE_KIND_ENUM(name) name,
36#undef DEFINE_CODE_KIND_ENUM
38static_assert(CodeKind::INTERPRETED_FUNCTION < CodeKind::BASELINE);
39static_assert(CodeKind::BASELINE < CodeKind::TURBOFAN_JS);
45static_assert(kCodeKindCount <= std::numeric_limits<uint8_t>::max());
52 return kind == CodeKind::INTERPRETED_FUNCTION;
56 return kind == CodeKind::BASELINE;
60 static_assert(
static_cast<int>(CodeKind::INTERPRETED_FUNCTION) + 1 ==
61 static_cast<int>(CodeKind::BASELINE));
67 static_assert(
static_cast<int>(CodeKind::MAGLEV) + 1 ==
68 static_cast<int>(CodeKind::TURBOFAN_JS));
73 static_assert(
static_cast<int>(CodeKind::BASELINE) + 1 ==
74 static_cast<int>(CodeKind::MAGLEV));
76 CodeKind::TURBOFAN_JS);
85#if V8_ENABLE_WEBASSEMBLY
86 || (
kind == CodeKind::WASM_FUNCTION &&
v8_flags.wasm_deopt)
92 return kind == CodeKind::TURBOFAN_JS ||
kind == CodeKind::MAGLEV;
102 return kind == CodeKind::MAGLEV ||
kind == CodeKind::TURBOFAN_JS;
114 return kind == CodeKind::BASELINE;
121 kind == CodeKind::BYTECODE_HANDLER ||
kind == CodeKind::FOR_TESTING;
129#define V(name) name = 1 << static_cast<int>(CodeKind::name),
136#define V(name) kind == CodeKind::name ? CodeKindFlag::name:
146 CodeKindFlag::INTERPRETED_FUNCTION | CodeKindFlag::BASELINE |
147 CodeKindFlag::MAGLEV | CodeKindFlag::TURBOFAN_JS};
149 CodeKindFlag::MAGLEV | CodeKindFlag::TURBOFAN_JS};
#define DEFINE_OPERATORS_FOR_FLAGS(Type)
#define CODE_KIND_LIST(V)
constexpr bool IsInRange(T value, U lower_limit, U higher_limit)
constexpr bool CodeKindCanOSR(CodeKind kind)
constexpr bool CodeKindIsOptimizedJSFunction(CodeKind kind)
constexpr int kBitsPerByte
static constexpr int kCodeKindCount
const char * CodeKindToMarker(CodeKind kind, bool context_specialized)
const char * CodeKindToString(CodeKind kind)
constexpr bool CodeKindCanTierUp(CodeKind kind)
constexpr bool CodeKindIsStoredInOptimizedCodeCache(CodeKind kind)
constexpr bool CodeKindIsInterpretedJSFunction(CodeKind kind)
CodeKind CodeKindForTopTier()
constexpr CodeKindFlag CodeKindToCodeKindFlag(CodeKind kind)
constexpr bool CodeKindIsBuiltinOrJSFunction(CodeKind kind)
constexpr bool CodeKindMayLackSourcePositionTable(CodeKind kind)
constexpr bool CodeKindIsUnoptimizedJSFunction(CodeKind kind)
static constexpr CodeKinds kOptimizedJSFunctionCodeKindsMask
DEFINE_CODE_KIND_ENUM(name)
constexpr bool CodeKindUsesBytecodeOrInterpreterData(CodeKind kind)
static constexpr CodeKinds kJSFunctionCodeKindsMask
V8_EXPORT_PRIVATE FlagValues v8_flags
constexpr bool CodeKindIsJSFunction(CodeKind kind)
constexpr bool CodeKindIsBaselinedJSFunction(CodeKind kind)
constexpr bool CodeKindUsesDeoptimizationData(CodeKind kind)
constexpr bool CodeKindUsesBytecodeOffsetTable(CodeKind kind)
constexpr bool CodeKindCanDeoptimize(CodeKind kind)