webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
JSC::BytecodeGenerator Class Reference

#include <BytecodeGenerator.h>

Classes

class  CompletionRecordScope
 

Public Types

enum  ExistingVariableMode { VerifyExisting, IgnoreExisting }
 
enum  PropertyDescriptorOption { PropertyConfigurable = 1, PropertyWritable = 1 << 1, PropertyEnumerable = 1 << 2 }
 
enum  ReturnFrom { ReturnFrom::Normal, ReturnFrom::Finally }
 
enum  TDZCheckOptimization { TDZCheckOptimization::Optimize, TDZCheckOptimization::DoNotOptimize }
 
enum  NestedScopeType { NestedScopeType::IsNested, NestedScopeType::IsNotNested }
 
typedef DeclarationStacks::FunctionStack FunctionStack
 

Public Member Functions

 BytecodeGenerator (VM &, ProgramNode *, UnlinkedProgramCodeBlock *, DebuggerMode, const VariableEnvironment *)
 
 BytecodeGenerator (VM &, FunctionNode *, UnlinkedFunctionCodeBlock *, DebuggerMode, const VariableEnvironment *)
 
 BytecodeGenerator (VM &, EvalNode *, UnlinkedEvalCodeBlock *, DebuggerMode, const VariableEnvironment *)
 
 BytecodeGenerator (VM &, ModuleProgramNode *, UnlinkedModuleProgramCodeBlock *, DebuggerMode, const VariableEnvironment *)
 
 ~BytecodeGenerator ()
 
VMvm () const
 
ParserArenaparserArena () const
 
const CommonIdentifierspropertyNames () const
 
bool isConstructor () const
 
DerivedContextType derivedContextType () const
 
bool usesArrowFunction () const
 
bool needsToUpdateArrowFunctionContext () const
 
bool usesEval () const
 
bool usesThis () const
 
ConstructorKind constructorKind () const
 
SuperBinding superBinding () const
 
JSParserScriptMode scriptMode () const
 
bool isArgumentNumber (const Identifier &, int)
 
Variable variable (const Identifier &, ThisResolutionType=ThisResolutionType::Local)
 
void createVariable (const Identifier &, VarKind, SymbolTable *, ExistingVariableMode=VerifyExisting)
 
RegisterIDthisRegister ()
 
RegisterIDargumentsRegister ()
 
RegisterIDnewTarget ()
 
RegisterIDscopeRegister ()
 
RegisterIDgeneratorRegister ()
 
RegisterIDpromiseCapabilityRegister ()
 
RegisterIDnewTemporary ()
 
RegisterIDnewTemporaryOr (RegisterID *suggestion)
 
RegisterIDignoredResult ()
 
RegisterIDnewBlockScopeVariable ()
 
RegisterIDtempDestination (RegisterID *dst)
 
RegisterIDfinalDestination (RegisterID *originalDst, RegisterID *tempDst=0)
 
RegisterIDdestinationForAssignResult (RegisterID *dst)
 
RegisterIDmoveToDestinationIfNeeded (RegisterID *dst, RegisterID *src)
 
LabelScopePtr newLabelScope (LabelScope::Type, const Identifier *=0)
 
Ref< LabelnewLabel ()
 
Ref< LabelnewEmittedLabel ()
 
void emitNode (RegisterID *dst, StatementNode *n)
 
void emitNodeInTailPosition (RegisterID *dst, StatementNode *n)
 
void emitNode (StatementNode *n)
 
void emitNodeInTailPosition (StatementNode *n)
 
RegisterIDemitNode (RegisterID *dst, ExpressionNode *n)
 
RegisterIDemitNodeInTailPosition (RegisterID *dst, ExpressionNode *n)
 
RegisterIDemitNode (ExpressionNode *n)
 
RegisterIDemitNodeInTailPosition (ExpressionNode *n)
 
void emitNodeInConditionContext (ExpressionNode *n, Label &trueTarget, Label &falseTarget, FallThroughMode fallThroughMode)
 
void emitExpressionInfo (const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd)
 
ALWAYS_INLINE bool leftHandSideNeedsCopy (bool rightHasAssignments, bool rightIsPure)
 
ALWAYS_INLINE RefPtr< RegisterIDemitNodeForLeftHandSide (ExpressionNode *n, bool rightHasAssignments, bool rightIsPure)
 
void hoistSloppyModeFunctionIfNecessary (const Identifier &functionName)
 
void emitProfileType (RegisterID *registerToProfile, ProfileTypeBytecodeFlag)
 
void emitProfileType (RegisterID *registerToProfile, const Variable &, const JSTextPosition &startDivot, const JSTextPosition &endDivot)
 
void emitProfileType (RegisterID *registerToProfile, ProfileTypeBytecodeFlag, const JSTextPosition &startDivot, const JSTextPosition &endDivot)
 
void emitProfileType (RegisterID *registerToProfile, const JSTextPosition &startDivot, const JSTextPosition &endDivot)
 
void emitProfileControlFlow (int)
 
RegisterIDemitLoadArrowFunctionLexicalEnvironment (const Identifier &)
 
RegisterIDensureThis ()
 
void emitLoadThisFromArrowFunctionLexicalEnvironment ()
 
RegisterIDemitLoadNewTargetFromArrowFunctionLexicalEnvironment ()
 
RegisterIDemitLoad (RegisterID *dst, bool)
 
RegisterIDemitLoad (RegisterID *dst, const Identifier &)
 
RegisterIDemitLoad (RegisterID *dst, JSValue, SourceCodeRepresentation=SourceCodeRepresentation::Other)
 
RegisterIDemitLoadGlobalObject (RegisterID *dst)
 
RegisterIDemitUnaryOp (OpcodeID, RegisterID *dst, RegisterID *src)
 
RegisterIDemitUnaryOp (OpcodeID, RegisterID *dst, RegisterID *src, OperandTypes)
 
RegisterIDemitUnaryOpProfiled (OpcodeID, RegisterID *dst, RegisterID *src)
 
RegisterIDemitBinaryOp (OpcodeID, RegisterID *dst, RegisterID *src1, RegisterID *src2, OperandTypes)
 
RegisterIDemitEqualityOp (OpcodeID, RegisterID *dst, RegisterID *src1, RegisterID *src2)
 
RegisterIDemitUnaryNoDstOp (OpcodeID, RegisterID *src)
 
RegisterIDemitCreateThis (RegisterID *dst)
 
void emitTDZCheck (RegisterID *target)
 
bool needsTDZCheck (const Variable &)
 
void emitTDZCheckIfNecessary (const Variable &, RegisterID *target, RegisterID *scope)
 
void liftTDZCheckIfPossible (const Variable &)
 
RegisterIDemitNewObject (RegisterID *dst)
 
RegisterIDemitNewArray (RegisterID *dst, ElementNode *, unsigned length)
 
RegisterIDemitNewArrayWithSpread (RegisterID *dst, ElementNode *)
 
RegisterIDemitNewArrayWithSize (RegisterID *dst, RegisterID *length)
 
RegisterIDemitNewFunction (RegisterID *dst, FunctionMetadataNode *)
 
RegisterIDemitNewFunctionExpression (RegisterID *dst, FuncExprNode *)
 
RegisterIDemitNewDefaultConstructor (RegisterID *dst, ConstructorKind, const Identifier &name, const Identifier &ecmaName, const SourceCode &classSource)
 
RegisterIDemitNewArrowFunctionExpression (RegisterID *, ArrowFuncExprNode *)
 
RegisterIDemitNewMethodDefinition (RegisterID *dst, MethodDefinitionNode *)
 
RegisterIDemitNewRegExp (RegisterID *dst, RegExp *)
 
void emitSetFunctionNameIfNeeded (ExpressionNode *valueNode, RegisterID *value, RegisterID *name)
 
RegisterIDemitMoveLinkTimeConstant (RegisterID *dst, LinkTimeConstant)
 
RegisterIDemitMoveEmptyValue (RegisterID *dst)
 
RegisterIDemitMove (RegisterID *dst, RegisterID *src)
 
RegisterIDemitToNumber (RegisterID *dst, RegisterID *src)
 
