![]() |
v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
|
#include "src/compiler/turboshaft/turbolev-graph-builder.h"
#include <limits>
#include <memory>
#include <optional>
#include <type_traits>
#include "src/base/logging.h"
#include "src/base/small-vector.h"
#include "src/base/vector.h"
#include "src/codegen/bailout-reason.h"
#include "src/codegen/optimized-compilation-info.h"
#include "src/common/globals.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/bytecode-analysis.h"
#include "src/compiler/bytecode-liveness-map.h"
#include "src/compiler/frame-states.h"
#include "src/compiler/globals.h"
#include "src/compiler/js-heap-broker.h"
#include "src/compiler/turboshaft/access-builder.h"
#include "src/compiler/turboshaft/assembler.h"
#include "src/compiler/turboshaft/graph.h"
#include "src/compiler/turboshaft/index.h"
#include "src/compiler/turboshaft/machine-optimization-reducer.h"
#include "src/compiler/turboshaft/maglev-early-lowering-reducer-inl.h"
#include "src/compiler/turboshaft/operations.h"
#include "src/compiler/turboshaft/phase.h"
#include "src/compiler/turboshaft/representations.h"
#include "src/compiler/turboshaft/required-optimization-reducer.h"
#include "src/compiler/turboshaft/sidetable.h"
#include "src/compiler/turboshaft/utils.h"
#include "src/compiler/turboshaft/value-numbering-reducer.h"
#include "src/compiler/turboshaft/variable-reducer.h"
#include "src/compiler/write-barrier-kind.h"
#include "src/deoptimizer/deoptimize-reason.h"
#include "src/handles/global-handles-inl.h"
#include "src/handles/handles.h"
#include "src/interpreter/bytecode-register.h"
#include "src/maglev/maglev-basic-block.h"
#include "src/maglev/maglev-compilation-info.h"
#include "src/maglev/maglev-compilation-unit.h"
#include "src/maglev/maglev-graph-builder.h"
#include "src/maglev/maglev-graph-labeller.h"
#include "src/maglev/maglev-graph-processor.h"
#include "src/maglev/maglev-graph-verifier.h"
#include "src/maglev/maglev-inlining.h"
#include "src/maglev/maglev-ir-inl.h"
#include "src/maglev/maglev-ir.h"
#include "src/maglev/maglev-phi-representation-selector.h"
#include "src/maglev/maglev-post-hoc-optimizations-processors.h"
#include "src/objects/elements-kind.h"
#include "src/objects/heap-object.h"
#include "src/objects/js-array-buffer.h"
#include "src/objects/map.h"
#include "src/objects/objects.h"
#include "src/objects/property-cell.h"
#include "src/zone/zone-containers.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 |
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 | GET_FRAME_STATE_MAYBE_ABORT(name, deopt_info) |
#define | BAILOUT_IF_TOO_MANY_ARGUMENTS_FOR_CALL(count) |
#define | GENERATE_AND_MAP_BUILTIN_CALL(node, builtin, frame_state, arguments, ...) |
#define | RETURN_IF_UNREACHABLE() |
#define | PROCESS_BINOP_WITH_OVERFLOW(MaglevName, TurboshaftName, minus_zero_mode) |
#define | PROCESS_FLOAT64_BINOP(MaglevName, TurboshaftName) |
#define | PROCESS_INT32_BITWISE_BINOP(Name) |
#define | PROCESS_INT32_SHIFT(MaglevName, TurboshaftName) |
#define | CASE(MathName, ExpName, EnumName) |
#define | PROCESS_GENERIC_BINOP(Name) |
#define | PROCESS_GENERIC_UNOP(Name) |
Functions | |
constexpr bool | v8::internal::compiler::turboshaft::TooManyArgumentsForCall (size_t arguments_count) |
void | v8::internal::compiler::turboshaft::PrintBytecode (PipelineData &data, maglev::MaglevCompilationInfo *compilation_info) |
void | v8::internal::compiler::turboshaft::PrintMaglevGraph (PipelineData &data, maglev::MaglevCompilationInfo *compilation_info, maglev::Graph *maglev_graph, const char *msg) |
void | v8::internal::compiler::turboshaft::RunMaglevOptimizations (PipelineData *data, maglev::MaglevCompilationInfo *compilation_info, maglev::MaglevGraphBuilder &maglev_graph_builder, maglev::Graph *maglev_graph) |
#define __ Asm(). |
#define Assert | ( | condition | ) |
#define BAILOUT_IF_TOO_MANY_ARGUMENTS_FOR_CALL | ( | count | ) |
Definition at line 431 of file turbolev-graph-builder.cc.
#define BIND | ( | label, | |
... ) |
#define BIND_LOOP | ( | loop_label, | |
... ) |
#define BREAK Asm().ControlFlowHelper_Goto(loop_exit_xx, {}) |
#define CASE | ( | MathName, | |
ExpName, | |||
EnumName ) |
#define CONTINUE Asm().ControlFlowHelper_Goto(loop_header_xx, {}) |
#define ELSE |
#define FORCE_UNROLL_LOOP |
#define FOREACH | ( | ... | ) |
#define FOREACH_IMPL_2 | ( | arg, | |
iterable ) |
#define FOREACH_IMPL_3 | ( | arg0, | |
arg1, | |||
iterable ) |
#define GENERATE_AND_MAP_BUILTIN_CALL | ( | node, | |
builtin, | |||
frame_state, | |||
arguments, | |||
... ) |
Definition at line 439 of file turbolev-graph-builder.cc.
#define GET_FRAME_STATE_MAYBE_ABORT | ( | name, | |
deopt_info ) |
Definition at line 413 of file turbolev-graph-builder.cc.
#define GOTO_IF | ( | cond, | |
label, | |||
... ) |
#define GOTO_IF_NOT | ( | cond, | |
label, | |||
... ) |
#define IF | ( | ... | ) |
#define IF_NOT | ( | ... | ) |
#define LIKELY | ( | ... | ) |
#define NO_SHADOW |
#define PROCESS_BINOP_WITH_OVERFLOW | ( | MaglevName, | |
TurboshaftName, | |||
minus_zero_mode ) |
Definition at line 3800 of file turbolev-graph-builder.cc.
#define PROCESS_FLOAT64_BINOP | ( | MaglevName, | |
TurboshaftName ) |
Definition at line 3851 of file turbolev-graph-builder.cc.
#define PROCESS_GENERIC_BINOP | ( | Name | ) |
Definition at line 4026 of file turbolev-graph-builder.cc.
#define PROCESS_GENERIC_UNOP | ( | Name | ) |
Definition at line 4040 of file turbolev-graph-builder.cc.
#define PROCESS_INT32_BITWISE_BINOP | ( | Name | ) |
Definition at line 3866 of file turbolev-graph-builder.cc.
#define PROCESS_INT32_SHIFT | ( | MaglevName, | |
TurboshaftName ) |
Definition at line 3878 of file turbolev-graph-builder.cc.
#define RE_SHADOW _Pragma("GCC diagnostic pop") |
#define REDUCE | ( | operation | ) |
#define REDUCE_INPUT_GRAPH | ( | operation | ) |
#define RETURN_IF_UNREACHABLE | ( | ) |
Definition at line 451 of file turbolev-graph-builder.cc.
#define SUPPRESSED_DANGLING_ELSE_WARNING_ELSE else |
#define SUPPRESSED_DANGLING_ELSE_WARNING_IF | ( | ... | ) |
#define TSA_DCHECK | ( | assembler, | |
condition ) |
#define TSA_SLOW_DCHECK | ( | assembler, | |
... ) |
#define UNLIKELY | ( | ... | ) |
#define V8_COMPILER_TURBOSHAFT_ASSEMBLER_MACROS_DEFINED 1 |
#define WHILE | ( | ... | ) |