2011-06-16 Geoffrey Garen <ggaren@apple.com>
authorggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Jun 2011 22:01:43 +0000 (22:01 +0000)
committerggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Jun 2011 22:01:43 +0000 (22:01 +0000)
        Reviewed by Oliver Hunt.

        Introduced SlotVisitor into the project
        https://bugs.webkit.org/show_bug.cgi?id=62820

        This resolves a class vs typedef forward declaration issue, and gives all
        exported symbols the correct names.

        * CMakeLists.txt:
        * GNUmakefile.list.am:
        * JavaScriptCore.exp:
        * JavaScriptCore.gypi:
        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
        * JavaScriptCore.xcodeproj/project.pbxproj: Build!

        * bytecode/EvalCodeCache.h:
        * heap/HandleHeap.h:
        * heap/Heap.cpp:
        (JSC::Heap::Heap):
        (JSC::Heap::markRoots):
        * heap/Heap.h:
        * heap/HeapRootVisitor.h: Replaced MarkStack with SlotVisitor. Now no
        clients operate on a MarkStack.

        * heap/MarkStack.cpp:
        (JSC::SlotVisitor::visitChildren):
        (JSC::SlotVisitor::drain):
        * heap/SlotVisitor.h: Added.
        (JSC::SlotVisitor::SlotVisitor): Used 'protected' and a little cheesy
        inheritance to give SlotVisitor all the attributes of MarkStack without
        making this change giant. Over time, we will move more behavior into
        SlotVisitor and its subclasses.

        * heap/MarkStack.h:
        * heap/NewSpace.h: Replaced MarkStack with SlotVisitor. Now no
        clients operate on a MarkStack.

        * runtime/ArgList.h:
        * runtime/JSCell.h:
        * runtime/JSObject.h:
        * runtime/ScopeChain.h:
        * runtime/SmallStrings.h:
        * runtime/Structure.h: Replaced MarkStack with SlotVisitor. Now no
        clients operate on a MarkStack.
2011-06-16  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Oliver Hunt.

        Introduced SlotVisitor into the project
        https://bugs.webkit.org/show_bug.cgi?id=62820

        This resolves a class vs typedef forward declaration issue, and gives all
        exported symbols the correct names.

        * dom/EventListener.h:
        * dom/Node.h:
        * dom/NodeFilterCondition.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@89069 268f45cc-cd09-0410-ab3c-d52691b4dbfc

28 files changed:
Source/JavaScriptCore/CMakeLists.txt
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/GNUmakefile.list.am
Source/JavaScriptCore/JavaScriptCore.exp
Source/JavaScriptCore/JavaScriptCore.gypi
Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
Source/JavaScriptCore/bytecode/EvalCodeCache.h
Source/JavaScriptCore/heap/HandleHeap.h
Source/JavaScriptCore/heap/Heap.cpp
Source/JavaScriptCore/heap/Heap.h
Source/JavaScriptCore/heap/HeapRootVisitor.h
Source/JavaScriptCore/heap/MarkStack.cpp
Source/JavaScriptCore/heap/MarkStack.h
Source/JavaScriptCore/heap/NewSpace.h
Source/JavaScriptCore/heap/SlotVisitor.h [new file with mode: 0644]
Source/JavaScriptCore/runtime/ArgList.h
Source/JavaScriptCore/runtime/JSCell.h
Source/JavaScriptCore/runtime/JSObject.h
Source/JavaScriptCore/runtime/ScopeChain.h
Source/JavaScriptCore/runtime/SmallStrings.h
Source/JavaScriptCore/runtime/Structure.h
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSCSSRuleListCustom.cpp
Source/WebCore/bindings/js/JSCSSValueCustom.cpp
Source/WebCore/dom/EventListener.h
Source/WebCore/dom/Node.h
Source/WebCore/dom/NodeFilterCondition.h

