Changeset 174606 in webkit for trunk/Source/JavaScriptCore/parser
- Timestamp:
- Oct 10, 2014, 12:03:20 PM (11 years ago)
- Location:
- trunk/Source/JavaScriptCore/parser
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Nodes.h
r172717 r174606 1441 1441 bool usesArguments() const { return (m_features & ArgumentsFeature) && !(m_features & ShadowsArgumentsFeature); } 1442 1442 bool modifiesParameter() const { return m_features & ModifiedParameterFeature; } 1443 bool modifiesArguments() const { return m_features & (EvalFeature | ModifiedArgumentsFeature); } 1443 1444 bool isStrictMode() const { return m_features & StrictModeFeature; } 1444 1445 void setUsesArguments() { m_features |= ArgumentsFeature; } -
trunk/Source/JavaScriptCore/parser/Parser.cpp
r173026 r174606 272 272 IdentifierSet capturedVariables; 273 273 bool modifiedParameter = false; 274 scope->getCapturedVariables(capturedVariables, modifiedParameter); 274 bool modifiedArguments = false; 275 scope->getCapturedVariables(capturedVariables, modifiedParameter, modifiedArguments); 275 276 276 277 CodeFeatures features = context.features(); … … 281 282 if (modifiedParameter) 282 283 features |= ModifiedParameterFeature; 283 284 if (modifiedArguments) 285 features |= ModifiedArgumentsFeature; 284 286 Vector<RefPtr<StringImpl>> closedVariables; 285 287 if (m_parsingBuiltin) { … … 293 295 if (scope->hasDeclaredParameter(Identifier(m_vm, variable.get()))) 294 296 continue; 297 298 if (variable == m_vm->propertyNames->arguments.impl()) 299 continue; 300 295 301 closedVariables.append(variable); 296 302 } -
trunk/Source/JavaScriptCore/parser/Parser.h
r173026 r174606 280 280 } 281 281 282 void getCapturedVariables(IdentifierSet& capturedVariables, bool& modifiedParameter )282 void getCapturedVariables(IdentifierSet& capturedVariables, bool& modifiedParameter, bool& modifiedArguments) 283 283 { 284 284 if (m_needsFullActivation || m_usesEval) { … … 293 293 } 294 294 modifiedParameter = false; 295 if (shadowsArguments()) 296 modifiedArguments = true; 295 297 if (m_declaredParameters.size()) { 296 298 IdentifierSet::iterator end = m_writtenVariables.end(); 297 299 for (IdentifierSet::iterator ptr = m_writtenVariables.begin(); ptr != end; ++ptr) { 300 if (*ptr == m_vm->propertyNames->arguments.impl()) 301 modifiedArguments = true; 298 302 if (!m_declaredParameters.contains(*ptr)) 299 303 continue; -
trunk/Source/JavaScriptCore/parser/ParserModes.h
r167313 r174606 76 76 const CodeFeatures ShadowsArgumentsFeature = 1 << 6; 77 77 const CodeFeatures ModifiedParameterFeature = 1 << 7; 78 const CodeFeatures ModifiedArgumentsFeature = 1 << 8; 78 79 79 80 const CodeFeatures AllFeatures = EvalFeature | ArgumentsFeature | WithFeature | CatchFeature | ThisFeature | StrictModeFeature | ShadowsArgumentsFeature | ModifiedParameterFeature;
Note:
See TracChangeset
for help on using the changeset viewer.