Paste number 60566: Patch for olliej

Paste number 60566: Patch for olliej
Pasted by: cpst
5 days, 22 hours ago
#webkit | Context in IRC logs
Paste contents:
Raw Source | XML | Display As
Index: kjs/nodes.cpp
===================================================================
--- kjs/nodes.cpp        (revision 33029)
+++ kjs/nodes.cpp        (working copy)
@@ -4345,8 +4345,10 @@ found:
 RegisterID* AssignDotNode::emitCode(CodeGenerator& generator, RegisterID* dst)
 {
     RefPtr<RegisterID> base = generator.emitNode(m_base.get());
-    RegisterID* value = generator.emitNode(dst, m_right.get());
-    return generator.emitPutById(base.get(), m_ident, value);
+    RefPtr<RegisterID> tempDst = generator.tempDestination(dst);
+    generator.emitNode(tempDst.get(), m_right.get());
+    generator.emitPutById(base.get(), m_ident, tempDst.get());
+    return generator.moveToDestinationIfNeeded(dst, tempDst.get());
 }
 
 void AssignDotNode::optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack& nodeStack)
@@ -4426,8 +4428,10 @@ RegisterID* AssignBracketNode::emitCode(
 {
     RefPtr<RegisterID> base = generator.emitNode(m_base.get());
     RefPtr<RegisterID> property = generator.emitNode(m_subscript.get());
-    RegisterID* value = generator.emitNode(dst, m_right.get());
-    return generator.emitPutByVal(base.get(), property.get(), value);
+    RefPtr<RegisterID> tempDst = generator.tempDestination(dst);
+    generator.emitNode(tempDst.get(), m_right.get());
+    generator.emitPutByVal(base.get(), property.get(), tempDst.get());
+    return generator.moveToDestinationIfNeeded(dst, tempDst.get());
 }
 
 void AssignBracketNode::optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack& nodeStack)

This paste has no annotations.

Colorize as:
Show Line Numbers

Ads absolutely not by Google

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.