Changeset 34555 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- Jun 14, 2008, 10:24:21 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.cpp
r34544 r34555 328 328 // ------------------------------ ResolveNode ---------------------------------- 329 329 330 bool ResolveNode::isPure(CodeGenerator& generator) const 331 { 332 return generator.isLocal(m_ident); 333 } 334 330 335 RegisterID* ResolveNode::emitCode(CodeGenerator& generator, RegisterID* dst) 331 336 { … … 403 408 RegisterID* BracketAccessorNode::emitCode(CodeGenerator& generator, RegisterID* dst) 404 409 { 405 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments, m_subscript.get()->is Constant());410 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments, m_subscript.get()->isPure(generator)); 406 411 RegisterID* property = generator.emitNode(m_subscript.get()); 407 412 … … 824 829 RegisterID* AddNode::emitCode(CodeGenerator& generator, RegisterID* dst) 825 830 { 826 RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_term1.get(), m_rightHasAssignments, m_term2.get()->is Constant());831 RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_term1.get(), m_rightHasAssignments, m_term2.get()->isPure(generator)); 827 832 RegisterID* src2 = generator.emitNode(m_term2.get()); 828 833 return generator.emitAdd(generator.finalDestination(dst, src1.get()), src1.get(), src2); … … 831 836 RegisterID* SubNode::emitCode(CodeGenerator& generator, RegisterID* dst) 832 837 { 833 RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_term1.get(), m_rightHasAssignments, m_term2.get()->is Constant());838 RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_term1.get(), m_rightHasAssignments, m_term2.get()->isPure(generator)); 834 839 RegisterID* src2 = generator.emitNode(m_term2.get()); 835 840 return generator.emitSub(generator.finalDestination(dst, src1.get()), src1.get(), src2); … … 1049 1054 } 1050 1055 1051 if (generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right.get()->is Constant())) {1056 if (generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right.get()->isPure(generator))) { 1052 1057 RefPtr<RegisterID> result = generator.newTemporary(); 1053 1058 generator.emitMove(result.get(), local); … … 1109 1114 RegisterID* AssignDotNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1110 1115 { 1111 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right.get()->is Constant());1116 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right.get()->isPure(generator)); 1112 1117 RefPtr<RegisterID> value = generator.destinationForAssignResult(dst); 1113 1118 RegisterID* result = generator.emitNode(value.get(), m_right.get()); … … 1120 1125 RegisterID* ReadModifyDotNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1121 1126 { 1122 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right.get()->is Constant());1127 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right.get()->isPure(generator)); 1123 1128 RefPtr<RegisterID> value = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident); 1124 1129 RegisterID* change = generator.emitNode(m_right.get()); … … 1138 1143 RegisterID* AssignBracketNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1139 1144 { 1140 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript.get()->is Constant() && m_right.get()->isConstant());1141 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right.get()->is Constant());1145 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript.get()->isPure(generator) && m_right.get()->isPure(generator)); 1146 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right.get()->isPure(generator)); 1142 1147 RefPtr<RegisterID> value = generator.destinationForAssignResult(dst); 1143 1148 RegisterID* result = generator.emitNode(value.get(), m_right.get()); … … 1148 1153 RegisterID* ReadModifyBracketNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1149 1154 { 1150 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript.get()->is Constant() && m_right.get()->isConstant());1151 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right.get()->is Constant());1155 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript.get()->isPure(generator) && m_right.get()->isPure(generator)); 1156 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right.get()->isPure(generator)); 1152 1157 1153 1158 RefPtr<RegisterID> value = generator.emitGetByVal(generator.tempDestination(dst), base.get(), property.get());
Note:
See TracChangeset
for help on using the changeset viewer.