RegisterIDemitToString (RegisterID *dst, RegisterID *src)
 
RegisterIDemitInc (RegisterID *srcDst)
 
RegisterIDemitDec (RegisterID *srcDst)
 
RegisterIDemitOverridesHasInstance (RegisterID *dst, RegisterID *constructor, RegisterID *hasInstanceValue)
 
RegisterIDemitInstanceOf (RegisterID *dst, RegisterID *value, RegisterID *basePrototype)
 
RegisterIDemitInstanceOfCustom (RegisterID *dst, RegisterID *value, RegisterID *constructor, RegisterID *hasInstanceValue)
 
RegisterIDemitTypeOf (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIn (RegisterID *dst, RegisterID *property, RegisterID *base)
 
RegisterIDemitTryGetById (RegisterID *dst, RegisterID *base, const Identifier &property)
 
RegisterIDemitGetById (RegisterID *dst, RegisterID *base, const Identifier &property)
 
RegisterIDemitGetById (RegisterID *dst, RegisterID *base, RegisterID *thisVal, const Identifier &property)
 
RegisterIDemitPutById (RegisterID *base, const Identifier &property, RegisterID *value)
 
RegisterIDemitPutById (RegisterID *base, RegisterID *thisValue, const Identifier &property, RegisterID *value)
 
RegisterIDemitDirectPutById (RegisterID *base, const Identifier &property, RegisterID *value, PropertyNode::PutType)
 
RegisterIDemitDeleteById (RegisterID *dst, RegisterID *base, const Identifier &)
 
RegisterIDemitGetByVal (RegisterID *dst, RegisterID *base, RegisterID *property)
 
RegisterIDemitGetByVal (RegisterID *dst, RegisterID *base, RegisterID *thisValue, RegisterID *property)
 
RegisterIDemitGetArgumentByVal (RegisterID *dst, RegisterID *base, RegisterID *property)
 
RegisterIDemitPutByVal (RegisterID *base, RegisterID *property, RegisterID *value)
 
RegisterIDemitPutByVal (RegisterID *base, RegisterID *thisValue, RegisterID *property, RegisterID *value)
 
RegisterIDemitDirectPutByVal (RegisterID *base, RegisterID *property, RegisterID *value)
 
RegisterIDemitDeleteByVal (RegisterID *dst, RegisterID *base, RegisterID *property)
 
RegisterIDemitPutByIndex (RegisterID *base, unsigned index, RegisterID *value)
 
RegisterIDemitAssert (RegisterID *condition, int line)
 
void emitPutGetterById (RegisterID *base, const Identifier &property, unsigned propertyDescriptorOptions, RegisterID *getter)
 
void emitPutSetterById (RegisterID *base, const Identifier &property, unsigned propertyDescriptorOptions, RegisterID *setter)
 
void emitPutGetterSetter (RegisterID *base, const Identifier &property, unsigned attributes, RegisterID *getter, RegisterID *setter)
 
void emitPutGetterByVal (RegisterID *base, RegisterID *property, unsigned propertyDescriptorOptions, RegisterID *getter)
 
void emitPutSetterByVal (RegisterID *base, RegisterID *property, unsigned propertyDescriptorOptions, RegisterID *setter)
 
RegisterIDemitGetArgument (RegisterID *dst, int32_t index)
 
void emitPutGeneratorFields (RegisterID *nextFunction)
 
ExpectedFunction expectedFunctionForIdentifier (const Identifier &)
 
RegisterIDemitCall (RegisterID *dst, RegisterID *func, ExpectedFunction, CallArguments &, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd, DebuggableCall)
 
RegisterIDemitCallInTailPosition (RegisterID *dst, RegisterID *func, ExpectedFunction, CallArguments &, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd, DebuggableCall)
 
RegisterIDemitCallEval (RegisterID *dst, RegisterID *func, CallArguments &, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd, DebuggableCall)
 
RegisterIDemitCallVarargs (RegisterID *dst, RegisterID *func, RegisterID *thisRegister, RegisterID *arguments, RegisterID *firstFreeRegister, int32_t firstVarArgOffset, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd, DebuggableCall)
 
RegisterIDemitCallVarargsInTailPosition (RegisterID *dst, RegisterID *func, RegisterID *thisRegister, RegisterID *arguments, RegisterID *firstFreeRegister, int32_t firstVarArgOffset, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd, DebuggableCall)
 
RegisterIDemitCallForwardArgumentsInTailPosition (RegisterID *dst, RegisterID *func, RegisterID *thisRegister, RegisterID *firstFreeRegister, int32_t firstVarArgOffset, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd, DebuggableCall)
 
void emitCallDefineProperty (RegisterID *newObj, RegisterID *propertyNameRegister, RegisterID *valueRegister, RegisterID *getterRegister, RegisterID *setterRegister, unsigned options, const JSTextPosition &)
 
void emitEnumeration (ThrowableExpressionData *enumerationNode, ExpressionNode *subjectNode, const std::function< void(BytecodeGenerator &, RegisterID *)> &callBack, ForOfNode *=nullptr, RegisterID *forLoopSymbolTable=nullptr)
 
RegisterIDemitGetTemplateObject (RegisterID *dst, TaggedTemplateNode *)
 
RegisterIDemitGetGlobalPrivate (RegisterID *dst, const Identifier &property)
 
RegisterIDemitReturn (RegisterID *src, ReturnFrom=ReturnFrom::Normal)
 
RegisterIDemitEnd (RegisterID *src)
 
RegisterIDemitConstruct (RegisterID *dst, RegisterID *func, ExpectedFunction, CallArguments &, const JSTextPosition &divot, const JSTextPosition &divotStart, const JSTextPosition &divotEnd)
 
RegisterIDemitStrcat (RegisterID *dst, RegisterID *src, int count)
 
void emitToPrimitive (RegisterID *dst, RegisterID *src)
 
ResolveType resolveType ()
 
RegisterIDemitResolveConstantLocal (RegisterID *dst, const Variable &)
 
RegisterIDemitResolveScope (RegisterID *dst, const Variable &)
 
RegisterIDemitGetFromScope (RegisterID *dst, RegisterID *scope, const Variable &, ResolveMode)
 
RegisterIDemitPutToScope (RegisterID *scope, const Variable &, RegisterID *value, ResolveMode, InitializationMode)
 
RegisterIDinitializeVariable (const Variable &, RegisterID *value)
 
void emitLabel (Label &)
 
void emitLoopHint ()
 
void emitJump (Label &target)
 
void emitJumpIfTrue (RegisterID *cond, Label &target)
 
void emitJumpIfFalse (RegisterID *cond, Label &target)
 
void emitJumpIfNotFunctionCall (RegisterID *cond, Label &target)
 
void emitJumpIfNotFunctionApply (RegisterID *cond, Label &target)
 
void emitEnter ()
 
void emitCheckTraps ()
 
RegisterIDemitHasIndexedProperty (RegisterID *dst, RegisterID *base, RegisterID *propertyName)
 
RegisterIDemitHasStructureProperty (RegisterID *dst, RegisterID *base, RegisterID *propertyName, RegisterID *enumerator)
 
RegisterIDemitHasGenericProperty (RegisterID *dst, RegisterID *base, RegisterID *propertyName)
 
RegisterIDemitGetPropertyEnumerator (RegisterID *dst, RegisterID *base)
 
RegisterIDemitGetEnumerableLength (RegisterID *dst, RegisterID *base)
 
RegisterIDemitGetStructurePropertyEnumerator (RegisterID *dst, RegisterID *base, RegisterID *length)
 
RegisterIDemitGetGenericPropertyEnumerator (RegisterID *dst, RegisterID *base, RegisterID *length, RegisterID *structureEnumerator)
 
RegisterIDemitEnumeratorStructurePropertyName (RegisterID *dst, RegisterID *enumerator, RegisterID *index)
 
RegisterIDemitEnumeratorGenericPropertyName (RegisterID *dst, RegisterID *enumerator, RegisterID *index)
 
RegisterIDemitToIndexString (RegisterID *dst, RegisterID *index)
 
RegisterIDemitIsCellWithType (RegisterID *dst, RegisterID *src, JSType)
 
RegisterIDemitIsJSArray (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsProxyObject (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsRegExpObject (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsMap (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsSet (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsObject (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsNumber (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsUndefined (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsEmpty (RegisterID *dst, RegisterID *src)
 
RegisterIDemitIsDerivedArray (RegisterID *dst, RegisterID *src)
 
void emitRequireObjectCoercible (RegisterID *value, const String &error)
 
RegisterIDemitIteratorNext (RegisterID *dst, RegisterID *iterator, const ThrowableExpressionData *node)
 
RegisterIDemitIteratorNextWithValue (RegisterID *dst, RegisterID *iterator, RegisterID *value, const ThrowableExpressionData *node)
 
void emitIteratorClose (RegisterID *iterator, const ThrowableExpressionData *node)
 
RegisterIDemitRestParameter (RegisterID *result, unsigned numParametersToSkip)
 
bool emitReadOnlyExceptionIfNeeded (const Variable &)
 
TryDatapushTry (Label &start, Label &handlerLabel, HandlerType)
 
void popTry (TryData *, Label &end)
 
void emitCatch (RegisterID *exceptionRegister, RegisterID *thrownValueRegister)
 
void restoreScopeRegister ()
 
void restoreScopeRegister (int lexicalScopeIndex)
 
int labelScopeDepthToLexicalScopeIndex (int labelScopeDepth)
 
void emitThrow (RegisterID *exc)
 
void emitThrowStaticError (ErrorType, RegisterID *)
 
void emitThrowStaticError (ErrorType, const Identifier &message)
 
void emitThrowReferenceError (const String &message)
 
void emitThrowTypeError (const String &message)
 
void emitThrowTypeError (const Identifier &message)
 
void emitThrowRangeError (const Identifier &message)
 
void emitThrowOutOfMemoryError ()
 
void emitPushCatchScope (VariableEnvironment &)
 
void emitPopCatchScope (VariableEnvironment &)
 
void emitGetScope ()
 
RegisterIDemitPushWithScope (RegisterID *objectScope)
 
void emitPopWithScope ()
 
void emitPutThisToArrowFunctionContextScope ()
 
void emitPutNewTargetToArrowFunctionContextScope ()
 
void emitPutDerivedConstructorToArrowFunctionContextScope ()
 
RegisterIDemitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment ()
 
void emitDebugHook (DebugHookType, const JSTextPosition &)
 
void emitDebugHook (DebugHookType, unsigned line, unsigned charOffset, unsigned lineStart)
 
void emitDebugHook (StatementNode *)
 
void emitDebugHook (ExpressionNode *)
 
void emitWillLeaveCallFrameDebugHook ()
 
RegisterIDcompletionTypeRegister () const
 
RegisterIDcompletionValueRegister () const
 
void emitSetCompletionType (CompletionType type)
 
void emitSetCompletionValue (RegisterID *reg)
 
void emitJumpIf (OpcodeID compareOpcode, RegisterID *completionTypeRegister, CompletionType, Label &jumpTarget)
 
bool emitJumpViaFinallyIfNeeded (int targetLabelScopeDepth, Label &jumpTarget)
 
bool emitReturnViaFinallyIfNeeded (RegisterID *returnRegister)
 
void emitFinallyCompletion (FinallyContext &, RegisterID *completionTypeRegister, Label &normalCompletionLabel)
 
FinallyContextpushFinallyControlFlowScope (Label &finallyLabel)
 
FinallyContext popFinallyControlFlowScope ()
 
void pushIndexedForInScope (RegisterID *local, RegisterID *index)
 
void popIndexedForInScope (RegisterID *local)
 
void pushStructureForInScope (RegisterID *local, RegisterID *index, RegisterID *property, RegisterID *enumerator)
 
void popStructureForInScope (RegisterID *local)
 
void invalidateForInContextForLocal (RegisterID *local)
 
LabelScopePtr breakTarget (const Identifier &)
 
LabelScopePtr continueTarget (const Identifier &)
 
void beginSwitch (RegisterID *, SwitchInfo::SwitchType)
 
void endSwitch (uint32_t clauseCount, const Vector< Ref< Label >, 8 > &, ExpressionNode **, Label &defaultLabel, int32_t min, int32_t range)
 
void emitYieldPoint (RegisterID *)
 
void emitGeneratorStateLabel ()
 
void emitGeneratorStateChange (int32_t state)
 
RegisterIDemitYield (RegisterID *argument)
 
RegisterIDemitDelegateYield (RegisterID *argument, ThrowableExpressionData *)
 
RegisterIDgeneratorStateRegister ()
 
RegisterIDgeneratorValueRegister ()
 
RegisterIDgeneratorResumeModeRegister ()
 
RegisterIDgeneratorFrameRegister ()
 
CodeType codeType () const
 
bool shouldEmitDebugHooks ()
 
bool isStrictMode () const
 
SourceParseMode parseMode () const
 
bool isBuiltinFunction () const
 
OpcodeID lastOpcodeID () const
 
bool isDerivedConstructorContext ()
 
bool isDerivedClassContext ()
 
bool isArrowFunction ()
 
bool isSuperUsedInInnerArrowFunction ()
 
bool isSuperCallUsedInInnerArrowFunction ()
 
bool isThisUsedInInnerArrowFunction ()
 
void pushLexicalScope (VariableEnvironmentNode *, TDZCheckOptimization, NestedScopeType=NestedScopeType::IsNotNested, RegisterID **constantSymbolTableResult=nullptr, bool shouldInitializeBlockScopedFunctions=true)
 
void popLexicalScope (VariableEnvironmentNode *)
 
void prepareLexicalScopeForNextForLoopIteration (VariableEnvironmentNode *, RegisterID *loopSymbolTable)
 
int labelScopeDepth () const
 
JSStringaddStringConstant (const Identifier &)
 
JSTemplateRegistryKeyaddTemplateRegistryKeyConstant (Ref< TemplateRegistryKey > &&)
 
Vector< UnlinkedInstruction, 0, UnsafeVectorOverflow > & instructions ()
 
RegisterIDemitThrowExpressionTooDeepException ()
 

Static Public Member Functions

template<typename... Args>
static ParserError generate (VM &vm, Args &&...args)
 

Member Typedef Documentation

◆ FunctionStack

Member Enumeration Documentation

◆ ExistingVariableMode

Enumerator
VerifyExisting 
IgnoreExisting 

◆ NestedScopeType

Enumerator
IsNested 
IsNotNested 

◆ PropertyDescriptorOption

Enumerator
PropertyConfigurable 
PropertyWritable 
PropertyEnumerable 

◆ ReturnFrom

Enumerator
Normal 
Finally 

◆ TDZCheckOptimization

Enumerator
Optimize 
DoNotOptimize 

Constructor & Destructor Documentation

◆ BytecodeGenerator() [1/4]

JSC::BytecodeGenerator::BytecodeGenerator ( VM vm,
ProgramNode programNode,
UnlinkedProgramCodeBlock codeBlock,
DebuggerMode  debuggerMode,
const VariableEnvironment parentScopeTDZVariables 
)

◆ BytecodeGenerator() [2/4]

JSC::BytecodeGenerator::BytecodeGenerator ( VM vm,
FunctionNode functionNode,
UnlinkedFunctionCodeBlock codeBlock,
DebuggerMode  debuggerMode,
const VariableEnvironment parentScopeTDZVariables 
)

◆ BytecodeGenerator() [3/4]

JSC::BytecodeGenerator::BytecodeGenerator ( VM vm,
EvalNode evalNode,
UnlinkedEvalCodeBlock codeBlock,
DebuggerMode  debuggerMode,
const VariableEnvironment parentScopeTDZVariables 
)

◆ BytecodeGenerator() [4/4]

JSC::BytecodeGenerator::BytecodeGenerator ( VM vm,
ModuleProgramNode moduleProgramNode,
UnlinkedModuleProgramCodeBlock codeBlock,
DebuggerMode  debuggerMode,
const VariableEnvironment parentScopeTDZVariables 
)

◆ ~BytecodeGenerator()

JSC::BytecodeGenerator::~BytecodeGenerator ( )

Member Function Documentation

◆ addStringConstant()

JSString * JSC::BytecodeGenerator::addStringConstant ( const Identifier identifier)

◆ addTemplateRegistryKeyConstant()

JSTemplateRegistryKey * JSC::BytecodeGenerator::addTemplateRegistryKeyConstant ( Ref< TemplateRegistryKey > &&  templateRegistryKey)

◆ argumentsRegister()

RegisterID* JSC::BytecodeGenerator::argumentsRegister ( )
inline

◆ beginSwitch()

void JSC::BytecodeGenerator::beginSwitch ( RegisterID scrutineeRegister,
SwitchInfo::SwitchType  type 
)

◆ breakTarget()

LabelScopePtr JSC::BytecodeGenerator::breakTarget ( const Identifier name)

◆ codeType()

CodeType JSC::BytecodeGenerator::codeType ( ) const
inline

◆ completionTypeRegister()

RegisterID* JSC::BytecodeGenerator::completionTypeRegister ( ) const
inline

◆ completionValueRegister()

RegisterID* JSC::BytecodeGenerator::completionValueRegister ( ) const
inline

◆ constructorKind()

ConstructorKind JSC::BytecodeGenerator::constructorKind ( ) const
inline

◆ continueTarget()

LabelScopePtr JSC::BytecodeGenerator::continueTarget ( const Identifier name)

◆ createVariable()

void JSC::BytecodeGenerator::createVariable ( const Identifier property,
VarKind  varKind,
SymbolTable symbolTable,
ExistingVariableMode  existingVariableMode = VerifyExisting 
)

◆ derivedContextType()

DerivedContextType JSC::BytecodeGenerator::derivedContextType ( ) const
inline

◆ destinationForAssignResult()

RegisterID* JSC::BytecodeGenerator::destinationForAssignResult ( RegisterID dst)
inline

◆ emitAssert()

RegisterID * JSC::BytecodeGenerator::emitAssert ( RegisterID condition,
int  line 
)

◆ emitBinaryOp()

RegisterID * JSC::BytecodeGenerator::emitBinaryOp ( OpcodeID  opcodeID,
RegisterID dst,
RegisterID src1,
RegisterID src2,
OperandTypes  types 
)

◆ emitCall()

RegisterID * JSC::BytecodeGenerator::emitCall ( RegisterID dst,
RegisterID func,
ExpectedFunction  expectedFunction,
CallArguments callArguments,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd,
DebuggableCall  debuggableCall 
)

◆ emitCallDefineProperty()

void JSC::BytecodeGenerator::emitCallDefineProperty ( RegisterID newObj,
RegisterID propertyNameRegister,
RegisterID valueRegister,
RegisterID getterRegister,
RegisterID setterRegister,
unsigned  options,
const JSTextPosition position 
)

◆ emitCallEval()

RegisterID * JSC::BytecodeGenerator::emitCallEval ( RegisterID dst,
RegisterID func,
CallArguments callArguments,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd,
DebuggableCall  debuggableCall 
)

◆ emitCallForwardArgumentsInTailPosition()

RegisterID * JSC::BytecodeGenerator::emitCallForwardArgumentsInTailPosition ( RegisterID dst,
RegisterID func,
RegisterID thisRegister,
RegisterID firstFreeRegister,
int32_t  firstVarArgOffset,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd,
DebuggableCall  debuggableCall 
)

◆ emitCallInTailPosition()

RegisterID * JSC::BytecodeGenerator::emitCallInTailPosition ( RegisterID dst,
RegisterID func,
ExpectedFunction  expectedFunction,
CallArguments callArguments,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd,
DebuggableCall  debuggableCall 
)

◆ emitCallVarargs()

RegisterID * JSC::BytecodeGenerator::emitCallVarargs ( RegisterID dst,
RegisterID func,
RegisterID thisRegister,
RegisterID arguments,
RegisterID firstFreeRegister,
int32_t  firstVarArgOffset,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd,
DebuggableCall  debuggableCall 
)

◆ emitCallVarargsInTailPosition()

RegisterID * JSC::BytecodeGenerator::emitCallVarargsInTailPosition ( RegisterID dst,
RegisterID func,
RegisterID thisRegister,
RegisterID arguments,
RegisterID firstFreeRegister,
int32_t  firstVarArgOffset,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd,
DebuggableCall  debuggableCall 
)

◆ emitCatch()

void JSC::BytecodeGenerator::emitCatch ( RegisterID exceptionRegister,
RegisterID thrownValueRegister 
)

◆ emitCheckTraps()

void JSC::BytecodeGenerator::emitCheckTraps ( )

◆ emitConstruct()

RegisterID * JSC::BytecodeGenerator::emitConstruct ( RegisterID dst,
RegisterID func,
ExpectedFunction  expectedFunction,
CallArguments callArguments,
const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd 
)

◆ emitCreateThis()

RegisterID * JSC::BytecodeGenerator::emitCreateThis ( RegisterID dst)

◆ emitDebugHook() [1/4]

void JSC::BytecodeGenerator::emitDebugHook ( DebugHookType  debugHookType,
const JSTextPosition divot 
)

◆ emitDebugHook() [2/4]

void JSC::BytecodeGenerator::emitDebugHook ( DebugHookType  debugHookType,
unsigned  line,
unsigned  charOffset,
unsigned  lineStart 
)

◆ emitDebugHook() [3/4]

void JSC::BytecodeGenerator::emitDebugHook ( StatementNode statement)

◆ emitDebugHook() [4/4]

void JSC::BytecodeGenerator::emitDebugHook ( ExpressionNode expr)

◆ emitDec()

RegisterID * JSC::BytecodeGenerator::emitDec ( RegisterID srcDst)

◆ emitDelegateYield()

RegisterID * JSC::BytecodeGenerator::emitDelegateYield ( RegisterID argument,
ThrowableExpressionData node 
)

◆ emitDeleteById()

RegisterID * JSC::BytecodeGenerator::emitDeleteById ( RegisterID dst,
RegisterID base,
const Identifier property 
)

◆ emitDeleteByVal()

RegisterID * JSC::BytecodeGenerator::emitDeleteByVal ( RegisterID dst,
RegisterID base,
RegisterID property 
)

◆ emitDirectPutById()

RegisterID * JSC::BytecodeGenerator::emitDirectPutById ( RegisterID base,
const Identifier property,
RegisterID value,
PropertyNode::PutType  putType 
)

◆ emitDirectPutByVal()

RegisterID * JSC::BytecodeGenerator::emitDirectPutByVal ( RegisterID base,
RegisterID property,
RegisterID value 
)

◆ emitEnd()

RegisterID* JSC::BytecodeGenerator::emitEnd ( RegisterID src)
inline

◆ emitEnter()

void JSC::BytecodeGenerator::emitEnter ( )

◆ emitEnumeration()

void JSC::BytecodeGenerator::emitEnumeration ( ThrowableExpressionData enumerationNode,
ExpressionNode subjectNode,
const std::function< void(BytecodeGenerator &, RegisterID *)> &  callBack,
ForOfNode forLoopNode = nullptr,
RegisterID forLoopSymbolTable = nullptr 
)

◆ emitEnumeratorGenericPropertyName()

RegisterID * JSC::BytecodeGenerator::emitEnumeratorGenericPropertyName ( RegisterID dst,
RegisterID enumerator,
RegisterID index 
)

◆ emitEnumeratorStructurePropertyName()

RegisterID * JSC::BytecodeGenerator::emitEnumeratorStructurePropertyName ( RegisterID dst,
RegisterID enumerator,
RegisterID index 
)

◆ emitEqualityOp()

RegisterID * JSC::BytecodeGenerator::emitEqualityOp ( OpcodeID  opcodeID,
RegisterID dst,
RegisterID src1,
RegisterID src2 
)

◆ emitExpressionInfo()

void JSC::BytecodeGenerator::emitExpressionInfo ( const JSTextPosition divot,
const JSTextPosition divotStart,
const JSTextPosition divotEnd 
)
inline

◆ emitFinallyCompletion()

void JSC::BytecodeGenerator::emitFinallyCompletion ( FinallyContext context,
RegisterID completionTypeRegister,
Label normalCompletionLabel 
)

◆ emitGeneratorStateChange()

void JSC::BytecodeGenerator::emitGeneratorStateChange ( int32_t  state)

◆ emitGeneratorStateLabel()

void JSC::BytecodeGenerator::emitGeneratorStateLabel ( )

◆ emitGetArgument()

RegisterID * JSC::BytecodeGenerator::emitGetArgument ( RegisterID dst,
int32_t  index 
)

◆ emitGetArgumentByVal()

RegisterID* JSC::BytecodeGenerator::emitGetArgumentByVal ( RegisterID dst,
RegisterID base,
RegisterID property 
)

◆ emitGetById() [1/2]

RegisterID * JSC::BytecodeGenerator::emitGetById ( RegisterID dst,
RegisterID base,
const Identifier property 
)

◆ emitGetById() [2/2]

RegisterID * JSC::BytecodeGenerator::emitGetById ( RegisterID dst,
RegisterID base,
RegisterID thisVal,
const Identifier property 
)

◆ emitGetByVal() [1/2]

RegisterID * JSC::BytecodeGenerator::emitGetByVal ( RegisterID dst,
RegisterID base,
RegisterID property 
)

◆ emitGetByVal() [2/2]

RegisterID * JSC::BytecodeGenerator::emitGetByVal ( RegisterID dst,
RegisterID base,
RegisterID thisValue,
RegisterID property 
)

◆ emitGetEnumerableLength()

RegisterID * JSC::BytecodeGenerator::emitGetEnumerableLength ( RegisterID dst,
RegisterID base 
)

◆ emitGetFromScope()

RegisterID * JSC::BytecodeGenerator::emitGetFromScope ( RegisterID dst,
RegisterID scope,
const Variable variable,
ResolveMode  resolveMode 
)

◆ emitGetGenericPropertyEnumerator()

RegisterID* JSC::BytecodeGenerator::emitGetGenericPropertyEnumerator ( RegisterID dst,
RegisterID base,
RegisterID length,
RegisterID structureEnumerator 
)

◆ emitGetGlobalPrivate()

RegisterID * JSC::BytecodeGenerator::emitGetGlobalPrivate ( RegisterID dst,
const Identifier property 
)

◆ emitGetPropertyEnumerator()

RegisterID * JSC::BytecodeGenerator::emitGetPropertyEnumerator ( RegisterID dst,
RegisterID base 
)

◆ emitGetScope()

void JSC::BytecodeGenerator::emitGetScope ( )

◆ emitGetStructurePropertyEnumerator()

RegisterID* JSC::BytecodeGenerator::emitGetStructurePropertyEnumerator ( RegisterID dst,
RegisterID base,
RegisterID length 
)

◆ emitGetTemplateObject()

RegisterID * JSC::BytecodeGenerator::emitGetTemplateObject ( RegisterID dst,
TaggedTemplateNode taggedTemplate 
)

◆ emitHasGenericProperty()

RegisterID * JSC::BytecodeGenerator::emitHasGenericProperty ( RegisterID dst,
RegisterID base,
RegisterID propertyName 
)

◆ emitHasIndexedProperty()

RegisterID * JSC::BytecodeGenerator::emitHasIndexedProperty ( RegisterID dst,
RegisterID base,
RegisterID propertyName 
)

◆ emitHasStructureProperty()

RegisterID * JSC::BytecodeGenerator::emitHasStructureProperty ( RegisterID dst,
RegisterID base,
RegisterID propertyName,
RegisterID enumerator 
)

◆ emitIn()

RegisterID * JSC::BytecodeGenerator::emitIn ( RegisterID dst,
RegisterID property,
RegisterID base 
)

◆ emitInc()

RegisterID * JSC::BytecodeGenerator::emitInc ( RegisterID srcDst)

◆ emitInstanceOf()

RegisterID * JSC::BytecodeGenerator::emitInstanceOf ( RegisterID dst,
RegisterID value,
RegisterID basePrototype 
)

◆ emitInstanceOfCustom()

RegisterID * JSC::BytecodeGenerator::emitInstanceOfCustom ( RegisterID dst,
RegisterID value,
RegisterID constructor,
RegisterID hasInstanceValue 
)

◆ emitIsCellWithType()

RegisterID * JSC::BytecodeGenerator::emitIsCellWithType ( RegisterID dst,
RegisterID src,
JSType  type 
)

◆ emitIsDerivedArray()

RegisterID* JSC::BytecodeGenerator::emitIsDerivedArray ( RegisterID dst,
RegisterID src 
)
inline

◆ emitIsEmpty()

RegisterID * JSC::BytecodeGenerator::emitIsEmpty ( RegisterID dst,
RegisterID src 
)

◆ emitIsJSArray()

RegisterID* JSC::BytecodeGenerator::emitIsJSArray ( RegisterID dst,
RegisterID src 
)
inline

◆ emitIsMap()

RegisterID* JSC::BytecodeGenerator::emitIsMap ( RegisterID dst,
RegisterID src 
)
inline

◆ emitIsNumber()

RegisterID * JSC::BytecodeGenerator::emitIsNumber ( RegisterID dst,
RegisterID src 
)

◆ emitIsObject()

RegisterID * JSC::BytecodeGenerator::emitIsObject ( RegisterID dst,
RegisterID src 
)

◆ emitIsProxyObject()

RegisterID* JSC::BytecodeGenerator::emitIsProxyObject ( RegisterID dst,
RegisterID src 
)
inline

◆ emitIsRegExpObject()

RegisterID* JSC::BytecodeGenerator::emitIsRegExpObject ( RegisterID dst,
RegisterID src 
)
inline

◆ emitIsSet()

RegisterID* JSC::BytecodeGenerator::emitIsSet ( RegisterID dst,
RegisterID src 
)
inline

◆ emitIsUndefined()

RegisterID * JSC::BytecodeGenerator::emitIsUndefined ( RegisterID dst,
RegisterID src 
)

◆ emitIteratorClose()

void JSC::BytecodeGenerator::emitIteratorClose ( RegisterID iterator,
const ThrowableExpressionData node 
)

◆ emitIteratorNext()

RegisterID * JSC::BytecodeGenerator::emitIteratorNext ( RegisterID dst,
RegisterID iterator,
const ThrowableExpressionData node 
)

◆ emitIteratorNextWithValue()

RegisterID * JSC::BytecodeGenerator::emitIteratorNextWithValue ( RegisterID dst,
RegisterID iterator,
RegisterID value,
const ThrowableExpressionData node 
)

◆ emitJump()

void JSC::BytecodeGenerator::emitJump ( Label target)

◆ emitJumpIf()

void JSC::BytecodeGenerator::emitJumpIf ( OpcodeID  compareOpcode,
RegisterID completionTypeRegister,
CompletionType  type,
Label jumpTarget 
)

◆ emitJumpIfFalse()

void JSC::BytecodeGenerator::emitJumpIfFalse ( RegisterID cond,
Label target 
)

◆ emitJumpIfNotFunctionApply()

void JSC::BytecodeGenerator::emitJumpIfNotFunctionApply ( RegisterID cond,
Label target 
)

◆ emitJumpIfNotFunctionCall()

void JSC::BytecodeGenerator::emitJumpIfNotFunctionCall ( RegisterID cond,
Label target 
)

◆ emitJumpIfTrue()

void JSC::BytecodeGenerator::emitJumpIfTrue ( RegisterID cond,
Label target 
)

◆ emitJumpViaFinallyIfNeeded()

bool JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded ( int  targetLabelScopeDepth,
Label jumpTarget 
)

◆ emitLabel()

void JSC::BytecodeGenerator::emitLabel ( Label l0)

◆ emitLoad() [1/3]

RegisterID * JSC::BytecodeGenerator::emitLoad ( RegisterID dst,
bool  b 
)

◆ emitLoad() [2/3]

RegisterID * JSC::BytecodeGenerator::emitLoad ( RegisterID dst,
const Identifier identifier 
)

◆ emitLoad() [3/3]

RegisterID * JSC::BytecodeGenerator::emitLoad ( RegisterID dst,
JSValue  v,
SourceCodeRepresentation  sourceCodeRepresentation = SourceCodeRepresentation::Other 
)

◆ emitLoadArrowFunctionLexicalEnvironment()

RegisterID * JSC::BytecodeGenerator::emitLoadArrowFunctionLexicalEnvironment ( const Identifier identifier)

◆ emitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment()

RegisterID * JSC::BytecodeGenerator::emitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment ( )

◆ emitLoadGlobalObject()

RegisterID * JSC::BytecodeGenerator::emitLoadGlobalObject ( RegisterID dst)

◆ emitLoadNewTargetFromArrowFunctionLexicalEnvironment()

RegisterID * JSC::BytecodeGenerator::emitLoadNewTargetFromArrowFunctionLexicalEnvironment ( )

◆ emitLoadThisFromArrowFunctionLexicalEnvironment()

void JSC::BytecodeGenerator::emitLoadThisFromArrowFunctionLexicalEnvironment ( )

◆ emitLoopHint()

void JSC::BytecodeGenerator::emitLoopHint ( )

◆ emitMove()

RegisterID * JSC::BytecodeGenerator::emitMove ( RegisterID dst,
RegisterID src 
)

◆ emitMoveEmptyValue()

RegisterID * JSC::BytecodeGenerator::emitMoveEmptyValue ( RegisterID dst)

◆ emitMoveLinkTimeConstant()

RegisterID * JSC::BytecodeGenerator::emitMoveLinkTimeConstant ( RegisterID dst,
LinkTimeConstant  type 
)

◆ emitNewArray()

RegisterID * JSC::BytecodeGenerator::emitNewArray ( RegisterID dst,
ElementNode elements,
unsigned  length 
)

◆ emitNewArrayWithSize()

RegisterID * JSC::BytecodeGenerator::emitNewArrayWithSize ( RegisterID dst,
RegisterID length 
)

◆ emitNewArrayWithSpread()

RegisterID * JSC::BytecodeGenerator::emitNewArrayWithSpread ( RegisterID dst,
ElementNode elements 
)

◆ emitNewArrowFunctionExpression()

RegisterID * JSC::BytecodeGenerator::emitNewArrowFunctionExpression ( RegisterID dst,
ArrowFuncExprNode func 
)

◆ emitNewDefaultConstructor()

RegisterID * JSC::BytecodeGenerator::emitNewDefaultConstructor ( RegisterID dst,
ConstructorKind  constructorKind,
const Identifier name,
const Identifier ecmaName,
const SourceCode classSource 
)

◆ emitNewFunction()

RegisterID * JSC::BytecodeGenerator::emitNewFunction ( RegisterID dst,
FunctionMetadataNode function 
)

◆ emitNewFunctionExpression()

RegisterID * JSC::BytecodeGenerator::emitNewFunctionExpression ( RegisterID dst,
FuncExprNode func 
)

◆ emitNewMethodDefinition()

RegisterID * JSC::BytecodeGenerator::emitNewMethodDefinition ( RegisterID dst,
MethodDefinitionNode func 
)

◆ emitNewObject()

RegisterID * JSC::BytecodeGenerator::emitNewObject ( RegisterID dst)

◆ emitNewRegExp()

RegisterID * JSC::BytecodeGenerator::emitNewRegExp ( RegisterID dst,
RegExp regExp 
)

◆ emitNode() [1/4]

void JSC::BytecodeGenerator::emitNode ( RegisterID dst,
StatementNode n 
)
inline

◆ emitNode() [2/4]

void JSC::BytecodeGenerator::emitNode ( StatementNode n)
inline

◆ emitNode() [3/4]

RegisterID* JSC::BytecodeGenerator::emitNode ( RegisterID dst,
ExpressionNode n 
)
inline

◆ emitNode() [4/4]

RegisterID* JSC::BytecodeGenerator::emitNode ( ExpressionNode n)
inline

◆ emitNodeForLeftHandSide()

ALWAYS_INLINE RefPtr<RegisterID> JSC::BytecodeGenerator::emitNodeForLeftHandSide ( ExpressionNode n,
bool  rightHasAssignments,
bool  rightIsPure 
)
inline

◆ emitNodeInConditionContext()

void JSC::BytecodeGenerator::emitNodeInConditionContext ( ExpressionNode n,
Label trueTarget,
Label falseTarget,
FallThroughMode  fallThroughMode 
)
inline

◆ emitNodeInTailPosition() [1/4]

void JSC::BytecodeGenerator::emitNodeInTailPosition ( RegisterID dst,
StatementNode n 
)
inline

◆ emitNodeInTailPosition() [2/4]

void JSC::BytecodeGenerator::emitNodeInTailPosition ( StatementNode n)
inline

◆ emitNodeInTailPosition() [3/4]

RegisterID* JSC::BytecodeGenerator::emitNodeInTailPosition ( RegisterID dst,
ExpressionNode n 
)
inline

◆ emitNodeInTailPosition() [4/4]

RegisterID* JSC::BytecodeGenerator::emitNodeInTailPosition ( ExpressionNode n)
inline

◆ emitOverridesHasInstance()

RegisterID * JSC::BytecodeGenerator::emitOverridesHasInstance ( RegisterID dst,
RegisterID constructor,
RegisterID hasInstanceValue 
)

◆ emitPopCatchScope()

void JSC::BytecodeGenerator::emitPopCatchScope ( VariableEnvironment environment)

◆ emitPopWithScope()

void JSC::BytecodeGenerator::emitPopWithScope ( )

◆ emitProfileControlFlow()

void JSC::BytecodeGenerator::emitProfileControlFlow ( int  textOffset)

◆ emitProfileType() [1/4]

void JSC::BytecodeGenerator::emitProfileType ( RegisterID registerToProfile,
ProfileTypeBytecodeFlag  flag 
)

◆ emitProfileType() [2/4]

void JSC::BytecodeGenerator::emitProfileType ( RegisterID registerToProfile,
const Variable var,
const JSTextPosition startDivot,
const JSTextPosition endDivot 
)

◆ emitProfileType() [3/4]

void JSC::BytecodeGenerator::emitProfileType ( RegisterID registerToProfile,
ProfileTypeBytecodeFlag  flag,
const JSTextPosition startDivot,
const JSTextPosition endDivot 
)

◆ emitProfileType() [4/4]

void JSC::BytecodeGenerator::emitProfileType ( RegisterID registerToProfile,
const JSTextPosition startDivot,
const JSTextPosition endDivot 
)

◆ emitPushCatchScope()

void JSC::BytecodeGenerator::emitPushCatchScope ( VariableEnvironment environment)

◆ emitPushWithScope()

RegisterID * JSC::BytecodeGenerator::emitPushWithScope ( RegisterID objectScope)

◆ emitPutById() [1/2]

RegisterID * JSC::BytecodeGenerator::emitPutById ( RegisterID base,
const Identifier property,
RegisterID value 
)

◆ emitPutById() [2/2]

RegisterID * JSC::BytecodeGenerator::emitPutById ( RegisterID base,
RegisterID thisValue,
const Identifier property,
RegisterID value 
)

◆ emitPutByIndex()

RegisterID * JSC::BytecodeGenerator::emitPutByIndex ( RegisterID base,
unsigned  index,
RegisterID value 
)

◆ emitPutByVal() [1/2]

RegisterID * JSC::BytecodeGenerator::emitPutByVal ( RegisterID base,
RegisterID property,
RegisterID value 
)

◆ emitPutByVal() [2/2]

RegisterID * JSC::BytecodeGenerator::emitPutByVal ( RegisterID base,
RegisterID thisValue,
RegisterID property,
RegisterID value 
)

◆ emitPutDerivedConstructorToArrowFunctionContextScope()

void JSC::BytecodeGenerator::emitPutDerivedConstructorToArrowFunctionContextScope ( )

◆ emitPutGeneratorFields()

void JSC::BytecodeGenerator::emitPutGeneratorFields ( RegisterID nextFunction)

◆ emitPutGetterById()

void JSC::BytecodeGenerator::emitPutGetterById ( RegisterID base,
const Identifier property,
unsigned  propertyDescriptorOptions,
RegisterID getter 
)

◆ emitPutGetterByVal()

void JSC::BytecodeGenerator::emitPutGetterByVal ( RegisterID base,
RegisterID property,
unsigned  propertyDescriptorOptions,
RegisterID getter 
)

◆ emitPutGetterSetter()

void JSC::BytecodeGenerator::emitPutGetterSetter ( RegisterID base,
const Identifier property,
unsigned  attributes,
RegisterID getter,
RegisterID setter 
)

◆ emitPutNewTargetToArrowFunctionContextScope()

void JSC::BytecodeGenerator::emitPutNewTargetToArrowFunctionContextScope ( )

◆ emitPutSetterById()

void JSC::BytecodeGenerator::emitPutSetterById ( RegisterID base,
const Identifier property,
unsigned  propertyDescriptorOptions,
RegisterID setter 
)

◆ emitPutSetterByVal()

void JSC::BytecodeGenerator::emitPutSetterByVal ( RegisterID base,
RegisterID property,
unsigned  propertyDescriptorOptions,
RegisterID setter 
)

◆ emitPutThisToArrowFunctionContextScope()

void JSC::BytecodeGenerator::emitPutThisToArrowFunctionContextScope ( )

◆ emitPutToScope()

RegisterID * JSC::BytecodeGenerator::emitPutToScope ( RegisterID scope,
const Variable variable,
RegisterID value,
ResolveMode  resolveMode,
InitializationMode  initializationMode 
)

◆ emitReadOnlyExceptionIfNeeded()

bool JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded ( const Variable variable)

◆ emitRequireObjectCoercible()

void JSC::BytecodeGenerator::emitRequireObjectCoercible ( RegisterID value,
const String error 
)

◆ emitResolveConstantLocal()

RegisterID* JSC::BytecodeGenerator::emitResolveConstantLocal ( RegisterID dst,
const Variable  
)

◆ emitResolveScope()

RegisterID * JSC::BytecodeGenerator::emitResolveScope ( RegisterID dst,
const Variable variable 
)

◆ emitRestParameter()

RegisterID * JSC::BytecodeGenerator::emitRestParameter ( RegisterID result,
unsigned  numParametersToSkip 
)

◆ emitReturn()

RegisterID * JSC::BytecodeGenerator::emitReturn ( RegisterID src,
ReturnFrom  from = ReturnFrom::Normal 
)

◆ emitReturnViaFinallyIfNeeded()

bool JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded ( RegisterID returnRegister)

◆ emitSetCompletionType()

void JSC::BytecodeGenerator::emitSetCompletionType ( CompletionType  type)
inline

◆ emitSetCompletionValue()

void JSC::BytecodeGenerator::emitSetCompletionValue ( RegisterID reg)
inline

◆ emitSetFunctionNameIfNeeded()

void JSC::BytecodeGenerator::emitSetFunctionNameIfNeeded ( ExpressionNode valueNode,
RegisterID value,
RegisterID name 
)

◆ emitStrcat()

RegisterID * JSC::BytecodeGenerator::emitStrcat ( RegisterID dst,
RegisterID src,
int  count 
)

◆ emitTDZCheck()

void JSC::BytecodeGenerator::emitTDZCheck ( RegisterID target)

◆ emitTDZCheckIfNecessary()

void JSC::BytecodeGenerator::emitTDZCheckIfNecessary ( const Variable variable,
RegisterID target,
RegisterID scope 
)

◆ emitThrow()

void JSC::BytecodeGenerator::emitThrow ( RegisterID exc)
inline

◆ emitThrowExpressionTooDeepException()

RegisterID * JSC::BytecodeGenerator::emitThrowExpressionTooDeepException ( )

◆ emitThrowOutOfMemoryError()

void JSC::BytecodeGenerator::emitThrowOutOfMemoryError ( )

◆ emitThrowRangeError()

void JSC::BytecodeGenerator::emitThrowRangeError ( const Identifier message)

◆ emitThrowReferenceError()

void JSC::BytecodeGenerator::emitThrowReferenceError ( const String message)

◆ emitThrowStaticError() [1/2]

void JSC::BytecodeGenerator::emitThrowStaticError ( ErrorType  errorType,
RegisterID raw 
)

◆ emitThrowStaticError() [2/2]

void JSC::BytecodeGenerator::emitThrowStaticError ( ErrorType  errorType,
const Identifier message 
)

◆ emitThrowTypeError() [1/2]

void JSC::BytecodeGenerator::emitThrowTypeError ( const String message)

◆ emitThrowTypeError() [2/2]

void JSC::BytecodeGenerator::emitThrowTypeError ( const Identifier message)

◆ emitToIndexString()

RegisterID * JSC::BytecodeGenerator::emitToIndexString ( RegisterID dst,
RegisterID index 
)

◆ emitToNumber()

RegisterID* JSC::BytecodeGenerator::emitToNumber ( RegisterID dst,
RegisterID src 
)
inline

◆ emitToPrimitive()

void JSC::BytecodeGenerator::emitToPrimitive ( RegisterID dst,
RegisterID src 
)

◆ emitToString()

RegisterID* JSC::BytecodeGenerator::emitToString ( RegisterID dst,
RegisterID src 
)
inline

◆ emitTryGetById()

RegisterID * JSC::BytecodeGenerator::emitTryGetById ( RegisterID dst,
RegisterID base,
const Identifier property 
)

◆ emitTypeOf()

RegisterID* JSC::BytecodeGenerator::emitTypeOf ( RegisterID dst,
RegisterID src 
)
inline

◆ emitUnaryNoDstOp()

RegisterID * JSC::BytecodeGenerator::emitUnaryNoDstOp ( OpcodeID  opcodeID,
RegisterID src 
)

◆ emitUnaryOp() [1/2]

RegisterID * JSC::BytecodeGenerator::emitUnaryOp ( OpcodeID  opcodeID,
RegisterID dst,
RegisterID src 
)

◆ emitUnaryOp() [2/2]

RegisterID * JSC::BytecodeGenerator::emitUnaryOp ( OpcodeID  opcodeID,
RegisterID dst,
RegisterID src,
OperandTypes  types 
)

◆ emitUnaryOpProfiled()

RegisterID * JSC::BytecodeGenerator::emitUnaryOpProfiled ( OpcodeID  opcodeID,
RegisterID dst,
RegisterID src 
)

◆ emitWillLeaveCallFrameDebugHook()

void JSC::BytecodeGenerator::emitWillLeaveCallFrameDebugHook ( )

◆ emitYield()

RegisterID * JSC::BytecodeGenerator::emitYield ( RegisterID argument)

◆ emitYieldPoint()

void JSC::BytecodeGenerator::emitYieldPoint ( RegisterID argument)

◆ endSwitch()

void JSC::BytecodeGenerator::endSwitch ( uint32_t  clauseCount,
const Vector< Ref< Label >, 8 > &  labels,
ExpressionNode **  nodes,
Label defaultLabel,
int32_t  min,
int32_t  range 
)

◆ ensureThis()

RegisterID * JSC::BytecodeGenerator::ensureThis ( )

◆ expectedFunctionForIdentifier()

ExpectedFunction JSC::BytecodeGenerator::expectedFunctionForIdentifier ( const Identifier identifier)

◆ finalDestination()

RegisterID* JSC::BytecodeGenerator::finalDestination ( RegisterID originalDst,
RegisterID tempDst = 0 
)
inline

◆ generate()

template<typename... Args>
static ParserError JSC::BytecodeGenerator::generate ( VM vm,
Args &&...  args 
)
inlinestatic

◆ generatorFrameRegister()

RegisterID* JSC::BytecodeGenerator::generatorFrameRegister ( )
inline

◆ generatorRegister()

RegisterID* JSC::BytecodeGenerator::generatorRegister ( )
inline

◆ generatorResumeModeRegister()

RegisterID* JSC::BytecodeGenerator::generatorResumeModeRegister ( )
inline

◆ generatorStateRegister()

RegisterID* JSC::BytecodeGenerator::generatorStateRegister ( )
inline

◆ generatorValueRegister()

RegisterID* JSC::BytecodeGenerator::generatorValueRegister ( )
inline

◆ hoistSloppyModeFunctionIfNecessary()

void JSC::BytecodeGenerator::hoistSloppyModeFunctionIfNecessary ( const Identifier functionName)

◆ ignoredResult()

RegisterID* JSC::BytecodeGenerator::ignoredResult ( )
inline

◆ initializeVariable()

RegisterID * JSC::BytecodeGenerator::initializeVariable ( const Variable variable,
RegisterID value 
)

◆ instructions()

Vector<UnlinkedInstruction, 0, UnsafeVectorOverflow>& JSC::BytecodeGenerator::instructions ( )
inline

◆ invalidateForInContextForLocal()

void JSC::BytecodeGenerator::invalidateForInContextForLocal ( RegisterID local)

◆ isArgumentNumber()

bool JSC::BytecodeGenerator::isArgumentNumber ( const Identifier ident,
int  argumentNumber 
)

◆ isArrowFunction()

bool JSC::BytecodeGenerator::isArrowFunction ( )
inline

◆ isBuiltinFunction()

bool JSC::BytecodeGenerator::isBuiltinFunction ( ) const
inline

◆ isConstructor()

bool JSC::BytecodeGenerator::isConstructor ( ) const
inline

◆ isDerivedClassContext()

bool JSC::BytecodeGenerator::isDerivedClassContext ( )
inline

◆ isDerivedConstructorContext()

bool JSC::BytecodeGenerator::isDerivedConstructorContext ( )
inline

◆ isStrictMode()

bool JSC::BytecodeGenerator::isStrictMode ( ) const
inline

◆ isSuperCallUsedInInnerArrowFunction()

bool JSC::BytecodeGenerator::isSuperCallUsedInInnerArrowFunction ( )

◆ isSuperUsedInInnerArrowFunction()

bool JSC::BytecodeGenerator::isSuperUsedInInnerArrowFunction ( )

◆ isThisUsedInInnerArrowFunction()

bool JSC::BytecodeGenerator::isThisUsedInInnerArrowFunction ( )

◆ labelScopeDepth()

int JSC::BytecodeGenerator::labelScopeDepth ( ) const

◆ labelScopeDepthToLexicalScopeIndex()

int JSC::BytecodeGenerator::labelScopeDepthToLexicalScopeIndex ( int  labelScopeDepth)

◆ lastOpcodeID()

OpcodeID JSC::BytecodeGenerator::lastOpcodeID ( ) const
inline

◆ leftHandSideNeedsCopy()

ALWAYS_INLINE bool JSC::BytecodeGenerator::leftHandSideNeedsCopy ( bool  rightHasAssignments,
bool  rightIsPure 
)
inline

◆ liftTDZCheckIfPossible()

void JSC::BytecodeGenerator::liftTDZCheckIfPossible ( const Variable variable)

◆ moveToDestinationIfNeeded()

RegisterID* JSC::BytecodeGenerator::moveToDestinationIfNeeded ( RegisterID dst,
RegisterID src 
)
inline

◆ needsTDZCheck()

bool JSC::BytecodeGenerator::needsTDZCheck ( const Variable variable)

◆ needsToUpdateArrowFunctionContext()

bool JSC::BytecodeGenerator::needsToUpdateArrowFunctionContext ( ) const
inline

◆ newBlockScopeVariable()

RegisterID * JSC::BytecodeGenerator::newBlockScopeVariable ( )

◆ newEmittedLabel()

Ref< Label > JSC::BytecodeGenerator::newEmittedLabel ( )

◆ newLabel()

Ref< Label > JSC::BytecodeGenerator::newLabel ( )

◆ newLabelScope()

LabelScopePtr JSC::BytecodeGenerator::newLabelScope ( LabelScope::Type  type,
const Identifier name = 0 
)

◆ newTarget()

RegisterID* JSC::BytecodeGenerator::newTarget ( )
inline

◆ newTemporary()

RegisterID * JSC::BytecodeGenerator::newTemporary ( )

◆ newTemporaryOr()

RegisterID* JSC::BytecodeGenerator::newTemporaryOr ( RegisterID suggestion)
inline

◆ parseMode()

SourceParseMode JSC::BytecodeGenerator::parseMode ( ) const
inline

◆ parserArena()

ParserArena& JSC::BytecodeGenerator::parserArena ( ) const
inline

◆ popFinallyControlFlowScope()

FinallyContext JSC::BytecodeGenerator::popFinallyControlFlowScope ( )

◆ popIndexedForInScope()

void JSC::BytecodeGenerator::popIndexedForInScope ( RegisterID local)

◆ popLexicalScope()

void JSC::BytecodeGenerator::popLexicalScope ( VariableEnvironmentNode node)

◆ popStructureForInScope()

void JSC::BytecodeGenerator::popStructureForInScope ( RegisterID local)

◆ popTry()

void JSC::BytecodeGenerator::popTry ( TryData tryData,
Label end 
)

◆ prepareLexicalScopeForNextForLoopIteration()

void JSC::BytecodeGenerator::prepareLexicalScopeForNextForLoopIteration ( VariableEnvironmentNode node,
RegisterID loopSymbolTable 
)

◆ promiseCapabilityRegister()

RegisterID* JSC::BytecodeGenerator::promiseCapabilityRegister ( )
inline

◆ propertyNames()

const CommonIdentifiers& JSC::BytecodeGenerator::propertyNames ( ) const
inline

◆ pushFinallyControlFlowScope()

FinallyContext * JSC::BytecodeGenerator::pushFinallyControlFlowScope ( Label finallyLabel)

◆ pushIndexedForInScope()

void JSC::BytecodeGenerator::pushIndexedForInScope ( RegisterID local,
RegisterID index 
)

◆ pushLexicalScope()

void JSC::BytecodeGenerator::pushLexicalScope ( VariableEnvironmentNode node,
TDZCheckOptimization  tdzCheckOptimization,
NestedScopeType  nestedScopeType = NestedScopeType::IsNotNested,
RegisterID **  constantSymbolTableResult = nullptr,
bool  shouldInitializeBlockScopedFunctions = true 
)

◆ pushStructureForInScope()

void JSC::BytecodeGenerator::pushStructureForInScope ( RegisterID local,
RegisterID index,
RegisterID property,
RegisterID enumerator 
)

◆ pushTry()

TryData * JSC::BytecodeGenerator::pushTry ( Label start,
Label handlerLabel,
HandlerType  handlerType 
)

◆ resolveType()

ResolveType JSC::BytecodeGenerator::resolveType ( )

◆ restoreScopeRegister() [1/2]

void JSC::BytecodeGenerator::restoreScopeRegister ( )

◆ restoreScopeRegister() [2/2]

void JSC::BytecodeGenerator::restoreScopeRegister ( int  lexicalScopeIndex)

◆ scopeRegister()

RegisterID* JSC::BytecodeGenerator::scopeRegister ( )
inline

◆ scriptMode()

JSParserScriptMode JSC::BytecodeGenerator::scriptMode ( ) const
inline

◆ shouldEmitDebugHooks()

bool JSC::BytecodeGenerator::shouldEmitDebugHooks ( )
inline

◆ superBinding()

SuperBinding JSC::BytecodeGenerator::superBinding ( ) const
inline

◆ tempDestination()

RegisterID* JSC::BytecodeGenerator::tempDestination ( RegisterID dst)
inline

◆ thisRegister()

RegisterID* JSC::BytecodeGenerator::thisRegister ( )
inline

◆ usesArrowFunction()

bool JSC::BytecodeGenerator::usesArrowFunction ( ) const
inline

◆ usesEval()

bool JSC::BytecodeGenerator::usesEval ( ) const
inline

◆ usesThis()

bool JSC::BytecodeGenerator::usesThis ( ) const
inline

◆ variable()

Variable JSC::BytecodeGenerator::variable ( const Identifier property,
ThisResolutionType  thisResolutionType = ThisResolutionType::Local 
)

◆ vm()

VM* JSC::BytecodeGenerator::vm ( ) const
inline

The documentation for this class was generated from the following files: