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

#include <ASTBuilder.h>

Classes

struct  BinaryExprContext
 
struct  UnaryExprContext
 

Public Types

typedef ExpressionNode * Expression
 
typedef JSC::SourceElements * SourceElements
 
typedef ArgumentsNode * Arguments
 
typedef CommaNode * Comma
 
typedef PropertyNode * Property
 
typedef PropertyListNode * PropertyList
 
typedef ElementNode * ElementList
 
typedef ArgumentListNode * ArgumentsList
 
typedef TemplateExpressionListNode * TemplateExpressionList
 
typedef TemplateStringNode * TemplateString
 
typedef TemplateStringListNode * TemplateStringList
 
typedef TemplateLiteralNode * TemplateLiteral
 
typedef FunctionParameters * FormalParameterList
 
typedef FunctionMetadataNode * FunctionBody
 
typedef ClassExprNode * ClassExpression
 
typedef ModuleNameNode * ModuleName
 
typedef ImportSpecifierNode * ImportSpecifier
 
typedef ImportSpecifierListNode * ImportSpecifierList
 
typedef ExportSpecifierNode * ExportSpecifier
 
typedef ExportSpecifierListNode * ExportSpecifierList
 
typedef StatementNode * Statement
 
typedef ClauseListNode * ClauseList
 
typedef CaseClauseNode * Clause
 
typedef std::pair< ExpressionNode *, BinaryOpInfo > BinaryOperand
 
typedef DestructuringPatternNode * DestructuringPattern
 
typedef ArrayPatternNode * ArrayPattern
 
typedef ObjectPatternNode * ObjectPattern
 
typedef BindingNode * BindingPattern
 
typedef AssignmentElementNode * AssignmentElement
 

Public Member Functions

 ASTBuilder (VM *vm, ParserArena &parserArena, SourceCode *sourceCode)
 
ExpressionNode * makeBinaryNode (const JSTokenLocation &, int token, std::pair< ExpressionNode *, BinaryOpInfo >, std::pair< ExpressionNode *, BinaryOpInfo >)
 
ExpressionNode * makeFunctionCallNode (const JSTokenLocation &, ExpressionNode *func, ArgumentsNode *args, const JSTextPosition &divotStart, const JSTextPosition &divot, const JSTextPosition &divotEnd)
 
JSC::SourceElements * createSourceElements ()
 
int features () const
 
int numConstants () const
 
