![]() |
v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
|
#include <cstring>#include <iomanip>#include <iterator>#include <limits>#include <memory>#include <optional>#include <type_traits>#include <utility>#include "include/v8-source-location.h"#include "src/base/logging.h"#include "src/base/macros.h"#include "src/base/small-vector.h"#include "src/base/string-format.h"#include "src/base/template-utils.h"#include "src/base/vector.h"#include "src/codegen/callable.h"#include "src/codegen/code-factory.h"#include "src/codegen/heap-object-list.h"#include "src/codegen/reloc-info.h"#include "src/compiler/access-builder.h"#include "src/compiler/code-assembler.h"#include "src/compiler/common-operator.h"#include "src/compiler/globals.h"#include "src/compiler/js-heap-broker.h"#include "src/compiler/simplified-operator.h"#include "src/compiler/turboshaft/access-builder.h"#include "src/compiler/turboshaft/builtin-call-descriptors.h"#include "src/compiler/turboshaft/graph.h"#include "src/compiler/turboshaft/index.h"#include "src/compiler/turboshaft/operation-matcher.h"#include "src/compiler/turboshaft/operations.h"#include "src/compiler/turboshaft/phase.h"#include "src/compiler/turboshaft/reducer-traits.h"#include "src/compiler/turboshaft/representations.h"#include "src/compiler/turboshaft/runtime-call-descriptors.h"#include "src/compiler/turboshaft/sidetable.h"#include "src/compiler/turboshaft/snapshot-table.h"#include "src/compiler/turboshaft/uniform-reducer-adapter.h"#include "src/compiler/turboshaft/utils.h"#include "src/compiler/write-barrier-kind.h"#include "src/flags/flags.h"#include "src/logging/runtime-call-stats.h"#include "src/objects/dictionary.h"#include "src/objects/elements-kind.h"#include "src/objects/fixed-array.h"#include "src/objects/heap-number.h"#include "src/objects/oddball.h"#include "src/objects/property-cell.h"#include "src/objects/scope-info.h"#include "src/objects/swiss-name-dictionary.h"#include "src/objects/tagged.h"#include "src/objects/turbofan-types.h"#include "v8-primitive.h"#include "src/compiler/turboshaft/define-assembler-macros.inc"#include "src/compiler/turboshaft/undef-assembler-macros.inc"Go to the source code of this file.
Namespaces | |
| namespace | v8 |
| namespace | v8::internal |
| namespace | v8::internal::compiler |
| namespace | v8::internal::compiler::turboshaft |
| namespace | v8::internal::compiler::turboshaft::detail |
Concepts | |
| concept | v8::internal::compiler::turboshaft::ForeachIterable |
Macros | |
| #define | V8_COMPILER_TURBOSHAFT_ASSEMBLER_MACROS_DEFINED 1 |
| #define | TSA_DCHECK(assembler, condition) |
| #define | TSA_SLOW_DCHECK(assembler, ...) |
| #define | LIKELY(...) |
| #define | UNLIKELY(...) |
| #define | BIND(label, ...) |
| #define | BIND_LOOP(loop_label, ...) |
| #define | WHILE(...) |
| #define | FOREACH_IMPL_2(arg, iterable) |
| #define | FOREACH_IMPL_3(arg0, arg1, iterable) |
| #define | FOREACH(...) |
| #define | BREAK Asm().ControlFlowHelper_Goto(loop_exit_xx, {}) |
| #define | CONTINUE Asm().ControlFlowHelper_Goto(loop_header_xx, {}) |
| #define | GOTO(label, ...) |
| #define | GOTO_IF(cond, label, ...) |
| #define | GOTO_IF_NOT(cond, label, ...) |
| #define | FORCE_UNROLL_LOOP |
| #define | SUPPRESSED_DANGLING_ELSE_WARNING_IF(...) |
| #define | SUPPRESSED_DANGLING_ELSE_WARNING_ELSE else |
| #define | NO_SHADOW |
| #define | RE_SHADOW _Pragma("GCC diagnostic pop") |
| #define | IF(...) |
| #define | IF_NOT(...) |
| #define | ELSE |
| #define | Assert(condition) |
| #define | REDUCE(operation) |
| #define | REDUCE_INPUT_GRAPH(operation) |
| #define | __ Asm(). |
| #define | TURBOSHAFT_REDUCER_GENERIC_BOILERPLATE(Name) |
| #define | TURBOSHAFT_REDUCER_BOILERPLATE(Name) |
| #define | LABEL_BLOCK(label) |
| #define | EMIT_OP(Name) |
| #define | REDUCE_THROWING_OP(Name) |
| #define | DECL_GENERIC_BINOP(Name) |
| #define | DECL_GENERIC_UNOP(Name) |
| #define | DECL_MULTI_REP_BINOP(name, operation, rep_type, kind) |
| #define | DECL_MULTI_REP_BINOP_V(name, operation, kind, tag) |
| #define | DECL_SINGLE_REP_BINOP_V(name, operation, kind, tag) |
| #define | DECL_MULTI_REP_CHECK_BINOP_V(name, operation, kind, tag) |
| #define | DECL_SINGLE_REP_CHECK_BINOP_V(name, operation, kind, tag) |
| #define | DECL_SINGLE_REP_SHIFT_V(name, kind, tag) |
| #define | DECL_SINGLE_REP_EQUAL_V(name, tag) |
| #define | DECL_SINGLE_REP_COMPARISON_V(name, kind, tag) |
| #define | DECL_MULTI_REP_UNARY(name, operation, rep_type, kind) |
| #define | DECL_MULTI_REP_UNARY_V(name, operation, rep_type, kind, tag) |
| #define | DECL_SINGLE_REP_UNARY_V(name, operation, kind, tag) |
| #define | DECL_SINGLE_REP_BINOP_DEOPT_OVERFLOW(operation, rep_type) |
| #define | DECL_TAGGED_BITCAST(FromT, ToT, kind) |
| #define | DECL_OBJECT_IS(kind) |
| #define | CONVERT_PRIMITIVE_TO_OBJECT(name, kind, input_rep, input_interpretation) |
| #define | DECL_CHANGE_V(name, kind, assumption, from, to) |
| #define | DECL_TRY_CHANGE_V(name, kind, from, to) |
| #define | DECL_SIGNED_FLOAT_TRUNCATE(FloatBits, ResultBits) |
| #define | DECL_UNSIGNED_FLOAT_TRUNCATE(FloatBits, ResultBits) |
| #define | DEF_SELECT(Rep) |
| #define | DECL_GENERIC_BINOP_BUILTIN_CALL(Name) |
| #define | DECL_GENERIC_UNOP_BUILTIN_CALL(Name) |
| #define | BIGINT_BINOP(kind) |
| #define | BIGINT_COMPARE(kind) |
| #define | HEAP_CONSTANT_ACCESSOR(rootIndexName, rootAccessorName, name) |
| #define | HEAP_CONSTANT_ACCESSOR(rootIndexName, rootAccessorName, name) |
| #define | HEAP_CONSTANT_TEST(rootIndexName, rootAccessorName, name) |
| #define | REDUCE_OP(Op) |
Typedefs | |
| template<typename T > | |
| using | v8::internal::compiler::turboshaft::detail::index_type_for_t = typename IndexTypeFor<T>::type |
| template<typename T > | |
| using | v8::internal::compiler::turboshaft::LoopLabelFor = detail::LoopLabelForHelper<T>::type |
Functions | |
| template<typename T > | |
| v8::internal::compiler::turboshaft::Range (V< T >, V< T >, V< T >) -> Range< T > | |
| template<typename T > | |
| v8::internal::compiler::turboshaft::Range (V< T >, V< T >, typename ConstOrV< T >::constant_type) -> Range< T > | |
| template<typename T > | |
| v8::internal::compiler::turboshaft::Range (V< T >, typename ConstOrV< T >::constant_type, typename ConstOrV< T >::constant_type) -> Range< T > | |
| template<typename T > | |
| v8::internal::compiler::turboshaft::Sequence (V< T >, V< T >) -> Sequence< T > | |
| template<typename T > | |
| v8::internal::compiler::turboshaft::Sequence (V< T >, typename ConstOrV< T >::constant_type) -> Sequence< T > | |
| template<typename T > | |
| v8::internal::compiler::turboshaft::Sequence (V< T >) -> Sequence< T > | |
| template<typename... Iterables> | |
| v8::internal::compiler::turboshaft::Zip (Iterables... iterables) -> Zip< Iterables... > | |
| template<typename A , typename ConstOrValues > | |
| auto | v8::internal::compiler::turboshaft::detail::ResolveAll (A &assembler, const ConstOrValues &const_or_values) |
| bool | v8::internal::compiler::turboshaft::detail::SuppressUnusedWarning (bool b) |
| template<typename T > | |
| auto | v8::internal::compiler::turboshaft::detail::unwrap_unary_tuple (std::tuple< T > &&tpl) |
| template<typename T1 , typename T2 , typename... Rest> | |
| auto | v8::internal::compiler::turboshaft::detail::unwrap_unary_tuple (std::tuple< T1, T2, Rest... > &&tpl) |
| Handle< Code > | v8::internal::compiler::turboshaft::BuiltinCodeHandle (Builtin builtin, Isolate *isolate) |
| template<typename T > | |
| T && | v8::internal::compiler::turboshaft::detail::MakeShadowy (T &&value) |
| ShadowyOpIndex | v8::internal::compiler::turboshaft::detail::MakeShadowy (OpIndex value) |
| template<typename T > | |
| ShadowyOpIndex | v8::internal::compiler::turboshaft::detail::MakeShadowy (V< T > value) |
| ShadowyOpIndexVectorWrapper | v8::internal::compiler::turboshaft::detail::MakeShadowy (base::Vector< const OpIndex > value) |
| template<typename T > | |
| ShadowyOpIndexVectorWrapper | v8::internal::compiler::turboshaft::detail::MakeShadowy (base::Vector< const V< T > > value) |
| template<typename LoopLabel , typename Iterable , typename Iterator , typename ValueTuple , size_t... Indices> | |
| auto | v8::internal::compiler::turboshaft::detail::BuildResultTupleImpl (bool bound, Iterable &&iterable, LoopLabel &&loop_header, Label<> loop_exit, Iterator current_iterator, ValueTuple current_values, std::index_sequence< Indices... >) |
| template<typename LoopLabel , typename Iterable , typename Iterator , typename Value > | |
| auto | v8::internal::compiler::turboshaft::detail::BuildResultTuple (bool bound, Iterable &&iterable, LoopLabel &&loop_header, Label<> loop_exit, Iterator current_iterator, Value current_value) |
| template<typename LoopLabel , typename Iterable , typename Iterator , typename... Values> | |
| auto | v8::internal::compiler::turboshaft::detail::BuildResultTuple (bool bound, Iterable &&iterable, LoopLabel &&loop_header, Label<> loop_exit, Iterator current_iterator, std::tuple< Values... > current_values) |
| #define __ Asm(). |
| #define Assert | ( | condition | ) |
| #define BIGINT_BINOP | ( | kind | ) |
Definition at line 4491 of file assembler.h.
| #define BIGINT_COMPARE | ( | kind | ) |
Definition at line 4513 of file assembler.h.
| #define BIND | ( | label, | |
| ... ) |
| #define BIND_LOOP | ( | loop_label, | |
| ... ) |
| #define BREAK Asm().ControlFlowHelper_Goto(loop_exit_xx, {}) |
| #define CONTINUE Asm().ControlFlowHelper_Goto(loop_header_xx, {}) |
| #define CONVERT_PRIMITIVE_TO_OBJECT | ( | name, | |
| kind, | |||
| input_rep, | |||
| input_interpretation ) |
Definition at line 2161 of file assembler.h.
| #define DECL_CHANGE_V | ( | name, | |
| kind, | |||
| assumption, | |||
| from, | |||
| to ) |
Definition at line 2432 of file assembler.h.
| #define DECL_GENERIC_BINOP | ( | Name | ) |
Definition at line 1554 of file assembler.h.
| #define DECL_GENERIC_BINOP_BUILTIN_CALL | ( | Name | ) |
Definition at line 3514 of file assembler.h.
| #define DECL_GENERIC_UNOP | ( | Name | ) |
Definition at line 1570 of file assembler.h.
| #define DECL_GENERIC_UNOP_BUILTIN_CALL | ( | Name | ) |
Definition at line 3525 of file assembler.h.
| #define DECL_MULTI_REP_BINOP | ( | name, | |
| operation, | |||
| rep_type, | |||
| kind ) |
Definition at line 1601 of file assembler.h.
| #define DECL_MULTI_REP_BINOP_V | ( | name, | |
| operation, | |||
| kind, | |||
| tag ) |
| #define DECL_MULTI_REP_CHECK_BINOP_V | ( | name, | |
| operation, | |||
| kind, | |||
| tag ) |
Definition at line 1687 of file assembler.h.
| #define DECL_MULTI_REP_UNARY | ( | name, | |
| operation, | |||
| rep_type, | |||
| kind ) |
Definition at line 1893 of file assembler.h.
| #define DECL_MULTI_REP_UNARY_V | ( | name, | |
| operation, | |||
| rep_type, | |||
| kind, | |||
| tag ) |
| #define DECL_OBJECT_IS | ( | kind | ) |
| #define DECL_SIGNED_FLOAT_TRUNCATE | ( | FloatBits, | |
| ResultBits ) |
Definition at line 2544 of file assembler.h.
| #define DECL_SINGLE_REP_BINOP_DEOPT_OVERFLOW | ( | operation, | |
| rep_type ) |
Definition at line 2014 of file assembler.h.
| #define DECL_SINGLE_REP_BINOP_V | ( | name, | |
| operation, | |||
| kind, | |||
| tag ) |
Definition at line 1613 of file assembler.h.
| #define DECL_SINGLE_REP_CHECK_BINOP_V | ( | name, | |
| operation, | |||
| kind, | |||
| tag ) |
Definition at line 1693 of file assembler.h.
| #define DECL_SINGLE_REP_COMPARISON_V | ( | name, | |
| kind, | |||
| tag ) |
Definition at line 1829 of file assembler.h.
| #define DECL_SINGLE_REP_EQUAL_V | ( | name, | |
| tag ) |
Definition at line 1816 of file assembler.h.
| #define DECL_SINGLE_REP_SHIFT_V | ( | name, | |
| kind, | |||
| tag ) |
Definition at line 1748 of file assembler.h.
| #define DECL_SINGLE_REP_UNARY_V | ( | name, | |
| operation, | |||
| kind, | |||
| tag ) |
Definition at line 1903 of file assembler.h.
| #define DECL_TAGGED_BITCAST | ( | FromT, | |
| ToT, | |||
| kind ) |
Definition at line 2056 of file assembler.h.
| #define DECL_TRY_CHANGE_V | ( | name, | |
| kind, | |||
| from, | |||
| to ) |
Definition at line 2438 of file assembler.h.
| #define DECL_UNSIGNED_FLOAT_TRUNCATE | ( | FloatBits, | |
| ResultBits ) |
Definition at line 2565 of file assembler.h.
| #define DEF_SELECT | ( | Rep | ) |
Definition at line 3266 of file assembler.h.
| #define ELSE |
| #define EMIT_OP | ( | Name | ) |
Definition at line 1068 of file assembler.h.
| #define FORCE_UNROLL_LOOP |
| #define FOREACH | ( | ... | ) |
| #define FOREACH_IMPL_2 | ( | arg, | |
| iterable ) |
| #define FOREACH_IMPL_3 | ( | arg0, | |
| arg1, | |||
| iterable ) |
| #define GOTO_IF | ( | cond, | |
| label, | |||
| ... ) |
| #define GOTO_IF_NOT | ( | cond, | |
| label, | |||
| ... ) |
| #define HEAP_CONSTANT_ACCESSOR | ( | rootIndexName, | |
| rootAccessorName, | |||
| name ) |
Definition at line 4801 of file assembler.h.
| #define HEAP_CONSTANT_ACCESSOR | ( | rootIndexName, | |
| rootAccessorName, | |||
| name ) |
Definition at line 4801 of file assembler.h.
| #define HEAP_CONSTANT_TEST | ( | rootIndexName, | |
| rootAccessorName, | |||
| name ) |
| #define IF | ( | ... | ) |
| #define IF_NOT | ( | ... | ) |
| #define LABEL_BLOCK | ( | label | ) |
Definition at line 910 of file assembler.h.
| #define LIKELY | ( | ... | ) |
| #define NO_SHADOW |
| #define RE_SHADOW _Pragma("GCC diagnostic pop") |
| #define REDUCE | ( | operation | ) |
| #define REDUCE_INPUT_GRAPH | ( | operation | ) |
| #define REDUCE_OP | ( | Op | ) |
Definition at line 5179 of file assembler.h.
| #define REDUCE_THROWING_OP | ( | Name | ) |
Definition at line 1263 of file assembler.h.
| #define SUPPRESSED_DANGLING_ELSE_WARNING_ELSE else |
| #define SUPPRESSED_DANGLING_ELSE_WARNING_IF | ( | ... | ) |
| #define TSA_DCHECK | ( | assembler, | |
| condition ) |
| #define TSA_SLOW_DCHECK | ( | assembler, | |
| ... ) |
| #define TURBOSHAFT_REDUCER_BOILERPLATE | ( | Name | ) |
Definition at line 823 of file assembler.h.
| #define TURBOSHAFT_REDUCER_GENERIC_BOILERPLATE | ( | Name | ) |
Definition at line 813 of file assembler.h.
| #define UNLIKELY | ( | ... | ) |
| #define V8_COMPILER_TURBOSHAFT_ASSEMBLER_MACROS_DEFINED 1 |
| #define WHILE | ( | ... | ) |