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