summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-02-24 16:36:50 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-02-24 16:36:50 +0100
commitad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (patch)
treeb34b0daceb7c8e7fdde4b4ec43650ab7caadb0a9 /Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
parent03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (diff)
downloadqtwebkit-ad0d549d4cc13433f77c1ac8f0ab379c83d93f28.tar.gz
Imported WebKit commit bb52bf3c0119e8a128cd93afe5572413a8617de9 (http://svn.webkit.org/repository/webkit/trunk@108790)
Diffstat (limited to 'Source/JavaScriptCore/bytecode/StructureStubInfo.cpp')
-rw-r--r--Source/JavaScriptCore/bytecode/StructureStubInfo.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp b/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
index ec18782d5..f2657b785 100644
--- a/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
+++ b/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
@@ -27,6 +27,7 @@
#include "StructureStubInfo.h"
#include "JSObject.h"
+#include "PolymorphicPutByIdList.h"
#include "ScopeChain.h"
namespace JSC {
@@ -45,6 +46,9 @@ void StructureStubInfo::deref()
delete polymorphicStructures;
return;
}
+ case access_put_by_id_list:
+ delete u.putByIdList.list;
+ return;
case access_get_by_id_self:
case access_get_by_id_proto:
case access_get_by_id_chain:
@@ -82,18 +86,14 @@ bool StructureStubInfo::visitWeakReferences()
break;
case access_get_by_id_self_list: {
PolymorphicAccessStructureList* polymorphicStructures = u.getByIdSelfList.structureList;
- if (!polymorphicStructures->visitWeak(u.getByIdSelfList.listSize)) {
- delete polymorphicStructures;
+ if (!polymorphicStructures->visitWeak(u.getByIdSelfList.listSize))
return false;
- }
break;
}
case access_get_by_id_proto_list: {
PolymorphicAccessStructureList* polymorphicStructures = u.getByIdProtoList.structureList;
- if (!polymorphicStructures->visitWeak(u.getByIdSelfList.listSize)) {
- delete polymorphicStructures;
+ if (!polymorphicStructures->visitWeak(u.getByIdSelfList.listSize))
return false;
- }
break;
}
case access_put_by_id_transition_normal:
@@ -107,6 +107,10 @@ bool StructureStubInfo::visitWeakReferences()
if (!Heap::isMarked(u.putByIdReplace.baseObjectStructure.get()))
return false;
break;
+ case access_put_by_id_list:
+ if (!u.putByIdList.list->visitWeak())
+ return false;
+ break;
default:
// The rest of the instructions don't require references, so there is no need to
// do anything.