2011-02-01 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r77297.
http://trac.webkit.org/changeset/77297
https://bugs.webkit.org/show_bug.cgi?id=53538
caused leopard crashes (Requested by paroga on #webkit).
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::fromUTF8):
* wtf/unicode/UTF8.cpp:
(WTF::Unicode::calculateStringHashFromUTF8):
* wtf/unicode/UTF8.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@77360 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/JavaScriptCore/runtime/Heap.cpp b/Source/JavaScriptCore/runtime/Heap.cpp
index 7060d6c..f032eca 100644
--- a/Source/JavaScriptCore/runtime/Heap.cpp
+++ b/Source/JavaScriptCore/runtime/Heap.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "Heap.h"
+#include "CodeBlock.h"
#include "CollectorHeapIterator.h"
#include "ConservativeSet.h"
#include "GCActivityCallback.h"
@@ -250,6 +251,11 @@
// Mark temporary vector for Array sorting
markTempSortVectors(markStack);
markStack.drain();
+
+ HashSet<GlobalCodeBlock*>::const_iterator end = m_codeBlocks.end();
+ for (HashSet<GlobalCodeBlock*>::const_iterator it = m_codeBlocks.begin(); it != end; ++it)
+ (*it)->markAggregate(markStack);
+ markStack.drain();
// Mark misc. other roots.
if (m_markListSet && m_markListSet->size())
@@ -289,27 +295,18 @@
size_t Heap::globalObjectCount()
{
- size_t count = 0;
- if (JSGlobalObject* head = m_globalData->head) {
- JSGlobalObject* o = head;
- do {
- ++count;
- o = o->next();
- } while (o != head);
- }
- return count;
+ return m_globalData->globalObjects.uncheckedSize();
}
size_t Heap::protectedGlobalObjectCount()
{
size_t count = 0;
- if (JSGlobalObject* head = m_globalData->head) {
- JSGlobalObject* o = head;
- do {
- if (m_protectedValues.contains(o))
- ++count;
- o = o->next();
- } while (o != head);
+
+ GlobalObjectMap& map = m_globalData->globalObjects;
+ GlobalObjectMap::iterator end = map.uncheckedEnd();
+ for (GlobalObjectMap::iterator it = map.uncheckedBegin(); it != end; ++it) {
+ if (map.isValid(it) && m_protectedValues.contains(it->second.get()))
+ ++count;
}
return count;