index afb5daf..8fe6db7 100644 (file)
@@ -44,6 +44,7 @@ SET(JavaScriptCore_SOURCES
 
     heap/Heap.cpp
     heap/HandleHeap.cpp
+    heap/SlotVisitor.cpp
     heap/HandleStack.cpp
     heap/MachineStackMarker.cpp
     heap/MarkedBlock.cpp
index 7d29ab3..ac867fe 100644 (file)
@@ -1,3 +1,50 @@
+2011-06-16  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Oliver Hunt.
+
+        Introduced SlotVisitor into the project
+        https://bugs.webkit.org/show_bug.cgi?id=62820
+        
+        This resolves a class vs typedef forward declaration issue, and gives all
+        exported symbols the correct names.
+
+        * CMakeLists.txt:
+        * GNUmakefile.list.am:
+        * JavaScriptCore.exp:
+        * JavaScriptCore.gypi:
+        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+        * JavaScriptCore.xcodeproj/project.pbxproj: Build!
+
+        * bytecode/EvalCodeCache.h:
+        * heap/HandleHeap.h:
+        * heap/Heap.cpp:
+        (JSC::Heap::Heap):
+        (JSC::Heap::markRoots):
+        * heap/Heap.h:
+        * heap/HeapRootVisitor.h: Replaced MarkStack with SlotVisitor. Now no
+        clients operate on a MarkStack.
+
+        * heap/MarkStack.cpp:
+        (JSC::SlotVisitor::visitChildren):
+        (JSC::SlotVisitor::drain):
+        * heap/SlotVisitor.h: Added.
+        (JSC::SlotVisitor::SlotVisitor): Used 'protected' and a little cheesy
+        inheritance to give SlotVisitor all the attributes of MarkStack without
+        making this change giant. Over time, we will move more behavior into
+        SlotVisitor and its subclasses.
+
+        * heap/MarkStack.h:
+        * heap/NewSpace.h: Replaced MarkStack with SlotVisitor. Now no
+        clients operate on a MarkStack.
+
+        * runtime/ArgList.h:
+        * runtime/JSCell.h:
+        * runtime/JSObject.h:
+        * runtime/ScopeChain.h:
+        * runtime/SmallStrings.h:
+        * runtime/Structure.h: Replaced MarkStack with SlotVisitor. Now no
+        clients operate on a MarkStack.
+
 2011-06-15  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Geoffrey Garen.
index cb70f1e..99c990e 100644 (file)
@@ -126,6 +126,7 @@ javascriptcore_sources += \
        Source/JavaScriptCore/heap/Handle.h \
        Source/JavaScriptCore/heap/HandleHeap.cpp \
        Source/JavaScriptCore/heap/HandleHeap.h \
+       Source/JavaScriptCore/heap/SlotVisitor.h \
        Source/JavaScriptCore/heap/HandleStack.cpp \
        Source/JavaScriptCore/heap/HandleStack.h \
        Source/JavaScriptCore/heap/HandleTypes.h \
index eb47417..2c04997 100644 (file)
@@ -155,7 +155,7 @@ __ZN3JSC13StatementNode6setLocEii
 __ZN3JSC14JSGlobalObject10globalExecEv
 __ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj
 __ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj
-__ZN3JSC14JSGlobalObject13visitChildrenERNS_9MarkStackE
+__ZN3JSC14JSGlobalObject13visitChildrenERNS_11SlotVisitorE
 __ZN3JSC14JSGlobalObject16addStaticGlobalsEPNS0_18GlobalPropertyInfoEi
 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj
 __ZN3JSC14JSGlobalObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
@@ -172,8 +172,8 @@ __ZN3JSC14ScopeChainNode6s_infoE
 __ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE
 __ZN3JSC14TimeoutChecker5resetEv
 __ZN3JSC14throwTypeErrorEPNS_9ExecStateE
-__ZN3JSC15JSWrapperObject13visitChildrenERNS_9MarkStackE
-__ZN3JSC15WeakHandleOwner26isReachableFromOpaqueRootsENS_6HandleINS_7UnknownEEEPvRNS_9MarkStackE
+__ZN3JSC15JSWrapperObject13visitChildrenERNS_11SlotVisitorE
+__ZN3JSC15WeakHandleOwner26isReachableFromOpaqueRootsENS_6HandleINS_7UnknownEEEPvRNS_11SlotVisitorE
 __ZN3JSC15WeakHandleOwner8finalizeENS_6HandleINS_7UnknownEEEPv
 __ZN3JSC15WeakHandleOwnerD2Ev
 __ZN3JSC15createTypeErrorEPNS_9ExecStateERKNS_7UStringE
@@ -261,7 +261,7 @@ __ZN3JSC6JSLock9lockCountEv
 __ZN3JSC6JSLockC1EPNS_9ExecStateE
 __ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringENS_11RegExpFlagsE
 __ZN3JSC6RegExpD1Ev
-__ZN3JSC7JSArray13visitChildrenERNS_9MarkStackE
+__ZN3JSC7JSArray13visitChildrenERNS_11SlotVisitorE
 __ZN3JSC7JSArray15setSubclassDataEPv
 __ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
 __ZN3JSC7JSArray6s_infoE
@@ -293,7 +293,7 @@ __ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_j
 __ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_j
 __ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE
 __ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE
-__ZN3JSC8JSObject13visitChildrenERNS_9MarkStackE
+__ZN3JSC8JSObject13visitChildrenERNS_11SlotVisitorE
 __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
 __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj
 __ZN3JSC8JSObject15unwrappedObjectEv
index 5fed0ef..9b47519 100644 (file)
@@ -30,6 +30,7 @@
             'heap/ConservativeRoots.h',
             'heap/Handle.h',
             'heap/HandleHeap.h',
+            'heap/SlotVisitor.h',
             'heap/HandleStack.h',
             'heap/HandleTypes.h',
             'heap/Heap.h',
index 22903b6..a42d61e 100644 (file)
@@ -227,7 +227,7 @@ EXPORTS
     ?isGetterSetter@JSCell@JSC@@UBE_NXZ
     ?isHostFunctionNonInline@JSFunction@JSC@@ABE_NXZ
     ?isMainThread@WTF@@YA_NXZ
-    ?isReachableFromOpaqueRoots@WeakHandleOwner@JSC@@UAE_NV?$Handle@W4Unknown@JSC@@@2@PAXAAVMarkStack@2@@Z
+    ?isReachableFromOpaqueRoots@WeakHandleOwner@JSC@@UAE_NV?$Handle@W4Unknown@JSC@@@2@PAXAAVSlotVisitor@2@@Z
     ?isValidAllocation@Heap@JSC@@AAE_NI@Z
     ?isValidCallee@JSValue@JSC@@QAE_NXZ
     ?isVariableObject@JSVariableObject@JSC@@UBE_NXZ
@@ -365,10 +365,10 @@ EXPORTS
     ?unprotect@Heap@JSC@@QAE_NVJSValue@2@@Z
     ?unwrappedObject@JSObject@JSC@@UAEPAV12@XZ
     ?utf8@UString@JSC@@QBE?AVCString@WTF@@_N@Z
-    ?visitChildren@JSGlobalObject@JSC@@UAEXAAVMarkStack@2@@Z
-    ?visitChildren@JSObject@JSC@@UAEXAAVMarkStack@2@@Z
-    ?visitChildren@JSWrapperObject@JSC@@EAEXAAVMarkStack@2@@Z
-    ?visitChildren@ScopeChainNode@JSC@@UAEXAAVMarkStack@2@@Z
+    ?visitChildren@JSDOMGlobalObject@WebCore@@UAEXAAVSlotVisitor@JSC@@@Z
+    ?visitChildren@JSObject@JSC@@UAEXAAVSlotVisitor@2@@Z
+    ?visitChildren@JSWrapperObject@JSC@@EAEXAAVSlotVisitor@2@@Z
+    ?visitChildren@ScopeChainNode@JSC@@UAEXAAVSlotVisitor@2@@Z
     ?vtableAnchor@InternalFunction@JSC@@EAEXXZ
     ?wait@ThreadCondition@WTF@@QAEXAAVMutex@2@@Z
     ?waitForThreadCompletion@WTF@@YAHIPAPAX@Z
index 0ca3aba..96dd42d 100644 (file)
                147F39D7107EC37600427A48 /* JSVariableObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC22A39A0E16E14800AF21C8 /* JSVariableObject.cpp */; };
                1482B74E0A43032800517CFC /* JSStringRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1482B74C0A43032800517CFC /* JSStringRef.cpp */; };
                1482B7E40A43076000517CFC /* JSObjectRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1482B7E20A43076000517CFC /* JSObjectRef.cpp */; };
