/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
deps/v8/src/codegen/define-code-stub-assembler-macros.inc
92 строки
4 KB
Michaël Zasso
deps: update V8 to 14.6.202.33
24 апр 2026, 19:01
Не верифицирован
24 апр 2026, 19:01
f1e0b83
Код
Авторство
О чём код?
// Copyright 2024 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. // PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD #ifdef V8_CODEGEN_CODE_STUB_ASSEMBLER_MACROS_DEFINED #error \ "Assembler macros already defined. Did you forget to #include \"src/codegen/undef-code-stub-assembler-macros.inc\" in a previous file?" #endif #define V8_CODEGEN_CODE_STUB_ASSEMBLER_MACROS_DEFINED 1 #ifdef DEBUG #define CSA_CHECK(csa, x) (csa)->Check([&]() -> TNode<BoolT> { return x; }, #x) #define CSA_CHECK_AT(csa, loc, x) \ (csa)->Check([&]() -> TNode<BoolT> { return x; }, #x, {}, loc) #else #define CSA_CHECK(csa, x) (csa)->FastCheck(x) #define CSA_CHECK_AT(csa, loc, x) (csa)->FastCheck(x) #endif // This is a check that always calls into the runtime if it aborts. // This also exits silently when --hole-fuzzing is enabled. #define CSA_HOLE_SECURITY_CHECK(csa, x) \ (csa)->Check([&]() -> TNode<BoolT> { return x; }, #x) #ifdef DEBUG // CSA_DCHECK_ARGS generates an // std::initializer_list<CodeStubAssembler::ExtraNode> from __VA_ARGS__. It // currently supports between 0 and 2 arguments. #define CSA_DCHECK_0_ARGS(...) {} #define CSA_DCHECK_1_ARG(a, ...) {{a, #a}} #define CSA_DCHECK_2_ARGS(a, b, ...) {{a, #a}, {b, #b}} #define SWITCH_CSA_DCHECK_ARGS(a, b, FUNC, ...) FUNC(a, b) #define CSA_DCHECK_ARGS(...) \ SWITCH_CSA_DCHECK_ARGS(__VA_ARGS__ __VA_OPT__(, ) CSA_DCHECK_2_ARGS, \ CSA_DCHECK_1_ARG, CSA_DCHECK_0_ARGS) // CSA_DCHECK(csa, <condition>, <extra values to print...>) #define CSA_DCHECK(csa, condition_node, ...) \ (csa)->Dcheck(condition_node, #condition_node, CSA_DCHECK_ARGS(__VA_ARGS__)) #define CSA_DCHECK_AT(csa, loc, condition_node, ...) \ (csa)->Dcheck(condition_node, #condition_node, CSA_DCHECK_ARGS(__VA_ARGS__), loc) #define CSA_DCHECK_JS_ARGC_EQ(csa, expected) \ (csa)->Dcheck( \ [&]() -> TNode<BoolT> { \ const TNode<Word32T> argc = (csa)->UncheckedParameter<Word32T>( \ Descriptor::kJSActualArgumentsCount); \ return (csa)->Word32Equal( \ argc, (csa)->Int32Constant(i::JSParameterCount(expected))); \ }, \ "argc == " #expected, \ {{SmiFromInt32((csa)->UncheckedParameter<Int32T>( \ Descriptor::kJSActualArgumentsCount)), \ "argc"}}) #define CSA_DEBUG_INFO(name) \ { #name, __FILE__, __LINE__ } #define BIND(label) Bind(label, CSA_DEBUG_INFO(label)) #define TYPED_VARIABLE_DEF(type, name, ...) \ TVariable<UNPAREN(type)> name(CSA_DEBUG_INFO(name), __VA_ARGS__) #define TYPED_VARIABLE_CONSTRUCTOR(name, ...) \ name(CSA_DEBUG_INFO(name), __VA_ARGS__) #else // DEBUG #define CSA_DCHECK(csa, ...) ((void)0) #define CSA_DCHECK_AT(csa, ...) ((void)0) #define CSA_DCHECK_JS_ARGC_EQ(csa, expected) ((void)0) #define BIND(label) Bind(label) #define TYPED_VARIABLE_DEF(type, name, ...) TVariable<UNPAREN(type)> name(__VA_ARGS__) #define TYPED_VARIABLE_CONSTRUCTOR(name, ...) name(__VA_ARGS__) #endif // DEBUG #define TVARIABLE(...) EXPAND(TYPED_VARIABLE_DEF(__VA_ARGS__, this)) #define TVARIABLE_CONSTRUCTOR(...) \ EXPAND(TYPED_VARIABLE_CONSTRUCTOR(__VA_ARGS__, this)) #ifdef ENABLE_SLOW_DCHECKS #define CSA_SLOW_DCHECK(csa, ...) \ if (v8_flags.enable_slow_asserts) { \ CSA_DCHECK(csa, __VA_ARGS__); \ } #else #define CSA_SLOW_DCHECK(csa, ...) ((void)0) #endif // Similar to SBXCHECK in C++. #define CSA_SBXCHECK(csa, ...) CSA_CHECK(csa, __VA_ARGS__)