Changeset 186959 in webkit for trunk/Source/JavaScriptCore/parser/Nodes.cpp
- Timestamp:
- Jul 17, 2015, 11:48:30 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Nodes.cpp
r186860 r186959 118 118 // ------------------------------ ProgramNode ----------------------------- 119 119 120 ProgramNode::ProgramNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack& funcStack, VariableEnvironment& lexicalVariables, const SourceCode& source, CodeFeatures features, int numConstants)120 ProgramNode::ProgramNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack& funcStack, VariableEnvironment& lexicalVariables, FunctionParameters*, const SourceCode& source, CodeFeatures features, int numConstants) 121 121 : ScopeNode(parserArena, startLocation, endLocation, source, children, varEnvironment, funcStack, lexicalVariables, features, numConstants) 122 122 , m_startColumn(startColumn) … … 132 132 // ------------------------------ EvalNode ----------------------------- 133 133 134 EvalNode::EvalNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack& funcStack, VariableEnvironment& lexicalVariables, const SourceCode& source, CodeFeatures features, int numConstants)134 EvalNode::EvalNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack& funcStack, VariableEnvironment& lexicalVariables, FunctionParameters*, const SourceCode& source, CodeFeatures features, int numConstants) 135 135 : ScopeNode(parserArena, startLocation, endLocation, source, children, varEnvironment, funcStack, lexicalVariables, features, numConstants) 136 136 , m_endColumn(endColumn) … … 140 140 // ------------------------------ FunctionBodyNode ----------------------------- 141 141 142 Ref<FunctionParameters> FunctionParameters::create(ParameterNode* firstParameter)143 {144 unsigned parameterCount = 0;145 for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam())146 ++parameterCount;147 148 size_t objectSize = sizeof(FunctionParameters) - sizeof(void*) + sizeof(DestructuringPatternNode*) * parameterCount;149 void* slot = fastMalloc(objectSize);150 return adoptRef(*new (slot) FunctionParameters(firstParameter, parameterCount));151 }152 153 FunctionParameters::FunctionParameters(ParameterNode* firstParameter, unsigned size)154 : m_size(size)155 {156 unsigned i = 0;157 for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam()) {158 auto pattern = parameter->pattern();159 pattern->ref();160 patterns()[i++] = pattern;161 }162 }163 164 FunctionParameters::~FunctionParameters()165 {166 for (unsigned i = 0; i < m_size; ++i)167 patterns()[i]->deref();168 }169 170 142 FunctionBodyNode::FunctionBodyNode( 171 143 ParserArena&, const JSTokenLocation& startLocation, 172 144 const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, 173 int functionKeywordStart, int functionNameStart, int parametersStart, 174 bool isInStrictContext, ConstructorKind constructorKind)145 int functionKeywordStart, int functionNameStart, int parametersStart, bool isInStrictContext, 146 ConstructorKind constructorKind, unsigned parameterCount, FunctionParseMode mode) 175 147 : StatementNode(endLocation) 176 148 , m_startColumn(startColumn) … … 180 152 , m_parametersStart(parametersStart) 181 153 , m_startStartOffset(startLocation.startOffset) 154 , m_parameterCount(parameterCount) 155 , m_parseMode(mode) 182 156 , m_isInStrictContext(isInStrictContext) 183 157 , m_constructorKind(static_cast<unsigned>(constructorKind)) … … 186 160 } 187 161 188 void FunctionBodyNode::finishParsing(const SourceCode& source, ParameterNode* firstParameter,const Identifier& ident, enum FunctionMode functionMode)162 void FunctionBodyNode::finishParsing(const SourceCode& source, const Identifier& ident, enum FunctionMode functionMode) 189 163 { 190 164 m_source = source; 191 m_parameters = FunctionParameters::create(firstParameter);192 165 m_ident = ident; 193 166 m_functionMode = functionMode; … … 202 175 // ------------------------------ FunctionNode ----------------------------- 203 176 204 FunctionNode::FunctionNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack& funcStack, VariableEnvironment& lexicalVariables, const SourceCode& sourceCode, CodeFeatures features, int numConstants)177 FunctionNode::FunctionNode(ParserArena& parserArena, const JSTokenLocation& startLocation, const JSTokenLocation& endLocation, unsigned startColumn, unsigned endColumn, SourceElements* children, VariableEnvironment& varEnvironment, FunctionStack& funcStack, VariableEnvironment& lexicalVariables, FunctionParameters* parameters, const SourceCode& sourceCode, CodeFeatures features, int numConstants) 205 178 : ScopeNode(parserArena, startLocation, endLocation, sourceCode, children, varEnvironment, funcStack, lexicalVariables, features, numConstants) 179 , m_parameters(parameters) 206 180 , m_startColumn(startColumn) 207 181 , m_endColumn(endColumn) … … 209 183 } 210 184 211 void FunctionNode::finishParsing( PassRefPtr<FunctionParameters> parameters,const Identifier& ident, enum FunctionMode functionMode)185 void FunctionNode::finishParsing(const Identifier& ident, enum FunctionMode functionMode) 212 186 { 213 187 ASSERT(!source().isNull()); 214 m_parameters = parameters;215 188 m_ident = ident; 216 189 m_functionMode = functionMode;
Note:
See TracChangeset
for help on using the changeset viewer.