Changeset 34528 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- Jun 13, 2008, 9:40:45 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.cpp
r34500 r34528 410 410 RegisterID* BracketAccessorNode::emitCode(CodeGenerator& generator, RegisterID* dst) 411 411 { 412 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments );412 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments, m_subscript.get()->isConstant()); 413 413 RegisterID* property = generator.emitNode(m_subscript.get()); 414 414 … … 1056 1056 } 1057 1057 1058 if (generator.leftHandSideNeedsCopy(m_rightHasAssignments ) && !m_right.get()->isNumber()) {1058 if (generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right.get()->isConstant())) { 1059 1059 RefPtr<RegisterID> result = generator.newTemporary(); 1060 1060 generator.emitMove(result.get(), local); … … 1116 1116 RegisterID* AssignDotNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1117 1117 { 1118 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments );1118 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right.get()->isConstant()); 1119 1119 RefPtr<RegisterID> value = generator.destinationForAssignResult(dst); 1120 1120 RegisterID* result = generator.emitNode(value.get(), m_right.get()); … … 1127 1127 RegisterID* ReadModifyDotNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1128 1128 { 1129 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments );1129 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right.get()->isConstant()); 1130 1130 RefPtr<RegisterID> value = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident); 1131 1131 RegisterID* change = generator.emitNode(m_right.get()); … … 1145 1145 RegisterID* AssignBracketNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1146 1146 { 1147 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments );1148 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments );1147 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript.get()->isConstant() && m_right.get()->isConstant()); 1148 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right.get()->isConstant()); 1149 1149 RefPtr<RegisterID> value = generator.destinationForAssignResult(dst); 1150 1150 RegisterID* result = generator.emitNode(value.get(), m_right.get()); … … 1155 1155 RegisterID* ReadModifyBracketNode::emitCode(CodeGenerator& generator, RegisterID* dst) 1156 1156 { 1157 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments );1158 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments );1157 RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments || m_rightHasAssignments, m_subscript.get()->isConstant() && m_right.get()->isConstant()); 1158 RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right.get()->isConstant()); 1159 1159 1160 1160 RefPtr<RegisterID> value = generator.emitGetByVal(generator.tempDestination(dst), base.get(), property.get());
Note:
See TracChangeset
for help on using the changeset viewer.