ExpressionNode * makeAssignNode (const JSTokenLocation &, ExpressionNode *left, Operator, ExpressionNode *right, bool leftHasAssignments, bool rightHasAssignments, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * makePrefixNode (const JSTokenLocation &, ExpressionNode *, Operator, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * makePostfixNode (const JSTokenLocation &, ExpressionNode *, Operator, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * makeTypeOfNode (const JSTokenLocation &, ExpressionNode *)
 
ExpressionNode * makeDeleteNode (const JSTokenLocation &, ExpressionNode *, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * makeNegateNode (const JSTokenLocation &, ExpressionNode *)
 
ExpressionNode * makeBitwiseNotNode (const JSTokenLocation &, ExpressionNode *)
 
ExpressionNode * makePowNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeMultNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeDivNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeModNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeAddNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeSubNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeBitXOrNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeBitAndNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeBitOrNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeLeftShiftNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeRightShiftNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * makeURightShiftNode (const JSTokenLocation &, ExpressionNode *left, ExpressionNode *right, bool rightHasAssignments)
 
ExpressionNode * createLogicalNot (const JSTokenLocation &location, ExpressionNode *expr)
 
ExpressionNode * createUnaryPlus (const JSTokenLocation &location, ExpressionNode *expr)
 
ExpressionNode * createVoid (const JSTokenLocation &location, ExpressionNode *expr)
 
ExpressionNode * createThisExpr (const JSTokenLocation &location)
 
ExpressionNode * createSuperExpr (const JSTokenLocation &location)
 
ExpressionNode * createImportExpr (const JSTokenLocation &location, ExpressionNode *expr, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * createNewTargetExpr (const JSTokenLocation location)
 
bool isNewTarget (ExpressionNode *node)
 
ExpressionNode * createResolve (const JSTokenLocation &location, const Identifier &ident, const JSTextPosition &start, const JSTextPosition &end)
 
ExpressionNode * createObjectLiteral (const JSTokenLocation &location)
 
ExpressionNode * createObjectLiteral (const JSTokenLocation &location, PropertyListNode *properties)
 
ExpressionNode * createArray (const JSTokenLocation &location, int elisions)
 
ExpressionNode * createArray (const JSTokenLocation &location, ElementNode *elems)
 
ExpressionNode * createArray (const JSTokenLocation &location, int elisions, ElementNode *elems)
 
ExpressionNode * createDoubleExpr (const JSTokenLocation &location, double d)
 
ExpressionNode * createIntegerExpr (const JSTokenLocation &location, double d)
 
ExpressionNode * createString (const JSTokenLocation &location, const Identifier *string)
 
ExpressionNode * createBoolean (const JSTokenLocation &location, bool b)
 
ExpressionNode * createNull (const JSTokenLocation &location)
 
ExpressionNode * createBracketAccess (const JSTokenLocation &location, ExpressionNode *base, ExpressionNode *property, bool propertyHasAssignments, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * createDotAccess (const JSTokenLocation &location, ExpressionNode *base, const Identifier *property, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * createSpreadExpression (const JSTokenLocation &location, ExpressionNode *expression, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
TemplateStringNode * createTemplateString (const JSTokenLocation &location, const Identifier *cooked, const Identifier *raw)
 
TemplateStringListNode * createTemplateStringList (TemplateStringNode *templateString)
 
TemplateStringListNode * createTemplateStringList (TemplateStringListNode *templateStringList, TemplateStringNode *templateString)
 
TemplateExpressionListNode * createTemplateExpressionList (ExpressionNode *expression)
 
TemplateExpressionListNode * createTemplateExpressionList (TemplateExpressionListNode *templateExpressionListNode, ExpressionNode *expression)
 
TemplateLiteralNode * createTemplateLiteral (const JSTokenLocation &location, TemplateStringListNode *templateStringList)
 
TemplateLiteralNode * createTemplateLiteral (const JSTokenLocation &location, TemplateStringListNode *templateStringList, TemplateExpressionListNode *templateExpressionList)
 
ExpressionNode * createTaggedTemplate (const JSTokenLocation &location, ExpressionNode *base, TemplateLiteralNode *templateLiteral, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * createRegExp (const JSTokenLocation &location, const Identifier &pattern, const Identifier &flags, const JSTextPosition &start)
 
ExpressionNode * createNewExpr (const JSTokenLocation &location, ExpressionNode *expr, ArgumentsNode *arguments, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ExpressionNode * createNewExpr (const JSTokenLocation &location, ExpressionNode *expr, const JSTextPosition &start, const JSTextPosition &end)
 
ExpressionNode * createConditionalExpr (const JSTokenLocation &location, ExpressionNode *condition, ExpressionNode *lhs, ExpressionNode *rhs)
 
ExpressionNode * createAssignResolve (const JSTokenLocation &location, const Identifier &ident, ExpressionNode *rhs, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end, AssignmentContext assignmentContext)
 
YieldExprNode * createYield (const JSTokenLocation &location)
 
YieldExprNode * createYield (const JSTokenLocation &location, ExpressionNode *argument, bool delegate, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
AwaitExprNode * createAwait (const JSTokenLocation &location, ExpressionNode *argument, const JSTextPosition &start, const JSTextPosition &divot, const JSTextPosition &end)
 
ClassExprNode * createClassExpr (const JSTokenLocation &location, const ParserClassInfo< ASTBuilder > &classInfo, VariableEnvironment &classEnvironment, ExpressionNode *constructor, ExpressionNode *parentClass, PropertyListNode *instanceMethods, PropertyListNode *staticMethods)
 
ExpressionNode * createFunctionExpr (const JSTokenLocation &location, const ParserFunctionInfo< ASTBuilder > &functionInfo)
 
ExpressionNode * createGeneratorFunctionBody (const JSTokenLocation &location, const ParserFunctionInfo< ASTBuilder > &functionInfo, const Identifier &name)
 
ExpressionNode * createAsyncFunctionBody (const JSTokenLocation &location, const ParserFunctionInfo< ASTBuilder > &functionInfo, SourceParseMode parseMode)
 
ExpressionNode * createMethodDefinition (const JSTokenLocation &location, const ParserFunctionInfo< ASTBuilder > &functionInfo)
 
FunctionMetadataNode * createFunctionMetadata (const JSTokenLocation &startLocation, const JSTokenLocation &endLocation, unsigned startColumn, unsigned endColumn, int functionKeywordStart, int functionNameStart, int parametersStart, bool inStrictContext, ConstructorKind constructorKind, SuperBinding superBinding, unsigned parameterCount, unsigned functionLength, SourceParseMode mode, bool isArrowFunctionBodyExpression)
 
ExpressionNode * createArrowFunctionExpr (const JSTokenLocation &location, const ParserFunctionInfo< ASTBuilder > &functionInfo)
 
NEVER_INLINE PropertyNode * createGetterOrSetterProperty (const JSTokenLocation &location, PropertyNode::Type type, bool, const Identifier *name, const ParserFunctionInfo< ASTBuilder > &functionInfo, bool isClassProperty)
 
NEVER_INLINE PropertyNode * createGetterOrSetterProperty (const JSTokenLocation &location, PropertyNode::Type type, bool, ExpressionNode *name, const ParserFunctionInfo< ASTBuilder > &functionInfo, bool isClassProperty)
 
NEVER_INLINE PropertyNode * createGetterOrSetterProperty (VM *vm, ParserArena &parserArena, const JSTokenLocation &location, PropertyNode::Type type, bool, double name, const ParserFunctionInfo< ASTBuilder > &functionInfo, bool isClassProperty)
 
ArgumentsNode * createArguments ()
 
ArgumentsNode * createArguments (ArgumentListNode *args)
 
ArgumentListNode * createArgumentsList (const JSTokenLocation &location, ExpressionNode *arg)
 
ArgumentListNode * createArgumentsList (const JSTokenLocation &location, ArgumentListNode *args, ExpressionNode *arg)
 
PropertyNode * createProperty (const Identifier *propertyName, ExpressionNode *node, PropertyNode::Type type, PropertyNode::PutType putType, bool, SuperBinding superBinding, bool isClassProperty)
 
PropertyNode * createProperty (VM *vm, ParserArena &parserArena, double propertyName, ExpressionNode *node, PropertyNode::Type type, PropertyNode::PutType putType, bool, SuperBinding superBinding, bool isClassProperty)
 
PropertyNode * createProperty (ExpressionNode *propertyName, ExpressionNode *node, PropertyNode::Type type, PropertyNode::PutType putType, bool, SuperBinding superBinding, bool isClassProperty)
 
PropertyListNode * createPropertyList (const JSTokenLocation &location, PropertyNode *property)
 
PropertyListNode * createPropertyList (const JSTokenLocation &location, PropertyNode *property, PropertyListNode *tail)
 
ElementNode * createElementList (int elisions, ExpressionNode *expr)
 
ElementNode * createElementList (ElementNode *elems, int elisions, ExpressionNode *expr)
 
ElementNode * createElementList (ArgumentListNode *elems)
 
FormalParameterList createFormalParameterList ()
 
void appendParameter (FormalParameterList list, DestructuringPattern pattern, ExpressionNode *defaultValue)
 
CaseClauseNode * createClause (ExpressionNode *expr, JSC::SourceElements *statements)
 
ClauseListNode * createClauseList (CaseClauseNode *clause)
 
ClauseListNode * createClauseList (ClauseListNode *tail, CaseClauseNode *clause)
 
StatementNode * createFuncDeclStatement (const JSTokenLocation &location, const ParserFunctionInfo< ASTBuilder > &functionInfo)
 
StatementNode * createClassDeclStatement (const JSTokenLocation &location, ClassExprNode *classExpression, const JSTextPosition &classStart, const JSTextPosition &classEnd, unsigned startLine, unsigned endLine)
 
StatementNode * createBlockStatement (const JSTokenLocation &location, JSC::SourceElements *elements, int startLine, int endLine, VariableEnvironment &lexicalVariables, DeclarationStacks::FunctionStack &&functionStack)
 
StatementNode * createExprStatement (const JSTokenLocation &location, ExpressionNode *expr, const JSTextPosition &start, int end)
 
StatementNode * createIfStatement (const JSTokenLocation &location, ExpressionNode *condition, StatementNode *trueBlock, StatementNode *falseBlock, int start, int end)
 
StatementNode * createForLoop (const JSTokenLocation &location, ExpressionNode *initializer, ExpressionNode *condition, ExpressionNode *iter, StatementNode *statements, int start, int end, VariableEnvironment &lexicalVariables)
 
StatementNode * createForInLoop (const JSTokenLocation &location, ExpressionNode *lhs, ExpressionNode *iter, StatementNode *statements, const JSTokenLocation &, const JSTextPosition &eStart, const JSTextPosition &eDivot, const JSTextPosition &eEnd, int start, int end, VariableEnvironment &lexicalVariables)
 
StatementNode * createForInLoop (const JSTokenLocation &location, DestructuringPatternNode *pattern, ExpressionNode *iter, StatementNode *statements, const JSTokenLocation &declLocation, const JSTextPosition &eStart, const JSTextPosition &eDivot, const JSTextPosition &eEnd, int start, int end, VariableEnvironment &lexicalVariables)
 
StatementNode * createForOfLoop (const JSTokenLocation &location, ExpressionNode *lhs, ExpressionNode *iter, StatementNode *statements, const JSTokenLocation &, const JSTextPosition &eStart, const JSTextPosition &eDivot, const JSTextPosition &eEnd, int start, int end, VariableEnvironment &lexicalVariables)
 
StatementNode * createForOfLoop (const JSTokenLocation &location, DestructuringPatternNode *pattern, ExpressionNode *iter, StatementNode *statements, const JSTokenLocation &declLocation, const JSTextPosition &eStart, const JSTextPosition &eDivot, const JSTextPosition &eEnd, int start, int end, VariableEnvironment &lexicalVariables)
 
bool isBindingNode (const DestructuringPattern &pattern)
 
bool isAssignmentLocation (const Expression &pattern)
 
bool isObjectLiteral (const Expression &node)
 
bool isArrayLiteral (const Expression &node)
 
bool isObjectOrArrayLiteral (const Expression &node)
 
bool shouldSkipPauseLocation (StatementNode *statement) const
 
StatementNode * createEmptyStatement (const JSTokenLocation &location)
 
StatementNode * createDeclarationStatement (const JSTokenLocation &location, ExpressionNode *expr, int start, int end)
 
ExpressionNode * createEmptyVarExpression (const JSTokenLocation &location, const Identifier &identifier)
 
ExpressionNode * createEmptyLetExpression (const JSTokenLocation &location, const Identifier &identifier)
 
StatementNode * createReturnStatement (const JSTokenLocation &location, ExpressionNode *expression, const JSTextPosition &start, const JSTextPosition &end)
 
StatementNode * createBreakStatement (const JSTokenLocation &location, const Identifier *ident, const JSTextPosition &start, const JSTextPosition &end)
 
StatementNode * createContinueStatement (const JSTokenLocation &location, const Identifier *ident, const JSTextPosition &start, const JSTextPosition &end)
 
StatementNode * createTryStatement (const JSTokenLocation &location, StatementNode *tryBlock, DestructuringPatternNode *catchPattern, StatementNode *catchBlock, StatementNode *finallyBlock, int startLine, int endLine, VariableEnvironment &catchEnvironment)
 
StatementNode * createSwitchStatement (const JSTokenLocation &location, ExpressionNode *expr, ClauseListNode *firstClauses, CaseClauseNode *defaultClause, ClauseListNode *secondClauses, int startLine, int endLine, VariableEnvironment &lexicalVariables, DeclarationStacks::FunctionStack &&functionStack)
 
StatementNode * createWhileStatement (const JSTokenLocation &location, ExpressionNode *expr, StatementNode *statement, int startLine, int endLine)
 
StatementNode * createDoWhileStatement (const JSTokenLocation &location, StatementNode *statement, ExpressionNode *expr, int startLine, int endLine)
 
StatementNode * createLabelStatement (const JSTokenLocation &location, const Identifier *ident, StatementNode *statement, const JSTextPosition &start, const JSTextPosition &end)
 
StatementNode * createWithStatement (const JSTokenLocation &location, ExpressionNode *expr, StatementNode *statement, unsigned start, const JSTextPosition &end, unsigned startLine, unsigned endLine)
 
StatementNode * createThrowStatement (const JSTokenLocation &location, ExpressionNode *expr, const JSTextPosition &start, const JSTextPosition &end)
 
StatementNode * createDebugger (const JSTokenLocation &location, int startLine, int endLine)
 
ModuleNameNode * createModuleName (const JSTokenLocation &location, const Identifier &moduleName)
 
ImportSpecifierNode * createImportSpecifier (const JSTokenLocation &location, const Identifier &importedName, const Identifier &localName)
 
ImportSpecifierListNode * createImportSpecifierList ()
 
void appendImportSpecifier (ImportSpecifierListNode *specifierList, ImportSpecifierNode *specifier)
 
StatementNode * createImportDeclaration (const JSTokenLocation &location, ImportSpecifierListNode *importSpecifierList, ModuleNameNode *moduleName)
 
StatementNode * createExportAllDeclaration (const JSTokenLocation &location, ModuleNameNode *moduleName)
 
StatementNode * createExportDefaultDeclaration (const JSTokenLocation &location, StatementNode *declaration, const Identifier &localName)
 
StatementNode * createExportLocalDeclaration (const JSTokenLocation &location, StatementNode *declaration)
 
StatementNode * createExportNamedDeclaration (const JSTokenLocation &location, ExportSpecifierListNode *exportSpecifierList, ModuleNameNode *moduleName)
 
ExportSpecifierNode * createExportSpecifier (const JSTokenLocation &location, const Identifier &localName, const Identifier &exportedName)
 
ExportSpecifierListNode * createExportSpecifierList ()
 
void appendExportSpecifier (ExportSpecifierListNode *specifierList, ExportSpecifierNode *specifier)
 
void appendStatement (JSC::SourceElements *elements, JSC::StatementNode *statement)
 
CommaNode * createCommaExpr (const JSTokenLocation &location, ExpressionNode *node)
 
CommaNode * appendToCommaExpr (const JSTokenLocation &location, ExpressionNode *, ExpressionNode *tail, ExpressionNode *next)
 
int evalCount () const
 
void appendBinaryExpressionInfo (int &operandStackDepth, ExpressionNode *current, const JSTextPosition &exprStart, const JSTextPosition &lhs, const JSTextPosition &rhs, bool hasAssignments)
 
void operatorStackPop (int &operatorStackDepth)
 
bool operatorStackShouldReduce (int precedence)
 
const BinaryOperand & getFromOperandStack (int i)
 
void shrinkOperandStackBy (int &operandStackDepth, int amount)
 
void appendBinaryOperation (const JSTokenLocation &location, int &operandStackDepth, int &, const BinaryOperand &lhs, const BinaryOperand &rhs)
 
void operatorStackAppend (int &operatorStackDepth, int op, int precedence)
 
ExpressionNode * popOperandStack (int &)
 
void appendUnaryToken (int &tokenStackDepth, int type, const JSTextPosition &start)
 
int unaryTokenStackLastType (int &)
 
const JSTextPosition & unaryTokenStackLastStart (int &)
 
void unaryTokenStackRemoveLast (int &tokenStackDepth)
 
void assignmentStackAppend (int &assignmentStackDepth, ExpressionNode *node, const JSTextPosition &start, const JSTextPosition &divot, int assignmentCount, Operator op)
 
ExpressionNode * createAssignment (const JSTokenLocation &location, int &assignmentStackDepth, ExpressionNode *rhs, int initialAssignmentCount, int currentAssignmentCount, const JSTextPosition &lastTokenEnd)
 
const Identifier * getName (const Property &property) const
 
PropertyNode::Type getType (const Property &property) const
 
bool isResolve (ExpressionNode *expr) const
 
ExpressionNode * createDestructuringAssignment (const JSTokenLocation &location, DestructuringPattern pattern, ExpressionNode *initializer)
 
ArrayPattern createArrayPattern (const JSTokenLocation &)
 
void appendArrayPatternSkipEntry (ArrayPattern node, const JSTokenLocation &location)
 
void appendArrayPatternEntry (ArrayPattern node, const JSTokenLocation &location, DestructuringPattern pattern, ExpressionNode *defaultValue)
 
void appendArrayPatternRestEntry (ArrayPattern node, const JSTokenLocation &location, DestructuringPattern pattern)
 
void finishArrayPattern (ArrayPattern node, const JSTextPosition &divotStart, const JSTextPosition &divot, const JSTextPosition &divotEnd)
 
ObjectPattern createObjectPattern (const JSTokenLocation &)
 
void appendObjectPatternEntry (ObjectPattern node, const JSTokenLocation &location, bool wasString, const Identifier &identifier, DestructuringPattern pattern, ExpressionNode *defaultValue)
 
void appendObjectPatternEntry (ObjectPattern node, const JSTokenLocation &location, ExpressionNode *propertyExpression, DestructuringPattern pattern, ExpressionNode *defaultValue)
 
BindingPattern createBindingLocation (const JSTokenLocation &, const Identifier &boundProperty, const JSTextPosition &start, const JSTextPosition &end, AssignmentContext context)
 
RestParameterNode * createRestParameter (DestructuringPatternNode *pattern, size_t numParametersToSkip)
 
AssignmentElement createAssignmentElement (const Expression &assignmentTarget, const JSTextPosition &start, const JSTextPosition &end)
 
void setEndOffset (Node *node, int offset)
 
int endOffset (Node *node)
 
void setStartOffset (CaseClauseNode *node, int offset)
 
void setStartOffset (Node *node, int offset)
 
JSTextPosition breakpointLocation (Node *node)
 
void propagateArgumentsUse ()
 

Static Public Attributes

static const bool CreatesAST = true
 
static const bool NeedsFreeVariableInfo = true
 
static const bool CanUseFunctionCache = true
 
static const int DontBuildKeywords = 0
 
static const int DontBuildStrings = 0
 

Member Typedef Documentation

◆ Arguments

◆ ArgumentsList

◆ ArrayPattern

◆ AssignmentElement

◆ BinaryOperand

◆ BindingPattern

◆ ClassExpression

◆ Clause

◆ ClauseList

◆ Comma

◆ DestructuringPattern

◆ ElementList

◆ ExportSpecifier

◆ ExportSpecifierList

◆ Expression

◆ FormalParameterList

◆ FunctionBody

◆ ImportSpecifier

◆ ImportSpecifierList

◆ ModuleName

◆ ObjectPattern

◆ Property

◆ PropertyList

◆ SourceElements

◆ Statement

◆ TemplateExpressionList

◆ TemplateLiteral

◆ TemplateString

◆ TemplateStringList

Constructor & Destructor Documentation

◆ ASTBuilder()

JSC::ASTBuilder::ASTBuilder ( VM *  vm,
ParserArena &  parserArena,
SourceCode *  sourceCode 
)
inline

Member Function Documentation

◆ appendArrayPatternEntry()

void JSC::ASTBuilder::appendArrayPatternEntry ( ArrayPattern  node,
const JSTokenLocation &  location,
DestructuringPattern  pattern,
ExpressionNode *  defaultValue 
)
inline

◆ appendArrayPatternRestEntry()

void JSC::ASTBuilder::appendArrayPatternRestEntry ( ArrayPattern  node,
const JSTokenLocation &  location,
DestructuringPattern  pattern 
)
inline

◆ appendArrayPatternSkipEntry()

void JSC::ASTBuilder::appendArrayPatternSkipEntry ( ArrayPattern  node,
const JSTokenLocation &  location 
)
inline

◆ appendBinaryExpressionInfo()

void JSC::ASTBuilder::appendBinaryExpressionInfo ( int &  operandStackDepth,
ExpressionNode *  current,
const JSTextPosition &  exprStart,
const JSTextPosition &  lhs,
const JSTextPosition &  rhs,
bool  hasAssignments 
)
inline

◆ appendBinaryOperation()

void JSC::ASTBuilder::appendBinaryOperation ( const JSTokenLocation &  location,
int &  operandStackDepth,
int &  ,
const BinaryOperand &  lhs,
const BinaryOperand &  rhs 
)
inline

◆ appendExportSpecifier()

void JSC::ASTBuilder::appendExportSpecifier ( ExportSpecifierListNode *  specifierList,
ExportSpecifierNode *  specifier 
)
inline

◆ appendImportSpecifier()

void JSC::ASTBuilder::appendImportSpecifier ( ImportSpecifierListNode *  specifierList,
ImportSpecifierNode *  specifier 
)
inline

◆ appendObjectPatternEntry() [1/2]

void JSC::ASTBuilder::appendObjectPatternEntry ( ObjectPattern  node,
const JSTokenLocation &  location,
bool  wasString,
const Identifier &  identifier,
DestructuringPattern  pattern,
ExpressionNode *  defaultValue 
)
inline

◆ appendObjectPatternEntry() [2/2]

void JSC::ASTBuilder::appendObjectPatternEntry ( ObjectPattern  node,
const JSTokenLocation &  location,
ExpressionNode *  propertyExpression,
DestructuringPattern  pattern,
ExpressionNode *  defaultValue 
)
inline

◆ appendParameter()

void JSC::ASTBuilder::appendParameter ( FormalParameterList  list,
DestructuringPattern  pattern,
ExpressionNode *  defaultValue 
)
inline

◆ appendStatement()

void JSC::ASTBuilder::appendStatement ( JSC::SourceElements *  elements,
JSC::StatementNode *  statement 
)
inline

◆ appendToCommaExpr()

CommaNode* JSC::ASTBuilder::appendToCommaExpr ( const JSTokenLocation &  location,
ExpressionNode *  ,
ExpressionNode *  tail,
ExpressionNode *  next 
)
inline

◆ appendUnaryToken()

void JSC::ASTBuilder::appendUnaryToken ( int &  tokenStackDepth,
int  type,
const JSTextPosition &  start 
)
inline

◆ assignmentStackAppend()

void JSC::ASTBuilder::assignmentStackAppend ( int &  assignmentStackDepth,
ExpressionNode *  node,
const JSTextPosition &  start,
const JSTextPosition &  divot,
int  assignmentCount,
Operator  op 
)
inline

◆ breakpointLocation()

JSTextPosition JSC::ASTBuilder::breakpointLocation ( Node *  node)
inline

◆ createArguments() [1/2]

ArgumentsNode* JSC::ASTBuilder::createArguments ( )
inline

◆ createArguments() [2/2]

ArgumentsNode* JSC::ASTBuilder::createArguments ( ArgumentListNode *  args)
inline

◆ createArgumentsList() [1/2]

ArgumentListNode* JSC::ASTBuilder::createArgumentsList ( const JSTokenLocation &  location,
ExpressionNode *  arg 
)
inline

◆ createArgumentsList() [2/2]

ArgumentListNode* JSC::ASTBuilder::createArgumentsList ( const JSTokenLocation &  location,
ArgumentListNode *  args,
ExpressionNode *  arg 
)
inline

◆ createArray() [1/3]

ExpressionNode* JSC::ASTBuilder::createArray ( const JSTokenLocation &  location,
int  elisions 
)
inline

◆ createArray() [2/3]

ExpressionNode* JSC::ASTBuilder::createArray ( const JSTokenLocation &  location,
ElementNode *  elems 
)
inline

◆ createArray() [3/3]

ExpressionNode* JSC::ASTBuilder::createArray ( const JSTokenLocation &  location,
int  elisions,
ElementNode *  elems 
)
inline

◆ createArrayPattern()

ArrayPattern JSC::ASTBuilder::createArrayPattern ( const JSTokenLocation &  )
inline

◆ createArrowFunctionExpr()

ExpressionNode* JSC::ASTBuilder::createArrowFunctionExpr ( const JSTokenLocation &  location,
const ParserFunctionInfo< ASTBuilder > &  functionInfo 
)
inline

◆ createAssignment()

ExpressionNode* JSC::ASTBuilder::createAssignment ( const JSTokenLocation &  location,
int &  assignmentStackDepth,
ExpressionNode *  rhs,
int  initialAssignmentCount,
int  currentAssignmentCount,
const JSTextPosition &  lastTokenEnd 
)
inline

◆ createAssignmentElement()

AssignmentElement JSC::ASTBuilder::createAssignmentElement ( const Expression &  assignmentTarget,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createAssignResolve()

ExpressionNode* JSC::ASTBuilder::createAssignResolve ( const JSTokenLocation &  location,
const Identifier &  ident,
ExpressionNode *  rhs,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end,
AssignmentContext  assignmentContext 
)
inline

◆ createAsyncFunctionBody()

ExpressionNode* JSC::ASTBuilder::createAsyncFunctionBody ( const JSTokenLocation &  location,
const ParserFunctionInfo< ASTBuilder > &  functionInfo,
SourceParseMode  parseMode 
)
inline

◆ createAwait()

AwaitExprNode* JSC::ASTBuilder::createAwait ( const JSTokenLocation &  location,
ExpressionNode *  argument,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createBindingLocation()

BindingPattern JSC::ASTBuilder::createBindingLocation ( const JSTokenLocation &  ,
const Identifier &  boundProperty,
const JSTextPosition &  start,
const JSTextPosition &  end,
AssignmentContext  context 
)
inline

◆ createBlockStatement()

StatementNode* JSC::ASTBuilder::createBlockStatement ( const JSTokenLocation &  location,
JSC::SourceElements *  elements,
int  startLine,
int  endLine,
VariableEnvironment &  lexicalVariables,
DeclarationStacks::FunctionStack &&  functionStack 
)
inline

◆ createBoolean()

ExpressionNode* JSC::ASTBuilder::createBoolean ( const JSTokenLocation &  location,
bool  b 
)
inline

◆ createBracketAccess()

ExpressionNode* JSC::ASTBuilder::createBracketAccess ( const JSTokenLocation &  location,
ExpressionNode *  base,
ExpressionNode *  property,
bool  propertyHasAssignments,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createBreakStatement()

StatementNode* JSC::ASTBuilder::createBreakStatement ( const JSTokenLocation &  location,
const Identifier *  ident,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createClassDeclStatement()

StatementNode* JSC::ASTBuilder::createClassDeclStatement ( const JSTokenLocation &  location,
ClassExprNode *  classExpression,
const JSTextPosition &  classStart,
const JSTextPosition &  classEnd,
unsigned  startLine,
unsigned  endLine 
)
inline

◆ createClassExpr()

ClassExprNode* JSC::ASTBuilder::createClassExpr ( const JSTokenLocation &  location,
const ParserClassInfo< ASTBuilder > &  classInfo,
VariableEnvironment &  classEnvironment,
ExpressionNode *  constructor,
ExpressionNode *  parentClass,
PropertyListNode *  instanceMethods,
PropertyListNode *  staticMethods 
)
inline

◆ createClause()

CaseClauseNode* JSC::ASTBuilder::createClause ( ExpressionNode *  expr,
JSC::SourceElements *  statements 
)
inline

◆ createClauseList() [1/2]

ClauseListNode* JSC::ASTBuilder::createClauseList ( CaseClauseNode *  clause)
inline

◆ createClauseList() [2/2]

ClauseListNode* JSC::ASTBuilder::createClauseList ( ClauseListNode *  tail,
CaseClauseNode *  clause 
)
inline

◆ createCommaExpr()

CommaNode* JSC::ASTBuilder::createCommaExpr ( const JSTokenLocation &  location,
ExpressionNode *  node 
)
inline

◆ createConditionalExpr()

ExpressionNode* JSC::ASTBuilder::createConditionalExpr ( const JSTokenLocation &  location,
ExpressionNode *  condition,
ExpressionNode *  lhs,
ExpressionNode *  rhs 
)
inline

◆ createContinueStatement()

StatementNode* JSC::ASTBuilder::createContinueStatement ( const JSTokenLocation &  location,
const Identifier *  ident,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createDebugger()

StatementNode* JSC::ASTBuilder::createDebugger ( const JSTokenLocation &  location,
int  startLine,
int  endLine 
)
inline

◆ createDeclarationStatement()

StatementNode* JSC::ASTBuilder::createDeclarationStatement ( const JSTokenLocation &  location,
ExpressionNode *  expr,
int  start,
int  end 
)
inline

◆ createDestructuringAssignment()

ExpressionNode* JSC::ASTBuilder::createDestructuringAssignment ( const JSTokenLocation &  location,
DestructuringPattern  pattern,
ExpressionNode *  initializer 
)
inline

◆ createDotAccess()

ExpressionNode* JSC::ASTBuilder::createDotAccess ( const JSTokenLocation &  location,
ExpressionNode *  base,
const Identifier *  property,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createDoubleExpr()

ExpressionNode* JSC::ASTBuilder::createDoubleExpr ( const JSTokenLocation &  location,
double  d 
)
inline

◆ createDoWhileStatement()

StatementNode* JSC::ASTBuilder::createDoWhileStatement ( const JSTokenLocation &  location,
StatementNode *  statement,
ExpressionNode *  expr,
int  startLine,
int  endLine 
)
inline

◆ createElementList() [1/3]

ElementNode* JSC::ASTBuilder::createElementList ( int  elisions,
ExpressionNode *  expr 
)
inline

◆ createElementList() [2/3]

ElementNode* JSC::ASTBuilder::createElementList ( ElementNode *  elems,
int  elisions,
ExpressionNode *  expr 
)
inline

◆ createElementList() [3/3]

ElementNode* JSC::ASTBuilder::createElementList ( ArgumentListNode *  elems)
inline

◆ createEmptyLetExpression()

ExpressionNode* JSC::ASTBuilder::createEmptyLetExpression ( const JSTokenLocation &  location,
const Identifier &  identifier 
)
inline

◆ createEmptyStatement()

StatementNode* JSC::ASTBuilder::createEmptyStatement ( const JSTokenLocation &  location)
inline

◆ createEmptyVarExpression()

ExpressionNode* JSC::ASTBuilder::createEmptyVarExpression ( const JSTokenLocation &  location,
const Identifier &  identifier 
)
inline

◆ createExportAllDeclaration()

StatementNode* JSC::ASTBuilder::createExportAllDeclaration ( const JSTokenLocation &  location,
ModuleNameNode *  moduleName 
)
inline

◆ createExportDefaultDeclaration()

StatementNode* JSC::ASTBuilder::createExportDefaultDeclaration ( const JSTokenLocation &  location,
StatementNode *  declaration,
const Identifier &  localName 
)
inline

◆ createExportLocalDeclaration()

StatementNode* JSC::ASTBuilder::createExportLocalDeclaration ( const JSTokenLocation &  location,
StatementNode *  declaration 
)
inline

◆ createExportNamedDeclaration()

StatementNode* JSC::ASTBuilder::createExportNamedDeclaration ( const JSTokenLocation &  location,
ExportSpecifierListNode *  exportSpecifierList,
ModuleNameNode *  moduleName 
)
inline

◆ createExportSpecifier()

ExportSpecifierNode* JSC::ASTBuilder::createExportSpecifier ( const JSTokenLocation &  location,
const Identifier &  localName,
const Identifier &  exportedName 
)
inline

◆ createExportSpecifierList()

ExportSpecifierListNode* JSC::ASTBuilder::createExportSpecifierList ( )
inline

◆ createExprStatement()

StatementNode* JSC::ASTBuilder::createExprStatement ( const JSTokenLocation &  location,
ExpressionNode *  expr,
const JSTextPosition &  start,
int  end 
)
inline

◆ createForInLoop() [1/2]

StatementNode* JSC::ASTBuilder::createForInLoop ( const JSTokenLocation &  location,
ExpressionNode *  lhs,
ExpressionNode *  iter,
StatementNode *  statements,
const JSTokenLocation &  ,
const JSTextPosition &  eStart,
const JSTextPosition &  eDivot,
const JSTextPosition &  eEnd,
int  start,
int  end,
VariableEnvironment &  lexicalVariables 
)
inline

◆ createForInLoop() [2/2]

StatementNode* JSC::ASTBuilder::createForInLoop ( const JSTokenLocation &  location,
DestructuringPatternNode *  pattern,
ExpressionNode *  iter,
StatementNode *  statements,
const JSTokenLocation &  declLocation,
const JSTextPosition &  eStart,
const JSTextPosition &  eDivot,
const JSTextPosition &  eEnd,
int  start,
int  end,
VariableEnvironment &  lexicalVariables 
)
inline

◆ createForLoop()

StatementNode* JSC::ASTBuilder::createForLoop ( const JSTokenLocation &  location,
ExpressionNode *  initializer,
ExpressionNode *  condition,
ExpressionNode *  iter,
StatementNode *  statements,
int  start,
int  end,
VariableEnvironment &  lexicalVariables 
)
inline

◆ createFormalParameterList()

FormalParameterList JSC::ASTBuilder::createFormalParameterList ( )
inline

◆ createForOfLoop() [1/2]

StatementNode* JSC::ASTBuilder::createForOfLoop ( const JSTokenLocation &  location,
ExpressionNode *  lhs,
ExpressionNode *  iter,
StatementNode *  statements,
const JSTokenLocation &  ,
const JSTextPosition &  eStart,
const JSTextPosition &  eDivot,
const JSTextPosition &  eEnd,
int  start,
int  end,
VariableEnvironment &  lexicalVariables 
)
inline

◆ createForOfLoop() [2/2]

StatementNode* JSC::ASTBuilder::createForOfLoop ( const JSTokenLocation &  location,
DestructuringPatternNode *  pattern,
ExpressionNode *  iter,
StatementNode *  statements,
const JSTokenLocation &  declLocation,
const JSTextPosition &  eStart,
const JSTextPosition &  eDivot,
const JSTextPosition &  eEnd,
int  start,
int  end,
VariableEnvironment &  lexicalVariables 
)
inline

◆ createFuncDeclStatement()

StatementNode* JSC::ASTBuilder::createFuncDeclStatement ( const JSTokenLocation &  location,
const ParserFunctionInfo< ASTBuilder > &  functionInfo 
)
inline

◆ createFunctionExpr()

ExpressionNode* JSC::ASTBuilder::createFunctionExpr ( const JSTokenLocation &  location,
const ParserFunctionInfo< ASTBuilder > &  functionInfo 
)
inline

◆ createFunctionMetadata()

FunctionMetadataNode* JSC::ASTBuilder::createFunctionMetadata ( const JSTokenLocation &  startLocation,
const JSTokenLocation &  endLocation,
unsigned  startColumn,
unsigned  endColumn,
int  functionKeywordStart,
int  functionNameStart,
int  parametersStart,
bool  inStrictContext,
ConstructorKind  constructorKind,
SuperBinding  superBinding,
unsigned  parameterCount,
unsigned  functionLength,
SourceParseMode  mode,
bool  isArrowFunctionBodyExpression 
)
inline

◆ createGeneratorFunctionBody()

ExpressionNode* JSC::ASTBuilder::createGeneratorFunctionBody ( const JSTokenLocation &  location,
const ParserFunctionInfo< ASTBuilder > &  functionInfo,
const Identifier &  name 
)
inline

◆ createGetterOrSetterProperty() [1/3]

NEVER_INLINE PropertyNode* JSC::ASTBuilder::createGetterOrSetterProperty ( const JSTokenLocation &  location,
PropertyNode::Type  type,
bool  ,
const Identifier *  name,
const ParserFunctionInfo< ASTBuilder > &  functionInfo,
bool  isClassProperty 
)
inline

◆ createGetterOrSetterProperty() [2/3]

NEVER_INLINE PropertyNode* JSC::ASTBuilder::createGetterOrSetterProperty ( const JSTokenLocation &  location,
PropertyNode::Type  type,
bool  ,
ExpressionNode *  name,
const ParserFunctionInfo< ASTBuilder > &  functionInfo,
bool  isClassProperty 
)
inline

◆ createGetterOrSetterProperty() [3/3]

NEVER_INLINE PropertyNode* JSC::ASTBuilder::createGetterOrSetterProperty ( VM *  vm,
ParserArena &  parserArena,
const JSTokenLocation &  location,
PropertyNode::Type  type,
bool  ,
double  name,
const ParserFunctionInfo< ASTBuilder > &  functionInfo,
bool  isClassProperty 
)
inline

◆ createIfStatement()

StatementNode* JSC::ASTBuilder::createIfStatement ( const JSTokenLocation &  location,
ExpressionNode *  condition,
StatementNode *  trueBlock,
StatementNode *  falseBlock,
int  start,
int  end 
)
inline

◆ createImportDeclaration()

StatementNode* JSC::ASTBuilder::createImportDeclaration ( const JSTokenLocation &  location,
ImportSpecifierListNode *  importSpecifierList,
ModuleNameNode *  moduleName 
)
inline

◆ createImportExpr()

ExpressionNode* JSC::ASTBuilder::createImportExpr ( const JSTokenLocation &  location,
ExpressionNode *  expr,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createImportSpecifier()

ImportSpecifierNode* JSC::ASTBuilder::createImportSpecifier ( const JSTokenLocation &  location,
const Identifier &  importedName,
const Identifier &  localName 
)
inline

◆ createImportSpecifierList()

ImportSpecifierListNode* JSC::ASTBuilder::createImportSpecifierList ( )
inline

◆ createIntegerExpr()

ExpressionNode* JSC::ASTBuilder::createIntegerExpr ( const JSTokenLocation &  location,
double  d 
)
inline

◆ createLabelStatement()

StatementNode* JSC::ASTBuilder::createLabelStatement ( const JSTokenLocation &  location,
const Identifier *  ident,
StatementNode *  statement,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createLogicalNot()

ExpressionNode* JSC::ASTBuilder::createLogicalNot ( const JSTokenLocation &  location,
ExpressionNode *  expr 
)
inline

◆ createMethodDefinition()

ExpressionNode* JSC::ASTBuilder::createMethodDefinition ( const JSTokenLocation &  location,
const ParserFunctionInfo< ASTBuilder > &  functionInfo 
)
inline

◆ createModuleName()

ModuleNameNode* JSC::ASTBuilder::createModuleName ( const JSTokenLocation &  location,
const Identifier &  moduleName 
)
inline

◆ createNewExpr() [1/2]

ExpressionNode* JSC::ASTBuilder::createNewExpr ( const JSTokenLocation &  location,
ExpressionNode *  expr,
ArgumentsNode *  arguments,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createNewExpr() [2/2]

ExpressionNode* JSC::ASTBuilder::createNewExpr ( const JSTokenLocation &  location,
ExpressionNode *  expr,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createNewTargetExpr()

ExpressionNode* JSC::ASTBuilder::createNewTargetExpr ( const JSTokenLocation  location)
inline

◆ createNull()

ExpressionNode* JSC::ASTBuilder::createNull ( const JSTokenLocation &  location)
inline

◆ createObjectLiteral() [1/2]

ExpressionNode* JSC::ASTBuilder::createObjectLiteral ( const JSTokenLocation &  location)
inline

◆ createObjectLiteral() [2/2]

ExpressionNode* JSC::ASTBuilder::createObjectLiteral ( const JSTokenLocation &  location,
PropertyListNode *  properties 
)
inline

◆ createObjectPattern()

ObjectPattern JSC::ASTBuilder::createObjectPattern ( const JSTokenLocation &  )
inline

◆ createProperty() [1/3]

PropertyNode* JSC::ASTBuilder::createProperty ( const Identifier *  propertyName,
ExpressionNode *  node,
PropertyNode::Type  type,
PropertyNode::PutType  putType,
bool  ,
SuperBinding  superBinding,
bool  isClassProperty 
)
inline

◆ createProperty() [2/3]

PropertyNode* JSC::ASTBuilder::createProperty ( VM *  vm,
ParserArena &  parserArena,
double  propertyName,
ExpressionNode *  node,
PropertyNode::Type  type,
PropertyNode::PutType  putType,
bool  ,
SuperBinding  superBinding,
bool  isClassProperty 
)
inline

◆ createProperty() [3/3]

PropertyNode* JSC::ASTBuilder::createProperty ( ExpressionNode *  propertyName,
ExpressionNode *  node,
PropertyNode::Type  type,
PropertyNode::PutType  putType,
bool  ,
SuperBinding  superBinding,
bool  isClassProperty 
)
inline

◆ createPropertyList() [1/2]

PropertyListNode* JSC::ASTBuilder::createPropertyList ( const JSTokenLocation &  location,
PropertyNode *  property 
)
inline

◆ createPropertyList() [2/2]

PropertyListNode* JSC::ASTBuilder::createPropertyList ( const JSTokenLocation &  location,
PropertyNode *  property,
PropertyListNode *  tail 
)
inline

◆ createRegExp()

ExpressionNode* JSC::ASTBuilder::createRegExp ( const JSTokenLocation &  location,
const Identifier &  pattern,
const Identifier &  flags,
const JSTextPosition &  start 
)
inline

◆ createResolve()

ExpressionNode* JSC::ASTBuilder::createResolve ( const JSTokenLocation &  location,
const Identifier &  ident,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createRestParameter()

RestParameterNode* JSC::ASTBuilder::createRestParameter ( DestructuringPatternNode *  pattern,
size_t  numParametersToSkip 
)
inline

◆ createReturnStatement()

StatementNode* JSC::ASTBuilder::createReturnStatement ( const JSTokenLocation &  location,
ExpressionNode *  expression,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createSourceElements()

JSC::SourceElements* JSC::ASTBuilder::createSourceElements ( )
inline

◆ createSpreadExpression()

ExpressionNode* JSC::ASTBuilder::createSpreadExpression ( const JSTokenLocation &  location,
ExpressionNode *  expression,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createString()

ExpressionNode* JSC::ASTBuilder::createString ( const JSTokenLocation &  location,
const Identifier *  string 
)
inline

◆ createSuperExpr()

ExpressionNode* JSC::ASTBuilder::createSuperExpr ( const JSTokenLocation &  location)
inline

◆ createSwitchStatement()

StatementNode* JSC::ASTBuilder::createSwitchStatement ( const JSTokenLocation &  location,
ExpressionNode *  expr,
ClauseListNode *  firstClauses,
CaseClauseNode *  defaultClause,
ClauseListNode *  secondClauses,
int  startLine,
int  endLine,
VariableEnvironment &  lexicalVariables,
DeclarationStacks::FunctionStack &&  functionStack 
)
inline

◆ createTaggedTemplate()

ExpressionNode* JSC::ASTBuilder::createTaggedTemplate ( const JSTokenLocation &  location,
ExpressionNode *  base,
TemplateLiteralNode *  templateLiteral,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ createTemplateExpressionList() [1/2]

TemplateExpressionListNode* JSC::ASTBuilder::createTemplateExpressionList ( ExpressionNode *  expression)
inline

◆ createTemplateExpressionList() [2/2]

TemplateExpressionListNode* JSC::ASTBuilder::createTemplateExpressionList ( TemplateExpressionListNode *  templateExpressionListNode,
ExpressionNode *  expression 
)
inline

◆ createTemplateLiteral() [1/2]

TemplateLiteralNode* JSC::ASTBuilder::createTemplateLiteral ( const JSTokenLocation &  location,
TemplateStringListNode *  templateStringList 
)
inline

◆ createTemplateLiteral() [2/2]

TemplateLiteralNode* JSC::ASTBuilder::createTemplateLiteral ( const JSTokenLocation &  location,
TemplateStringListNode *  templateStringList,
TemplateExpressionListNode *  templateExpressionList 
)
inline

◆ createTemplateString()

TemplateStringNode* JSC::ASTBuilder::createTemplateString ( const JSTokenLocation &  location,
const Identifier *  cooked,
const Identifier *  raw 
)
inline

◆ createTemplateStringList() [1/2]

TemplateStringListNode* JSC::ASTBuilder::createTemplateStringList ( TemplateStringNode *  templateString)
inline

◆ createTemplateStringList() [2/2]

TemplateStringListNode* JSC::ASTBuilder::createTemplateStringList ( TemplateStringListNode *  templateStringList,
TemplateStringNode *  templateString 
)
inline

◆ createThisExpr()

ExpressionNode* JSC::ASTBuilder::createThisExpr ( const JSTokenLocation &  location)
inline

◆ createThrowStatement()

StatementNode* JSC::ASTBuilder::createThrowStatement ( const JSTokenLocation &  location,
ExpressionNode *  expr,
const JSTextPosition &  start,
const JSTextPosition &  end 
)
inline

◆ createTryStatement()

StatementNode* JSC::ASTBuilder::createTryStatement ( const JSTokenLocation &  location,
StatementNode *  tryBlock,
DestructuringPatternNode *  catchPattern,
StatementNode *  catchBlock,
StatementNode *  finallyBlock,
int  startLine,
int  endLine,
VariableEnvironment &  catchEnvironment 
)
inline

◆ createUnaryPlus()

ExpressionNode* JSC::ASTBuilder::createUnaryPlus ( const JSTokenLocation &  location,
ExpressionNode *  expr 
)
inline

◆ createVoid()

ExpressionNode* JSC::ASTBuilder::createVoid ( const JSTokenLocation &  location,
ExpressionNode *  expr 
)
inline

◆ createWhileStatement()

StatementNode* JSC::ASTBuilder::createWhileStatement ( const JSTokenLocation &  location,
ExpressionNode *  expr,
StatementNode *  statement,
int  startLine,
int  endLine 
)
inline

◆ createWithStatement()

StatementNode* JSC::ASTBuilder::createWithStatement ( const JSTokenLocation &  location,
ExpressionNode *  expr,
StatementNode *  statement,
unsigned  start,
const JSTextPosition &  end,
unsigned  startLine,
unsigned  endLine 
)
inline

◆ createYield() [1/2]

YieldExprNode* JSC::ASTBuilder::createYield ( const JSTokenLocation &  location)
inline

◆ createYield() [2/2]

YieldExprNode* JSC::ASTBuilder::createYield ( const JSTokenLocation &  location,
ExpressionNode *  argument,
bool  delegate,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)
inline

◆ endOffset()

int JSC::ASTBuilder::endOffset ( Node *  node)
inline

◆ evalCount()

int JSC::ASTBuilder::evalCount ( ) const
inline

◆ features()

int JSC::ASTBuilder::features ( ) const
inline

◆ finishArrayPattern()

void JSC::ASTBuilder::finishArrayPattern ( ArrayPattern  node,
const JSTextPosition &  divotStart,
const JSTextPosition &  divot,
const JSTextPosition &  divotEnd 
)
inline

◆ getFromOperandStack()

const BinaryOperand& JSC::ASTBuilder::getFromOperandStack ( int  i)
inline

◆ getName()

const Identifier* JSC::ASTBuilder::getName ( const Property &  property) const
inline

◆ getType()

PropertyNode::Type JSC::ASTBuilder::getType ( const Property &  property) const
inline

◆ isArrayLiteral()

bool JSC::ASTBuilder::isArrayLiteral ( const Expression &  node)
inline

◆ isAssignmentLocation()

bool JSC::ASTBuilder::isAssignmentLocation ( const Expression &  pattern)
inline

◆ isBindingNode()

bool JSC::ASTBuilder::isBindingNode ( const DestructuringPattern &  pattern)
inline

◆ isNewTarget()

bool JSC::ASTBuilder::isNewTarget ( ExpressionNode *  node)
inline

◆ isObjectLiteral()

bool JSC::ASTBuilder::isObjectLiteral ( const Expression &  node)
inline

◆ isObjectOrArrayLiteral()

bool JSC::ASTBuilder::isObjectOrArrayLiteral ( const Expression &  node)
inline

◆ isResolve()

bool JSC::ASTBuilder::isResolve ( ExpressionNode *  expr) const
inline

◆ makeAddNode()

ExpressionNode * JSC::ASTBuilder::makeAddNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeAssignNode()

ExpressionNode * JSC::ASTBuilder::makeAssignNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
Operator  op,
ExpressionNode *  right,
bool  leftHasAssignments,
bool  rightHasAssignments,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)

◆ makeBinaryNode()

ExpressionNode * JSC::ASTBuilder::makeBinaryNode ( const JSTokenLocation &  location,
int  token,
std::pair< ExpressionNode *, BinaryOpInfo >  lhs,
std::pair< ExpressionNode *, BinaryOpInfo >  rhs 
)

◆ makeBitAndNode()

ExpressionNode * JSC::ASTBuilder::makeBitAndNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeBitOrNode()

ExpressionNode * JSC::ASTBuilder::makeBitOrNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeBitwiseNotNode()

ExpressionNode * JSC::ASTBuilder::makeBitwiseNotNode ( const JSTokenLocation &  location,
ExpressionNode *  expr 
)

◆ makeBitXOrNode()

ExpressionNode * JSC::ASTBuilder::makeBitXOrNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeDeleteNode()

ExpressionNode * JSC::ASTBuilder::makeDeleteNode ( const JSTokenLocation &  location,
ExpressionNode *  expr,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)

◆ makeDivNode()

ExpressionNode * JSC::ASTBuilder::makeDivNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeFunctionCallNode()

ExpressionNode * JSC::ASTBuilder::makeFunctionCallNode ( const JSTokenLocation &  location,
ExpressionNode *  func,
ArgumentsNode *  args,
const JSTextPosition &  divotStart,
const JSTextPosition &  divot,
const JSTextPosition &  divotEnd 
)

◆ makeLeftShiftNode()

ExpressionNode * JSC::ASTBuilder::makeLeftShiftNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeModNode()

ExpressionNode * JSC::ASTBuilder::makeModNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeMultNode()

ExpressionNode * JSC::ASTBuilder::makeMultNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeNegateNode()

ExpressionNode * JSC::ASTBuilder::makeNegateNode ( const JSTokenLocation &  location,
ExpressionNode *  n 
)

◆ makePostfixNode()

ExpressionNode * JSC::ASTBuilder::makePostfixNode ( const JSTokenLocation &  location,
ExpressionNode *  expr,
Operator  op,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)

◆ makePowNode()

ExpressionNode * JSC::ASTBuilder::makePowNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makePrefixNode()

ExpressionNode * JSC::ASTBuilder::makePrefixNode ( const JSTokenLocation &  location,
ExpressionNode *  expr,
Operator  op,
const JSTextPosition &  start,
const JSTextPosition &  divot,
const JSTextPosition &  end 
)

◆ makeRightShiftNode()

ExpressionNode * JSC::ASTBuilder::makeRightShiftNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeSubNode()

ExpressionNode * JSC::ASTBuilder::makeSubNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ makeTypeOfNode()

ExpressionNode * JSC::ASTBuilder::makeTypeOfNode ( const JSTokenLocation &  location,
ExpressionNode *  expr 
)

◆ makeURightShiftNode()

ExpressionNode * JSC::ASTBuilder::makeURightShiftNode ( const JSTokenLocation &  location,
ExpressionNode *  left,
ExpressionNode *  right,
bool  rightHasAssignments 
)

◆ numConstants()

int JSC::ASTBuilder::numConstants ( ) const
inline

◆ operatorStackAppend()

void JSC::ASTBuilder::operatorStackAppend ( int &  operatorStackDepth,
int  op,
int  precedence 
)
inline

◆ operatorStackPop()

void JSC::ASTBuilder::operatorStackPop ( int &  operatorStackDepth)
inline

◆ operatorStackShouldReduce()

bool JSC::ASTBuilder::operatorStackShouldReduce ( int  precedence)
inline

◆ popOperandStack()

ExpressionNode* JSC::ASTBuilder::popOperandStack ( int &  )
inline

◆ propagateArgumentsUse()

void JSC::ASTBuilder::propagateArgumentsUse ( )
inline

◆ setEndOffset()

void JSC::ASTBuilder::setEndOffset ( Node *  node,
int  offset 
)
inline

◆ setStartOffset() [1/2]

void JSC::ASTBuilder::setStartOffset ( CaseClauseNode *  node,
int  offset 
)
inline

◆ setStartOffset() [2/2]

void JSC::ASTBuilder::setStartOffset ( Node *  node,
int  offset 
)
inline

◆ shouldSkipPauseLocation()

bool JSC::ASTBuilder::shouldSkipPauseLocation ( StatementNode *  statement) const
inline

◆ shrinkOperandStackBy()

void JSC::ASTBuilder::shrinkOperandStackBy ( int &  operandStackDepth,
int  amount 
)
inline

◆ unaryTokenStackLastStart()

const JSTextPosition& JSC::ASTBuilder::unaryTokenStackLastStart ( int &  )
inline

◆ unaryTokenStackLastType()

int JSC::ASTBuilder::unaryTokenStackLastType ( int &  )
inline

◆ unaryTokenStackRemoveLast()

void JSC::ASTBuilder::unaryTokenStackRemoveLast ( int &  tokenStackDepth)
inline

Member Data Documentation

◆ CanUseFunctionCache

const bool JSC::ASTBuilder::CanUseFunctionCache = true
static

◆ CreatesAST

const bool JSC::ASTBuilder::CreatesAST = true
static

◆ DontBuildKeywords

const int JSC::ASTBuilder::DontBuildKeywords = 0
static

◆ DontBuildStrings

const int JSC::ASTBuilder::DontBuildStrings = 0
static

◆ NeedsFreeVariableInfo

const bool JSC::ASTBuilder::NeedsFreeVariableInfo = true
static

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