+               148B572813AA955100DBC90A /* SlotVisitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 148B572713AA955100DBC90A /* SlotVisitor.h */; settings = {ATTRIBUTES = (Private, ); }; };
                148CD1D8108CF902008163C6 /* JSContextRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
                148F21AA107EC53A0042EC2C /* BytecodeGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 969A07200ED1CE3300F1F681 /* BytecodeGenerator.cpp */; };
                148F21B0107EC5410042EC2C /* Lexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8650255597D01FF60F7 /* Lexer.cpp */; };
                1482B7E20A43076000517CFC /* JSObjectRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSObjectRef.cpp; sourceTree = "<group>"; };
                148A1626095D16BB00666D0D /* ListRefPtr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ListRefPtr.h; sourceTree = "<group>"; };
                148A1ECD0D10C23B0069A47C /* RefPtrHashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefPtrHashMap.h; sourceTree = "<group>"; };
+               148B572713AA955100DBC90A /* SlotVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotVisitor.h; path = ../../../webkit/Source/JavaScriptCore/heap/SlotVisitor.h; sourceTree = SOURCE_ROOT; };
                148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContextRefPrivate.h; sourceTree = "<group>"; };
                149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerCallFrame.cpp; sourceTree = "<group>"; };
                149B24FF0D8AF6D1009CB8C7 /* Register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Register.h; sourceTree = "<group>"; };
                                14D2F3D9139F4BE200491031 /* NewSpace.h */,
                                142A1D8113A19C84009DA5FE /* OldSpace.cpp */,
                                142A1D8213A19C84009DA5FE /* OldSpace.h */,
