![]() |
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 | ( | ... | ) |