![]() |
v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
|
#include <implementation-visitor.h>
Classes | |
struct | BindingsManagersScope |
class | BreakContinueActivator |
class | MacroInliningScope |
class | StackScope |
Private Member Functions | |
std::optional< Block * > | GetCatchBlock () |
void | GenerateCatchBlock (std::optional< Block * > catch_block) |
std::optional< Binding< LocalValue > * > | TryLookupLocalValue (const std::string &name) |
std::optional< Binding< LocalLabel > * > | TryLookupLabel (const std::string &name) |
Binding< LocalLabel > * | LookupLabel (const std::string &name) |
Block * | LookupSimpleLabel (const std::string &name) |
template<class Container > | |
Callable * | LookupCallable (const QualifiedName &name, const Container &declaration_container, const TypeVector &types, const std::vector< Binding< LocalLabel > * > &labels, const TypeVector &specialization_types, bool silence_errors=false) |
bool | TestLookupCallable (const QualifiedName &name, const TypeVector ¶meter_types) |
template<class Container > | |
Callable * | LookupCallable (const QualifiedName &name, const Container &declaration_container, const Arguments &arguments, const TypeVector &specialization_types) |
Method * | LookupMethod (const std::string &name, const AggregateType *receiver_type, const Arguments &arguments, const TypeVector &specialization_types) |
TypeArgumentInference | InferSpecializationTypes (GenericCallable *generic, const TypeVector &explicit_specialization_types, const TypeVector &explicit_arguments) |
const Type * | GetCommonType (const Type *left, const Type *right) |
VisitResult | GenerateCopy (const VisitResult &to_copy) |
void | GenerateAssignToLocation (const LocationReference &reference, const VisitResult &assignment_value) |
void | AddCallParameter (Callable *callable, VisitResult parameter, const Type *parameter_type, std::vector< VisitResult > *converted_arguments, StackRange *argument_range, std::vector< std::string > *constexpr_arguments, bool inline_macro) |
VisitResult | GenerateCall (Callable *callable, std::optional< LocationReference > this_parameter, Arguments parameters, const TypeVector &specialization_types={}, bool tail_call=false) |
VisitResult | GenerateCall (const QualifiedName &callable_name, Arguments parameters, const TypeVector &specialization_types={}, bool tail_call=false) |
VisitResult | GenerateCall (std::string callable_name, Arguments parameters, const TypeVector &specialization_types={}, bool tail_call=false) |
VisitResult | GeneratePointerCall (Expression *callee, const Arguments ¶meters, bool tail_call) |
void | GenerateBranch (const VisitResult &condition, Block *true_block, Block *false_block) |
VisitResult | GenerateBoolConstant (bool constant) |
void | GenerateExpressionBranch (Expression *expression, Block *true_block, Block *false_block) |
cpp::Function | GenerateMacroFunctionDeclaration (Macro *macro) |
cpp::Function | GenerateFunction (cpp::Class *owner, const std::string &name, const Signature &signature, const NameVector ¶meter_names, bool pass_code_assembler_state=true, std::vector< std::string > *generated_parameter_names=nullptr) |
VisitResult | GenerateImplicitConvert (const Type *destination_type, VisitResult source) |
StackRange | GenerateLabelGoto (LocalLabel *label, std::optional< StackRange > arguments={}) |
VisitResult | GenerateSetBitField (const Type *bitfield_struct_type, const BitField &bitfield, VisitResult bitfield_struct, VisitResult value, bool starts_as_zero=false) |
std::vector< Binding< LocalLabel > * > | LabelsFromIdentifiers (const std::vector< Identifier * > &names) |
StackRange | LowerParameter (const Type *type, const std::string ¶meter_name, Stack< std::string > *lowered_parameters) |
void | LowerLabelParameter (const Type *type, const std::string ¶meter_name, std::vector< std::string > *lowered_parameters) |
std::string | ExternalLabelName (const std::string &label_name) |
std::string | ExternalLabelParameterName (const std::string &label_name, size_t i) |
std::string | ExternalParameterName (const std::string &name) |
std::ostream & | csa_ccfile () |
std::ostream & | csa_headerfile () |
CfgAssembler & | assembler () |
void | SetReturnValue (VisitResult return_value) |
VisitResult | GetAndClearReturnValue () |
void | WriteFile (const std::string &file, const std::string &content) |
const Identifier * | TryGetSourceForBitfieldExpression (const Expression *expr) const |
void | PropagateBitfieldMark (const Expression *original, const Expression *derived) |
Private Attributes | |
std::optional< CfgAssembler > | assembler_ |
NullOStream | null_stream_ |
bool | is_dry_run_ |
std::unordered_map< const Expression *, const Identifier * > | bitfield_expressions_ |
std::unordered_set< const Macro * > | inlining_macros_ |
std::stringstream | debug_macros_cc_ |
std::stringstream | debug_macros_h_ |
OutputType | output_type_ = OutputType::kCSA |
Definition at line 449 of file implementation-visitor.h.
|
private |
Definition at line 2734 of file implementation-visitor.cc.
|
inlineprivate |
Definition at line 828 of file implementation-visitor.h.
void v8::internal::torque::ImplementationVisitor::BeginDebugMacrosFile | ( | ) |
Definition at line 174 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::BeginGeneratedFiles | ( | ) |
|
inline |
|
inlineprivate |
Definition at line 797 of file implementation-visitor.h.
|
inlineprivate |
Definition at line 812 of file implementation-visitor.h.
v8::internal::torque::ImplementationVisitor::DECLARE_CONTEXTUAL_VARIABLE | ( | CurrentCallable | , |
Callable * | ) |
v8::internal::torque::ImplementationVisitor::DECLARE_CONTEXTUAL_VARIABLE | ( | CurrentFileStreams | , |
GlobalContext::PerFileStreams * | ) |
v8::internal::torque::ImplementationVisitor::DECLARE_CONTEXTUAL_VARIABLE | ( | CurrentReturnValue | , |
std::optional< VisitResult > | ) |
v8::internal::torque::ImplementationVisitor::DECLARE_CONTEXTUAL_VARIABLE | ( | LabelBindingsManager | , |
BindingsManager< LocalLabel > | ) |
v8::internal::torque::ImplementationVisitor::DECLARE_CONTEXTUAL_VARIABLE | ( | ValueBindingsManager | , |
BindingsManager< LocalValue > | ) |
void v8::internal::torque::ImplementationVisitor::EndDebugMacrosFile | ( | ) |
Definition at line 205 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::EndGeneratedFiles | ( | ) |
|
private |
Definition at line 3470 of file implementation-visitor.cc.
|
private |
Definition at line 3475 of file implementation-visitor.cc.
|
private |
Definition at line 3480 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::GenerateArrayLength | ( | const ClassType * | class_type, |
const InitializerResults & | initializer_results, | ||
const Field & | field ) |
Definition at line 1608 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::GenerateArrayLength | ( | Expression * | array_length, |
Namespace * | nspace, | ||
const std::map< std::string, LocalValue > & | bindings ) |
Definition at line 1555 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::GenerateArrayLength | ( | VisitResult | object, |
const Field & | field ) |
Definition at line 1575 of file implementation-visitor.cc.
|
private |
Definition at line 2600 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateBitFields | ( | const std::string & | output_directory | ) |
Definition at line 3965 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateBodyDescriptors | ( | const std::string & | output_directory | ) |
Definition at line 5141 of file implementation-visitor.cc.
|
private |
Definition at line 3364 of file implementation-visitor.cc.
|
private |
Definition at line 3356 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateBuiltinDefinitionsAndInterfaceDescriptors | ( | const std::string & | output_directory | ) |
Definition at line 3624 of file implementation-visitor.cc.
|
private |
Definition at line 2778 of file implementation-visitor.cc.
|
private |
Definition at line 3246 of file implementation-visitor.cc.
|
inlineprivate |
Definition at line 747 of file implementation-visitor.h.
|
private |
Definition at line 3510 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateClassDebugReaders | ( | const std::string & | output_directory | ) |
Definition at line 523 of file class-debug-reader-generator.cc.
void v8::internal::torque::ImplementationVisitor::GenerateClassDefinitions | ( | const std::string & | output_directory | ) |
Definition at line 4829 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateClassVerifiers | ( | const std::string & | output_directory | ) |
Definition at line 5364 of file implementation-visitor.cc.
|
private |
Definition at line 2207 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateCSATypes | ( | const std::string & | output_directory | ) |
Definition at line 5564 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateEnumVerifiers | ( | const std::string & | output_directory | ) |
Definition at line 5441 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateExportedMacrosAssembler | ( | const std::string & | output_directory | ) |
Definition at line 5483 of file implementation-visitor.cc.
|
private |
Definition at line 3370 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::GenerateFetchFromLocation | ( | const LocationReference & | reference | ) |
Definition at line 2548 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GenerateFieldAccess | ( | LocationReference | reference, |
const std::string & | fieldname, | ||
bool | ignore_stuct_field_constness = false, | ||
std::optional< SourcePosition > | pos = {} ) |
Definition at line 2310 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GenerateFieldReference | ( | VisitResult | object, |
const Field & | field, | ||
const ClassType * | class_type, | ||
bool | treat_optional_as_indexed = false ) |
Definition at line 1474 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GenerateFieldReferenceForInit | ( | VisitResult | object, |
const Field & | field, | ||
const LayoutForInitialization & | layout ) |
Definition at line 1504 of file implementation-visitor.cc.
|
private |
Definition at line 1884 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateImplementation | ( | const std::string & | dir | ) |
Definition at line 1833 of file implementation-visitor.cc.
|
private |
Definition at line 3380 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateInstanceTypes | ( | const std::string & | output_directory | ) |
Definition at line 374 of file instance-type-generator.cc.
|
private |
Definition at line 3412 of file implementation-visitor.cc.
LayoutForInitialization v8::internal::torque::ImplementationVisitor::GenerateLayoutForInitialization | ( | const ClassType * | class_type, |
const InitializerResults & | initializer_results ) |
Definition at line 1631 of file implementation-visitor.cc.
|
private |
Definition at line 1873 of file implementation-visitor.cc.
|
private |
Definition at line 2681 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GeneratePrintDefinitions | ( | const std::string & | output_directory | ) |
Definition at line 5070 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GenerateReferenceToItemInHeapSlice | ( | LocationReference | slice, |
VisitResult | index ) |
Definition at line 2439 of file implementation-visitor.cc.
|
private |
Definition at line 2275 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::GenerateVisitorLists | ( | const std::string & | output_directory | ) |
Definition at line 3926 of file implementation-visitor.cc.
|
inlineprivate |
Definition at line 837 of file implementation-visitor.h.
VisitResult v8::internal::torque::ImplementationVisitor::GetBuiltinCode | ( | Builtin * | builtin | ) |
Definition at line 1026 of file implementation-visitor.cc.
|
private |
Definition at line 3502 of file implementation-visitor.cc.
|
private |
Definition at line 2193 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GetLocationReference | ( | DereferenceExpression * | expr | ) |
Definition at line 2537 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GetLocationReference | ( | ElementAccessExpression * | expr | ) |
Definition at line 2427 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GetLocationReference | ( | Expression * | location | ) |
Definition at line 2285 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GetLocationReference | ( | FieldAccessExpression * | expr | ) |
Definition at line 2304 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::GetLocationReference | ( | IdentifierExpression * | expr | ) |
Definition at line 2453 of file implementation-visitor.cc.
|
private |
Definition at line 2056 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::InitializeClass | ( | const ClassType * | class_type, |
VisitResult | allocate_result, | ||
const InitializerResults & | initializer_results, | ||
const LayoutForInitialization & | layout ) |
Definition at line 1528 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::InlineMacro | ( | Macro * | macro, |
std::optional< LocationReference > | this_reference, | ||
const std::vector< VisitResult > & | arguments, | ||
const std::vector< Block * > | label_blocks ) |
Definition at line 283 of file implementation-visitor.cc.
|
private |
Definition at line 3417 of file implementation-visitor.cc.
|
private |
Definition at line 2175 of file implementation-visitor.cc.
|
private |
Definition at line 2076 of file implementation-visitor.cc.
|
private |
Definition at line 2030 of file implementation-visitor.cc.
LocationReference v8::internal::torque::ImplementationVisitor::LookupLocalValue | ( | const std::string & | name | ) |
|
private |
Definition at line 2183 of file implementation-visitor.cc.
|
private |
Definition at line 2037 of file implementation-visitor.cc.
|
private |
Definition at line 3455 of file implementation-visitor.cc.
|
private |
Definition at line 3437 of file implementation-visitor.cc.
|
inlineprivate |
|
inline |
Definition at line 612 of file implementation-visitor.h.
|
inlineprivate |
Definition at line 830 of file implementation-visitor.h.
|
private |
Definition at line 2050 of file implementation-visitor.cc.
|
inlineprivate |
Definition at line 848 of file implementation-visitor.h.
|
private |
Definition at line 2025 of file implementation-visitor.cc.
|
private |
Definition at line 2020 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | AssertStatement * | stmt | ) |
Definition at line 1259 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | AssignmentExpression * | expr | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | AssumeTypeImpossibleExpression * | expr | ) |
Definition at line 1007 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | BlockStatement * | block | ) |
Definition at line 1198 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | BreakStatement * | stmt | ) |
Definition at line 1755 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::Visit | ( | Builtin * | builtin | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | CallExpression * | expr, |
bool | is_tail = false ) |
Definition at line 3256 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | CallMethodExpression * | expr | ) |
Definition at line 3310 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | ConditionalExpression * | expr | ) |
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | ContinueStatement * | stmt | ) |
Definition at line 1765 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | DebugStatement * | stmt | ) |
Definition at line 1215 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::Visit | ( | Declarable * | delarable, |
std::optional< SourceId > | file = {} ) |
Definition at line 3577 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | Expression * | expr | ) |
Definition at line 44 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | ExpressionStatement * | stmt | ) |
Definition at line 1316 of file implementation-visitor.cc.
|
inline |
Definition at line 546 of file implementation-visitor.h.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | FieldAccessExpression * | expr | ) |
Definition at line 1045 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | FloatingPointLiteralExpression * | expr | ) |
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | ForLoopStatement * | stmt | ) |
Definition at line 1775 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | GotoStatement * | stmt | ) |
Definition at line 1056 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | IfStatement * | stmt | ) |
Definition at line 1086 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | IncrementDecrementExpression * | expr | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | IntegerLiteralExpression * | expr | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | IntrinsicCallExpression * | intrinsic | ) |
Definition at line 3345 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | LocationExpression * | expr | ) |
Definition at line 1040 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | LogicalAndExpression * | expr | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | LogicalOrExpression * | expr | ) |
void v8::internal::torque::ImplementationVisitor::Visit | ( | Method * | macro | ) |
void v8::internal::torque::ImplementationVisitor::Visit | ( | NamespaceConstant * | decl | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | NewExpression * | expr | ) |
Definition at line 1678 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | ReturnStatement * | stmt | ) |
Definition at line 1321 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | SpreadExpression * | expr | ) |
Definition at line 1827 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | StatementExpression * | expr | ) |
Definition at line 1444 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | StringLiteralExpression * | expr | ) |
Definition at line 1020 of file implementation-visitor.cc.
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | StructExpression * | decl | ) |
Definition at line 2215 of file implementation-visitor.cc.
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | TailCallStatement * | stmt | ) |
void v8::internal::torque::ImplementationVisitor::Visit | ( | TorqueMacro * | macro | ) |
VisitResult v8::internal::torque::ImplementationVisitor::Visit | ( | TryLabelExpression * | expr | ) |
Definition at line 1368 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::Visit | ( | TypeAlias * | decl | ) |
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | VarDeclarationStatement * | stmt | ) |
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | VarDeclarationStatement * | stmt, |
BlockBindings< LocalValue > * | block_bindings ) |
const Type * v8::internal::torque::ImplementationVisitor::Visit | ( | WhileStatement * | stmt | ) |
Definition at line 1175 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::VisitAllDeclarables | ( | ) |
Definition at line 3533 of file implementation-visitor.cc.
InitializerResults v8::internal::torque::ImplementationVisitor::VisitInitializerResults | ( | const ClassType * | class_type, |
const std::vector< NameAndExpression > & | expressions ) |
Definition at line 1448 of file implementation-visitor.cc.
void v8::internal::torque::ImplementationVisitor::VisitMacroCommon | ( | Macro * | macro | ) |
Definition at line 403 of file implementation-visitor.cc.
|
inlineprivate |
Definition at line 843 of file implementation-visitor.h.
|
private |
Definition at line 865 of file implementation-visitor.h.
|
private |
Definition at line 875 of file implementation-visitor.h.
|
private |
Definition at line 883 of file implementation-visitor.h.
|
private |
Definition at line 884 of file implementation-visitor.h.
|
private |
Definition at line 879 of file implementation-visitor.h.
|
private |
Definition at line 867 of file implementation-visitor.h.
|
private |
Definition at line 866 of file implementation-visitor.h.
|
private |
Definition at line 886 of file implementation-visitor.h.