2008-12-02 Geoffrey Garen <ggaren@apple.com>
[WebKit-https.git] / JavaScriptCore / bytecode / CodeBlock.cpp
index c7d329d..88707c7 100644 (file)
@@ -468,7 +468,6 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
         }
         case op_negate: {
             printUnaryOp(location, it, "negate");
-            ++it;
             break;
         }
         case op_add: {
@@ -642,10 +641,18 @@ void CodeBlock::dump(ExecState* exec, const Vector<Instruction>::const_iterator&
             printGetByIdOp(location, it, identifiers, "get_by_id_self");
             break;
         }
+        case op_get_by_id_self_list: {
+            printGetByIdOp(location, it, identifiers, "get_by_id_self_list");
+            break;
+        }
         case op_get_by_id_proto: {
             printGetByIdOp(location, it, identifiers, "get_by_id_proto");
             break;
         }
+        case op_get_by_id_proto_list: {
+            printGetByIdOp(location, it, identifiers, "op_get_by_id_proto_list");
+            break;
+        }
         case op_get_by_id_chain: {
             printGetByIdOp(location, it, identifiers, "get_by_id_chain");
             break;
@@ -1019,7 +1026,14 @@ void CodeBlock::derefStructures(Instruction* vPC) const
             vPC[4].u.structure->deref();
         return;
     }
-    
+    if ((vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto_list))
+        || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self_list))) {
+        PolymorphicAccessStructureList* polymorphicStructures = vPC[4].u.polymorphicStructures;
+        polymorphicStructures->derefStructures(vPC[5].u.operand);
+        delete polymorphicStructures;
+        return;
+    }
+
     // These instructions don't ref their Structures.
     ASSERT(vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id) || vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_generic) || vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_generic) || vPC[0].u.opcode == interpreter->getOpcode(op_get_array_length) || vPC[0].u.opcode == interpreter->getOpcode(op_get_string_length));
 }