+                               148B572713AA955100DBC90A /* SlotVisitor.h */,
                                142E3132134FF0A600AFADB5 /* Strong.h */,
                                141448CC13A1783700F5BA1A /* TinyBloomFilter.h */,
                                142E3133134FF0A600AFADB5 /* Weak.h */,
                                141448CB13A176EC00F5BA1A /* MarkedBlockSet.h in Headers */,
                                141448CD13A1783700F5BA1A /* TinyBloomFilter.h in Headers */,
                                142A1D8413A19C84009DA5FE /* OldSpace.h in Headers */,
+                               148B572813AA955100DBC90A /* SlotVisitor.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
index df937dd..8c56723 100644 (file)
@@ -42,7 +42,7 @@
 namespace JSC {
 
     class MarkStack;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
     class EvalCodeCache {
     public:
index b325546..7ef84c9 100644 (file)
@@ -39,7 +39,7 @@ class HeapRootVisitor;
 class JSGlobalData;
 class JSValue;
 class MarkStack;
-typedef MarkStack SlotVisitor;
+class SlotVisitor;
 
 class WeakHandleOwner {
 public:
index fe867ff..f78bb07 100644 (file)
@@ -246,7 +246,7 @@ Heap::Heap(JSGlobalData* globalData)
     , m_markListSet(0)
     , m_activityCallback(DefaultGCActivityCallback::create(this))
     , m_machineThreads(this)
-    , m_markStack(globalData->jsArrayVPtr)
+    , m_slotVisitor(globalData->jsArrayVPtr)
     , m_handleHeap(globalData)
     , m_globalData(globalData)
 {
@@ -414,7 +414,7 @@ void Heap::markRoots()
 
     clearMarks();
 
-    MarkStack& visitor = m_markStack;
+    SlotVisitor& visitor = m_slotVisitor;
     HeapRootVisitor heapRootVisitor(visitor);
 
     visitor.append(machineThreadRoots);
index cf5ba44..f0ca406 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "HandleHeap.h"
 #include "HandleStack.h"
-#include "MarkStack.h"
+#include "SlotVisitor.h"
 #include "MarkedBlockSet.h"
 #include "NewSpace.h"
 #include <wtf/Forward.h>
@@ -40,12 +40,11 @@ namespace JSC {
     class JSGlobalData;
     class JSValue;
     class LiveObjectIterator;
-    class MarkStack;
     class MarkedArgumentBuffer;
     class RegisterFile;
     class UString;
     class WeakGCHandlePool;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
     typedef std::pair<JSValue, UString> ValueStringPair;
     typedef HashCountedSet<JSCell*> ProtectCountSet;
@@ -155,7 +154,7 @@ namespace JSC {
         OwnPtr<GCActivityCallback> m_activityCallback;
         
         MachineThreads m_machineThreads;
-        MarkStack m_markStack;
+        SlotVisitor m_slotVisitor;
         HandleHeap m_handleHeap;
         HandleStack m_handleStack;
 
index 6abec13..24c00de 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef HeapRootVisitor_h
 #define HeapRootVisitor_h
 
-#include "MarkStack.h"
+#include "SlotVisitor.h"
 
 namespace JSC {
 
index 3b984c1..4a39828 100644 (file)
@@ -51,7 +51,7 @@ void MarkStack::append(ConservativeRoots& conservativeRoots)
         internalAppend(roots[i]);
 }
 
-inline void MarkStack::visitChildren(JSCell* cell)
+inline void SlotVisitor::visitChildren(JSCell* cell)
 {
     ASSERT(Heap::isMarked(cell));
     if (cell->structure()->typeInfo().type() < CompoundType) {
@@ -79,7 +79,7 @@ inline void MarkStack::visitChildren(JSCell* cell)
     cell->visitChildren(*this);
 }
 
-void MarkStack::drain()
+void SlotVisitor::drain()
 {
 #if !ASSERT_DISABLED
     ASSERT(!m_isDraining);
index a116b35..fa028ee 100644 (file)
@@ -93,10 +93,9 @@ namespace JSC {
         bool containsOpaqueRoot(void*);
         int opaqueRootCount();
 
-        void drain();
         void reset();
 
-    private:
+    protected:
 #if ENABLE(GC_VALIDATION)
         static void validateSet(JSValue*, size_t);
         static void validateValue(JSValue);
@@ -108,7 +107,6 @@ namespace JSC {
 
         void internalAppend(JSCell*);
         void internalAppend(JSValue);
-        void visitChildren(JSCell*);
 
         void* m_jsArrayVPtr;
         MarkStackArray<MarkSet> m_markSets;
@@ -272,7 +270,7 @@ namespace JSC {
             internalAppend(value.asCell());
     }
 
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
 } // namespace JSC
 
index e798cac..4b25a0e 100644 (file)
@@ -41,7 +41,7 @@ namespace JSC {
     class LiveObjectIterator;
     class MarkStack;
     class WeakGCHandle;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
     class NewSpace {
         WTF_MAKE_NONCOPYABLE(NewSpace);
diff --git a/Source/JavaScriptCore/heap/SlotVisitor.h b/Source/JavaScriptCore/heap/SlotVisitor.h
new file mode 100644 (file)
index 0000000..a2e1f90
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SlotVisitor_h
+#define SlotVisitor_h
+
+#include "MarkStack.h"
+
+namespace JSC {
+
+class SlotVisitor : public MarkStack {
+public:
+    SlotVisitor(void* jsArrayVPtr);
+
+    void drain();
+
+private:
+    void visitChildren(JSCell*);
+};
+
+inline SlotVisitor::SlotVisitor(void* jsArrayVPtr)
+    : MarkStack(jsArrayVPtr)
+{
+}
+
+} // namespace JSC
+
+#endif // SlotVisitor_h
index ef7809f..ca50e25 100644 (file)
@@ -31,7 +31,7 @@
 namespace JSC {
 
     class MarkStack;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
     class MarkedArgumentBuffer {
         WTF_MAKE_NONCOPYABLE(MarkedArgumentBuffer);
index 6361236..d6ba643 100644 (file)
@@ -29,7 +29,7 @@
 #include "Heap.h"
 #include "JSLock.h"
 #include "JSValueInlineMethods.h"
-#include "MarkStack.h"
+#include "SlotVisitor.h"
 #include "WriteBarrier.h"
 #include <wtf/Noncopyable.h>
 
index 1c91a8b..9a43959 100644 (file)
@@ -29,7 +29,6 @@
 #include "Completion.h"
 #include "CallFrame.h"
 #include "JSCell.h"
-#include "MarkStack.h"
 #include "PropertySlot.h"
 #include "PutPropertySlot.h"
 #include "ScopeChain.h"
index 7fbb888..bffac09 100644 (file)
@@ -32,7 +32,7 @@ namespace JSC {
     class JSObject;
     class MarkStack;
     class ScopeChainIterator;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
     
     class ScopeChainNode : public JSCell {
     public:
index 012f8d8..7993e2b 100644 (file)
@@ -37,7 +37,7 @@ namespace JSC {
     class JSString;
     class MarkStack;
     class SmallStringsStorage;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
     static const unsigned maxSingleCharacterString = 0xFF;
 
index 1fa7f69..2a0b1a9 100644 (file)
@@ -48,7 +48,7 @@ namespace JSC {
     class PropertyNameArray;
     class PropertyNameArrayData;
     class StructureChain;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 
     struct ClassInfo;
 
index d07cf5b..1db1021 100644 (file)
@@ -1,3 +1,17 @@
+2011-06-16  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Oliver Hunt.
+
+        Introduced SlotVisitor into the project
+        https://bugs.webkit.org/show_bug.cgi?id=62820
+
+        This resolves a class vs typedef forward declaration issue, and gives all
+        exported symbols the correct names.
+
+        * dom/EventListener.h:
+        * dom/Node.h:
+        * dom/NodeFilterCondition.h:
+
 2011-06-16  Abhishek Arya  <inferno@chromium.org>
 
         Reviewed by Adam Barth.
index 367767b..8e7dc18 100644 (file)
@@ -35,15 +35,15 @@ using namespace JSC;
 
 namespace WebCore {
 
-bool JSCSSRuleListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, MarkStack& markStack)
+bool JSCSSRuleListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
 {
     JSCSSRuleList* jsCSSRuleList = static_cast<JSCSSRuleList*>(handle.get().asCell());
     if (!jsCSSRuleList->hasCustomProperties())
         return false;
     if (StyleList* styleList = jsCSSRuleList->impl()->styleList())
-        return markStack.containsOpaqueRoot(root(styleList));
+        return visitor.containsOpaqueRoot(root(styleList));
     if (CSSRule* cssRule = jsCSSRuleList->impl()->item(0))
-        return markStack.containsOpaqueRoot(root(cssRule));
+        return visitor.containsOpaqueRoot(root(cssRule));
     return false;
 }
 
index 22e6285..ee3594d 100644 (file)
@@ -45,7 +45,7 @@ using namespace JSC;
 
 namespace WebCore {
 
-bool JSCSSValueOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void* context, MarkStack& markStack)
+bool JSCSSValueOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void* context, SlotVisitor& visitor)
 {
     JSCSSValue* jsCSSValue = static_cast<JSCSSValue*>(handle.get().asCell());
     if (!jsCSSValue->hasCustomProperties())
@@ -54,7 +54,7 @@ bool JSCSSValueOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handl
     void* root = world->m_cssValueRoots.get(jsCSSValue->impl());
     if (!root)
         return false;
-    return markStack.containsOpaqueRoot(root);
+    return visitor.containsOpaqueRoot(root);
 }
 
 void JSCSSValueOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context)
index 3086135..4774672 100644 (file)
@@ -25,8 +25,7 @@
 
 namespace JSC {
     class JSObject;
-    class MarkStack;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 }
 
 namespace WebCore {
index 50fd5e3..a5139fa 100644 (file)
@@ -36,8 +36,7 @@
 #if USE(JSC)
 namespace JSC {
     class JSGlobalData;
-    class MarkStack;
-    typedef MarkStack SlotVisitor;
+    class SlotVisitor;
 }
 #endif
 
index 4660764..60490d6 100644 (file)
@@ -29,8 +29,9 @@
 #include <wtf/RefCounted.h>
 
 namespace JSC {
-    class MarkStack;
-    typedef MarkStack SlotVisitor;
+
+class SlotVisitor;
+
 }
 
 namespace WebCore {