Changeset 47775 in webkit for trunk/JavaScriptCore/parser/Nodes.cpp
- Timestamp:
- Aug 26, 2009, 12:46:47 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/parser/Nodes.cpp
r47738 r47775 1981 1981 // ------------------------------ FunctionBodyNode ----------------------------- 1982 1982 1983 FunctionParameters::FunctionParameters(ParameterNode* firstParameter) 1984 { 1985 for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam()) 1986 append(parameter->ident()); 1987 } 1988 1983 1989 inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData) 1984 1990 : ScopeNode(globalData) 1985 , m_parameters(0)1986 , m_parameterCount(0)1987 1991 { 1988 1992 } … … 1990 1994 inline FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, const SourceCode& sourceCode, CodeFeatures features, int numConstants) 1991 1995 : ScopeNode(globalData, sourceCode, children, varStack, funcStack, features, numConstants) 1992 , m_parameters(0) 1993 , m_parameterCount(0) 1994 { 1995 } 1996 1997 FunctionBodyNode::~FunctionBodyNode() 1998 { 1999 for (size_t i = 0; i < m_parameterCount; ++i) 2000 m_parameters[i].~Identifier(); 2001 fastFree(m_parameters); 1996 { 2002 1997 } 2003 1998 2004 1999 void FunctionBodyNode::finishParsing(const SourceCode& source, ParameterNode* firstParameter, const Identifier& ident) 2005 2000 { 2006 Vector<Identifier> parameters;2007 for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter->nextParam())2008 parameters.append(parameter->ident());2009 size_t count = parameters.size();2010 2011 2001 setSource(source); 2012 finishParsing( parameters.releaseBuffer(), count, ident);2013 } 2014 2015 void FunctionBodyNode::finishParsing( Identifier* parameters, size_t parameterCount, const Identifier& ident)2002 finishParsing(FunctionParameters::create(firstParameter), ident); 2003 } 2004 2005 void FunctionBodyNode::finishParsing(PassRefPtr<FunctionParameters> parameters, const Identifier& ident) 2016 2006 { 2017 2007 ASSERT(!source().isNull()); 2018 2008 m_parameters = parameters; 2019 m_parameterCount = parameterCount;2020 2009 m_ident = ident; 2021 2010 } … … 2054 2043 } 2055 2044 2056 Identifier* FunctionBodyNode::copyParameters()2057 {2058 Identifier* parameters = static_cast<Identifier*>(fastMalloc(m_parameterCount * sizeof(Identifier)));2059 VectorCopier<false, Identifier>::uninitializedCopy(m_parameters, m_parameters + m_parameterCount, parameters);2060 return parameters;2061 }2062 2063 2045 // ------------------------------ FuncDeclNode --------------------------------- 2064 2046
Note:
See TracChangeset
for help on using the changeset viewer.