-
mjs authored
collector. This step clearly splits evaluating to a reference and evaluating to a value, and moves all of the reference-specific operations from Value to Reference. A special ConstReference class helps out for the one case where you need special reference operations if the result is a reference, and not otherwise. Also, Reference now inherits privately from Value, and there is a new ReferenceList class that inherits privately from List, so the uses of Reference and Value are now completely orthogonal. This means that as the next step, their implementations can be completely disentangled. This step has no actual performance impact. * kjs/collector.cpp: (Collector::collect): * kjs/nodes.cpp: (Node::evaluateReference): (ResolveNode::evaluate): (ResolveNode::evaluateReference): (ElementNode::evaluate): (PropertyValueNode::evaluate): (AccessorNode1::evaluate): (AccessorNode1::evaluateReference): (AccessorNode2::evaluate): (AccessorNode2::evaluateReference): (ArgumentListNode::evaluateList): (NewExprNode::evaluate): (FunctionCallNode::evaluate): (PostfixNode::evaluate): (DeleteNode::evaluate): (VoidNode::evaluate): (TypeOfNode::evaluate): (PrefixNode::evaluate): (UnaryPlusNode::evaluate): (NegateNode::evaluate): (BitwiseNotNode::evaluate): (LogicalNotNode::evaluate): (MultNode::evaluate): (AddNode::evaluate): (ShiftNode::evaluate): (RelationalNode::evaluate): (EqualNode::evaluate): (BitOperNode::evaluate): (BinaryLogicalNode::evaluate): (ConditionalNode::evaluate): (AssignNode::evaluate): (CommaNode::evaluate): (VarDeclNode::evaluate): (ExprStatementNode::execute): (IfNode::execute): (DoWhileNode::execute): (WhileNode::execute): (ForNode::execute): (ForInNode::execute): (ReturnNode::execute): (WithNode::execute): (CaseClauseNode::evaluate): (SwitchNode::execute): (ThrowNode::execute): * kjs/nodes.h: * kjs/types.cpp: (ConstReference::ConstReference): * kjs/types.h: * kjs/value.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1837 268f45cc-cd09-0410-ab3c-d52691b4dbfc
01f82a58