Reviewed by John.

	- fixed <rdar://problem/4232452> many many leaks in kjsyyparse on some well-formed JavaScript (can repro on sony.com, webkit tests)

	Fixed by changing the refcounting scheme for nodes. Instead of each node implementing a custom ref and
	deref for all its children (and being responsible for deleting them), nodes use a smart pointer to
	hold their children, and smart pointers are used outside the node tree as well. This change mostly
	removes code.

	* JavaScriptCore.xcodeproj/project.pbxproj:
        * kjs/function.cpp:
        (KJS::DeclaredFunctionImp::DeclaredFunctionImp):
        (KJS::GlobalFuncImp::callAsFunction):
        * kjs/function.h:
        * kjs/function_object.cpp:
        (FunctionObjectImp::construct):
        * kjs/grammar.y:
        * kjs/internal.cpp:
        (KJS::Parser::parse):
        (KJS::Parser::accept):
        (KJS::InterpreterImp::checkSyntax):
        (KJS::InterpreterImp::evaluate):
        * kjs/internal.h:
        * kjs/nodes.cpp:
        (Node::Node):
        (Node::~Node):
        (ElementNode::evaluate):
        (PropertyValueNode::evaluate):
        (ArgumentListNode::evaluateList):
        (NewExprNode::evaluate):
        (FunctionCallValueNode::evaluate):
        (FunctionCallBracketNode::evaluate):
        (FunctionCallDotNode::evaluate):
        (RelationalNode::evaluate):
        (StatListNode::execute):
        (StatListNode::processVarDecls):
        (VarDeclListNode::evaluate):
        (VarDeclListNode::processVarDecls):
        (ForInNode::ForInNode):
        (ClauseListNode::processVarDecls):
        (CaseBlockNode::evalBlock):
        (FuncDeclNode::processFuncDecl):
        (FuncExprNode::evaluate):
        (SourceElementsNode::execute):
        (SourceElementsNode::processFuncDecl):
        (SourceElementsNode::processVarDecls):
        * kjs/nodes.h:
        (KJS::Node::ref):
        (KJS::Node::deref):
        (KJS::NumberNode::NumberNode):
        (KJS::GroupNode::GroupNode):
        (KJS::ElementNode::ElementNode):
        (KJS::ArrayNode::ArrayNode):
        (KJS::PropertyValueNode::PropertyValueNode):
        (KJS::ObjectLiteralNode::ObjectLiteralNode):
        (KJS::BracketAccessorNode::BracketAccessorNode):
        (KJS::DotAccessorNode::DotAccessorNode):
        (KJS::ArgumentListNode::ArgumentListNode):
        (KJS::ArgumentsNode::ArgumentsNode):
        (KJS::NewExprNode::NewExprNode):
        (KJS::FunctionCallValueNode::FunctionCallValueNode):
        (KJS::FunctionCallResolveNode::FunctionCallResolveNode):
        (KJS::FunctionCallBracketNode::FunctionCallBracketNode):
        (KJS::FunctionCallDotNode::FunctionCallDotNode):
        (KJS::PostfixNode::PostfixNode):
        (KJS::DeleteNode::DeleteNode):
        (KJS::VoidNode::VoidNode):
        (KJS::TypeOfNode::TypeOfNode):
        (KJS::PrefixNode::PrefixNode):
        (KJS::UnaryPlusNode::UnaryPlusNode):
        (KJS::NegateNode::NegateNode):
        (KJS::BitwiseNotNode::BitwiseNotNode):
        (KJS::LogicalNotNode::LogicalNotNode):
        (KJS::MultNode::MultNode):
        (KJS::AddNode::AddNode):
        (KJS::ShiftNode::ShiftNode):
        (KJS::RelationalNode::RelationalNode):
        (KJS::EqualNode::EqualNode):
        (KJS::BitOperNode::BitOperNode):
        (KJS::BinaryLogicalNode::BinaryLogicalNode):
        (KJS::ConditionalNode::ConditionalNode):
        (KJS::AssignResolveNode::AssignResolveNode):
        (KJS::AssignBracketNode::AssignBracketNode):
        (KJS::AssignDotNode::AssignDotNode):
        (KJS::CommaNode::CommaNode):
        (KJS::AssignExprNode::AssignExprNode):
        (KJS::VarDeclListNode::VarDeclListNode):
        (KJS::VarStatementNode::VarStatementNode):
        (KJS::ExprStatementNode::ExprStatementNode):
        (KJS::IfNode::IfNode):
        (KJS::DoWhileNode::DoWhileNode):
        (KJS::WhileNode::WhileNode):
        (KJS::ForNode::ForNode):
        (KJS::ReturnNode::ReturnNode):
        (KJS::WithNode::WithNode):
        (KJS::CaseClauseNode::CaseClauseNode):
        (KJS::ClauseListNode::ClauseListNode):
        (KJS::ClauseListNode::clause):
        (KJS::ClauseListNode::next):
        (KJS::SwitchNode::SwitchNode):
        (KJS::LabelNode::LabelNode):
        (KJS::ThrowNode::ThrowNode):
        (KJS::CatchNode::CatchNode):
        (KJS::FinallyNode::FinallyNode):
        (KJS::TryNode::TryNode):
        (KJS::ParameterNode::ParameterNode):
        (KJS::ParameterNode::nextParam):
        (KJS::FuncDeclNode::FuncDeclNode):
        (KJS::FuncExprNode::FuncExprNode):
        * kjs/nodes2string.cpp:
        (KJS::SourceStream::operator<<):
        (ElementNode::streamTo):
        (PropertyValueNode::streamTo):
        (ArgumentListNode::streamTo):
        (StatListNode::streamTo):
        (VarDeclListNode::streamTo):
        (CaseBlockNode::streamTo):
        (ParameterNode::streamTo):
        (SourceElementsNode::streamTo):
        * kjs/shared_ptr.h: Added.
        (kxmlcore::SharedPtr::SharedPtr):
        (kxmlcore::SharedPtr::~SharedPtr):
        (kxmlcore::SharedPtr::isNull):
        (kxmlcore::SharedPtr::notNull):
        (kxmlcore::SharedPtr::reset):
        (kxmlcore::SharedPtr::get):
        (kxmlcore::SharedPtr::operator*):
        (kxmlcore::SharedPtr::operator->):
        (kxmlcore::SharedPtr::operator!):
        (kxmlcore::SharedPtr::operator bool):
        (kxmlcore::SharedPtr::operator==):
        (kxmlcore::::operator):
        (kxmlcore::operator!=):
        (kxmlcore::static_pointer_cast):
        (kxmlcore::const_pointer_cast):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@10352 268f45cc-cd09-0410-ab3c-d52691b4dbfc
12 files changed