Refactoring of the custom allocation framework
authorossy@webkit.org <ossy@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Jan 2011 16:30:54 +0000 (16:30 +0000)
committerossy@webkit.org <ossy@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Jan 2011 16:30:54 +0000 (16:30 +0000)
https://bugs.webkit.org/show_bug.cgi?id=49897

Patch by Zoltan Horvath <zoltan@webkit.org> on 2011-01-20
Reviewed by Csaba Osztrogonác.

Source/JavaScriptCore:

Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
equivalent macro implementation at the necessary places.

* wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.

Source/WebCore:

Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
equivalent macro implementation at the necessary places.

Source/WebKit:

Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
equivalent macro implementation at the necessary places.

Source/WebKit2:

Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
equivalent macro implementation at the necessary places.

Tools:

Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
equivalent macro implementation at the necessary places.

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

450 files changed:
Source/JavaScriptCore/API/JSClassRef.h
Source/JavaScriptCore/API/JSObjectRef.cpp
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/LinkBuffer.h
Source/JavaScriptCore/bytecode/CodeBlock.h
Source/JavaScriptCore/bytecode/Instruction.h
Source/JavaScriptCore/bytecode/SamplingTool.h
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
Source/JavaScriptCore/bytecompiler/RegisterID.h
Source/JavaScriptCore/interpreter/CachedCall.h
Source/JavaScriptCore/interpreter/Interpreter.h
Source/JavaScriptCore/interpreter/Register.h
Source/JavaScriptCore/interpreter/RegisterFile.h
Source/JavaScriptCore/parser/Lexer.h
Source/JavaScriptCore/parser/Nodes.h
Source/JavaScriptCore/parser/Parser.h
Source/JavaScriptCore/parser/ParserArena.h
Source/JavaScriptCore/pcre/pcre_exec.cpp
Source/JavaScriptCore/profiler/CallIdentifier.h
Source/JavaScriptCore/profiler/Profiler.h
Source/JavaScriptCore/runtime/ArgList.h
Source/JavaScriptCore/runtime/Arguments.h
Source/JavaScriptCore/runtime/BatchedTransitionOptimizer.h
Source/JavaScriptCore/runtime/CommonIdentifiers.h
Source/JavaScriptCore/runtime/Heap.h
Source/JavaScriptCore/runtime/JSGlobalObject.h
Source/JavaScriptCore/runtime/JSLock.h
Source/JavaScriptCore/runtime/JSONObject.cpp
Source/JavaScriptCore/runtime/Lookup.h
Source/JavaScriptCore/runtime/MachineStackMarker.h
Source/JavaScriptCore/runtime/MarkStack.h
Source/JavaScriptCore/runtime/MarkedSpace.h
Source/JavaScriptCore/runtime/RegExpConstructor.h
Source/JavaScriptCore/runtime/RegExpObject.h
Source/JavaScriptCore/runtime/ScopeChain.h
Source/JavaScriptCore/runtime/SmallStrings.cpp
Source/JavaScriptCore/runtime/SmallStrings.h
Source/JavaScriptCore/runtime/SymbolTable.h
Source/JavaScriptCore/runtime/WeakGCMap.h
Source/JavaScriptCore/runtime/WeakGCPtr.h
Source/JavaScriptCore/wtf/CrossThreadRefCounted.h
Source/JavaScriptCore/wtf/DateMath.h
Source/JavaScriptCore/wtf/Deque.h
Source/JavaScriptCore/wtf/FastAllocBase.h
Source/JavaScriptCore/wtf/HashCountedSet.h
Source/JavaScriptCore/wtf/HashMap.h
Source/JavaScriptCore/wtf/HashSet.h
Source/JavaScriptCore/wtf/ListHashSet.h
Source/JavaScriptCore/wtf/Locker.h
Source/JavaScriptCore/wtf/MessageQueue.h
Source/JavaScriptCore/wtf/Noncopyable.h
Source/JavaScriptCore/wtf/OwnArrayPtr.h
Source/JavaScriptCore/wtf/OwnFastMallocPtr.h
Source/JavaScriptCore/wtf/OwnPtr.h
Source/JavaScriptCore/wtf/RefCounted.h
Source/JavaScriptCore/wtf/RefPtr.h
Source/JavaScriptCore/wtf/RefPtrHashMap.h
Source/JavaScriptCore/wtf/ThreadIdentifierDataPthreads.h
Source/JavaScriptCore/wtf/ThreadSafeShared.h
Source/JavaScriptCore/wtf/ThreadSpecific.h
Source/JavaScriptCore/wtf/ThreadSpecificWin.cpp
Source/JavaScriptCore/wtf/Threading.cpp
Source/JavaScriptCore/wtf/ThreadingPrimitives.h
Source/JavaScriptCore/wtf/Vector.h
Source/JavaScriptCore/wtf/WTFThreadData.h
Source/JavaScriptCore/wtf/dtoa.cpp
Source/JavaScriptCore/wtf/gobject/GOwnPtr.h
Source/JavaScriptCore/wtf/text/StringBuffer.h
Source/JavaScriptCore/wtf/text/StringImplBase.h
Source/JavaScriptCore/wtf/unicode/Collator.h
Source/JavaScriptCore/yarr/YarrInterpreter.h
Source/JavaScriptCore/yarr/YarrPattern.h
Source/WebCore/ChangeLog
Source/WebCore/accessibility/AXObjectCache.h
Source/WebCore/bindings/js/CachedScriptSourceProvider.h
Source/WebCore/bindings/js/GCController.h
Source/WebCore/bindings/js/JSDebugWrapperSet.h
Source/WebCore/bindings/js/JSMainThreadExecState.h
Source/WebCore/bindings/js/ScheduledAction.h
Source/WebCore/bindings/js/ScriptCachedFrameData.h
Source/WebCore/bindings/js/ScriptDebugServer.h
Source/WebCore/bindings/js/ScriptProfiler.h
Source/WebCore/bindings/js/ScriptState.h
Source/WebCore/bindings/js/WebCoreJSClientData.h
Source/WebCore/bindings/js/WorkerScriptController.h
Source/WebCore/bindings/v8/DOMData.h
Source/WebCore/bindings/v8/DOMDataStore.h
Source/WebCore/bindings/v8/ScriptCachedFrameData.h
Source/WebCore/bindings/v8/ScriptDebugServer.h
Source/WebCore/bindings/v8/ScriptProfiler.h
Source/WebCore/bindings/v8/ScriptState.h
Source/WebCore/bindings/v8/SerializedScriptValue.cpp
Source/WebCore/bridge/Bridge.h
Source/WebCore/bridge/IdentifierRep.h
Source/WebCore/bridge/jsc/BridgeJSC.h
Source/WebCore/css/CSSImageValue.h
Source/WebCore/css/CSSImportRule.h
Source/WebCore/css/CSSNamespace.h
Source/WebCore/css/CSSParser.h
Source/WebCore/css/CSSParserValues.h
Source/WebCore/css/CSSProperty.h
Source/WebCore/css/CSSSelector.cpp
Source/WebCore/css/CSSSelector.h
Source/WebCore/css/CSSSelectorList.h
Source/WebCore/css/CSSStyleSelector.cpp
Source/WebCore/css/CSSStyleSelector.h
Source/WebCore/css/MediaQuery.h
Source/WebCore/css/MediaQueryEvaluator.h
Source/WebCore/css/MediaQueryExp.h
Source/WebCore/dom/AsyncScriptRunner.h
Source/WebCore/dom/DOMStringMap.h
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/DocumentMarkerController.h
Source/WebCore/dom/Event.h
Source/WebCore/dom/EventNames.h
Source/WebCore/dom/EventTarget.h
Source/WebCore/dom/IgnoreDestructiveWriteCountIncrementer.h
Source/WebCore/dom/MessagePortChannel.h
Source/WebCore/dom/NodeRareData.h
Source/WebCore/dom/QualifiedName.h
Source/WebCore/dom/ScriptElement.h
Source/WebCore/dom/ScriptExecutionContext.cpp
Source/WebCore/dom/ScriptExecutionContext.h
Source/WebCore/dom/SpaceSplitString.h
Source/WebCore/dom/TransformSource.h
Source/WebCore/dom/UserGestureIndicator.h
Source/WebCore/dom/UserTypingGestureIndicator.h
Source/WebCore/dom/XMLDocumentParser.h
Source/WebCore/dom/XMLDocumentParserLibxml2.cpp
Source/WebCore/dom/XMLDocumentParserScope.h
Source/WebCore/editing/DeleteButtonController.h
Source/WebCore/editing/ReplaceSelectionCommand.cpp
Source/WebCore/editing/SelectionController.h
Source/WebCore/editing/SpellChecker.h
Source/WebCore/editing/TextCheckingHelper.h
Source/WebCore/editing/TextIterator.cpp
Source/WebCore/fileapi/FileThread.h
Source/WebCore/fileapi/LocalFileSystem.h
Source/WebCore/fileapi/SyncCallbackHelper.h
Source/WebCore/history/BackForwardController.h
Source/WebCore/history/PageCache.h
Source/WebCore/html/CollectionCache.h
Source/WebCore/html/DOMSettableTokenList.h
Source/WebCore/html/DOMTokenList.h
Source/WebCore/html/HTMLParserQuirks.h
Source/WebCore/html/InputType.h
Source/WebCore/html/StepRange.h
Source/WebCore/html/ValidationMessage.h
Source/WebCore/html/ValidityState.h
Source/WebCore/html/canvas/CanvasRenderingContext.h
Source/WebCore/html/parser/CSSPreloadScanner.h
Source/WebCore/html/parser/HTMLConstructionSite.h
Source/WebCore/html/parser/HTMLDocumentParser.h
Source/WebCore/html/parser/HTMLElementStack.h
Source/WebCore/html/parser/HTMLFormattingElementList.h
Source/WebCore/html/parser/HTMLInputStream.h
Source/WebCore/html/parser/HTMLMetaCharsetParser.h
Source/WebCore/html/parser/HTMLParserScheduler.h
Source/WebCore/html/parser/HTMLPreloadScanner.h
Source/WebCore/html/parser/HTMLScriptRunner.h
Source/WebCore/html/parser/HTMLToken.h
Source/WebCore/html/parser/HTMLTokenizer.h
Source/WebCore/html/parser/HTMLTreeBuilder.cpp
Source/WebCore/html/parser/HTMLTreeBuilder.h
Source/WebCore/html/parser/NestingLevelIncrementer.h
Source/WebCore/inspector/ConsoleMessage.h
Source/WebCore/inspector/InspectorApplicationCacheAgent.h
Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
Source/WebCore/inspector/InspectorConsoleAgent.h
Source/WebCore/inspector/InspectorController.h
Source/WebCore/inspector/InspectorDebuggerAgent.h
Source/WebCore/inspector/InspectorFrontendClientLocal.h
Source/WebCore/inspector/InspectorProfilerAgent.h
Source/WebCore/inspector/InspectorRuntimeAgent.h
Source/WebCore/inspector/InspectorTimelineAgent.h
Source/WebCore/loader/CrossOriginPreflightResultCache.h
Source/WebCore/loader/DocumentThreadableLoader.h
Source/WebCore/loader/DocumentWriter.h
Source/WebCore/loader/EmptyClients.h
Source/WebCore/loader/FormSubmission.h
Source/WebCore/loader/FrameLoader.h
Source/WebCore/loader/FrameLoaderStateMachine.h
Source/WebCore/loader/HistoryController.h
Source/WebCore/loader/ImageLoader.cpp
Source/WebCore/loader/NavigationScheduler.cpp
Source/WebCore/loader/PingLoader.h
Source/WebCore/loader/PolicyChecker.h
Source/WebCore/loader/ProgressTracker.cpp
Source/WebCore/loader/ProgressTracker.h
Source/WebCore/loader/ResourceLoadNotifier.h
Source/WebCore/loader/ResourceLoadScheduler.h
Source/WebCore/loader/SubframeLoader.h
Source/WebCore/loader/ThreadableLoader.h
Source/WebCore/loader/ThreadableLoaderClient.h
Source/WebCore/loader/WorkerThreadableLoader.h
Source/WebCore/loader/appcache/ApplicationCacheGroup.h
Source/WebCore/loader/appcache/ApplicationCacheHost.h
Source/WebCore/loader/appcache/ApplicationCacheStorage.h
Source/WebCore/loader/archive/ArchiveResourceCollection.h
Source/WebCore/loader/cache/CachedResource.h
Source/WebCore/loader/cache/CachedResourceClient.h
Source/WebCore/loader/cache/CachedResourceLoader.h
Source/WebCore/loader/cache/MemoryCache.h
Source/WebCore/loader/icon/IconDatabase.h
Source/WebCore/loader/icon/IconDatabaseClient.h
Source/WebCore/loader/icon/IconLoader.h
Source/WebCore/loader/icon/PageURLRecord.h
Source/WebCore/notifications/Notification.h
Source/WebCore/page/ContextMenuController.h
Source/WebCore/page/DragController.h
Source/WebCore/page/EventHandler.h
Source/WebCore/page/EventSource.h
Source/WebCore/page/FocusController.h
Source/WebCore/page/FrameTree.h
Source/WebCore/page/FrameView.cpp
Source/WebCore/page/GeolocationController.h
Source/WebCore/page/GroupSettings.h
Source/WebCore/page/Page.h
Source/WebCore/page/PageGroup.h
Source/WebCore/page/PageGroupLoadDeferrer.h
Source/WebCore/page/PluginHalter.h
Source/WebCore/page/Settings.h
Source/WebCore/page/SpeechInput.h
Source/WebCore/page/UserScript.h
Source/WebCore/page/UserStyleSheet.h
Source/WebCore/page/XSSAuditor.h
Source/WebCore/page/animation/AnimationBase.cpp
Source/WebCore/page/animation/AnimationControllerPrivate.h
Source/WebCore/page/mac/EventHandlerMac.mm
Source/WebCore/platform/AsyncFileSystem.h
Source/WebCore/platform/AsyncFileSystemCallbacks.h
Source/WebCore/platform/AutodrainedPool.h
Source/WebCore/platform/ContextMenu.h
Source/WebCore/platform/ContextMenuItem.h
Source/WebCore/platform/DeprecatedPtrList.h
Source/WebCore/platform/DeprecatedPtrListImpl.cpp
Source/WebCore/platform/EventLoop.h
Source/WebCore/platform/GeolocationService.h
Source/WebCore/platform/HostWindow.h
Source/WebCore/platform/KillRing.h
Source/WebCore/platform/Length.h
Source/WebCore/platform/Pasteboard.h
Source/WebCore/platform/PlatformKeyboardEvent.h
Source/WebCore/platform/PurgeableBuffer.h
Source/WebCore/platform/RunLoopTimer.h
Source/WebCore/platform/ScrollbarTheme.h
Source/WebCore/platform/SharedTimer.h
Source/WebCore/platform/ThreadGlobalData.h
Source/WebCore/platform/ThreadTimers.h
Source/WebCore/platform/Timer.h
Source/WebCore/platform/TreeShared.h
Source/WebCore/platform/animation/AnimationList.h
Source/WebCore/platform/audio/AudioBus.h
Source/WebCore/platform/audio/AudioChannel.h
Source/WebCore/platform/audio/HRTFDatabase.h
Source/WebCore/platform/audio/HRTFElevation.h
Source/WebCore/platform/chromium/ClipboardChromium.h
Source/WebCore/platform/graphics/BitmapImage.h
Source/WebCore/platform/graphics/Color.h
Source/WebCore/platform/graphics/FontCache.cpp
Source/WebCore/platform/graphics/FontCache.h
Source/WebCore/platform/graphics/FontData.h
Source/WebCore/platform/graphics/GlyphMetricsMap.h
Source/WebCore/platform/graphics/GraphicsContext.h
Source/WebCore/platform/graphics/GraphicsLayer.h
Source/WebCore/platform/graphics/ImageBuffer.h
Source/WebCore/platform/graphics/ImageSource.h
Source/WebCore/platform/graphics/MediaPlayer.cpp
Source/WebCore/platform/graphics/MediaPlayer.h
Source/WebCore/platform/graphics/MediaPlayerPrivate.h
Source/WebCore/platform/graphics/Path.h
Source/WebCore/platform/graphics/TiledBackingStore.h
Source/WebCore/platform/graphics/cairo/FontCustomPlatformData.h
Source/WebCore/platform/graphics/chromium/GLES2Canvas.h
Source/WebCore/platform/graphics/chromium/LayerTexture.h
Source/WebCore/platform/graphics/chromium/LayerTilerChromium.h
Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h
Source/WebCore/platform/graphics/chromium/TextureManager.h
Source/WebCore/platform/graphics/chromium/TransparencyWin.h
Source/WebCore/platform/graphics/gpu/DrawingBuffer.h
Source/WebCore/platform/graphics/gpu/LoopBlinnClassifier.h
Source/WebCore/platform/graphics/gpu/LoopBlinnLocalTriangulator.h
Source/WebCore/platform/graphics/gpu/PODArena.h
Source/WebCore/platform/graphics/gpu/PODIntervalTree.h
Source/WebCore/platform/graphics/gpu/PODRedBlackTree.h
Source/WebCore/platform/graphics/gpu/Shader.h
Source/WebCore/platform/graphics/gpu/TilingData.h
Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
Source/WebCore/platform/graphics/haiku/FontCustomPlatformData.h
Source/WebCore/platform/graphics/mac/FontCustomPlatformData.h
Source/WebCore/platform/graphics/openvg/PainterOpenVG.h
Source/WebCore/platform/graphics/openvg/SurfaceOpenVG.h
Source/WebCore/platform/graphics/qt/FontCustomPlatformData.h
Source/WebCore/platform/graphics/qt/FontPlatformData.h
Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
Source/WebCore/platform/graphics/qt/TransparencyLayer.h
Source/WebCore/platform/graphics/skia/FontCustomPlatformData.h
Source/WebCore/platform/graphics/skia/GraphicsContextPlatformPrivate.h
Source/WebCore/platform/graphics/skia/PlatformContextSkia.h
Source/WebCore/platform/graphics/transforms/AffineTransform.h
Source/WebCore/platform/graphics/transforms/TransformOperations.h
Source/WebCore/platform/graphics/transforms/TransformationMatrix.h
Source/WebCore/platform/graphics/win/FontCustomPlatformData.h
Source/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.h
Source/WebCore/platform/graphics/win/LocalWindowsContext.h
Source/WebCore/platform/graphics/win/QTMovie.cpp
Source/WebCore/platform/graphics/win/QTTrack.cpp
Source/WebCore/platform/graphics/win/WKCACFContextFlusher.h
Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h
Source/WebCore/platform/graphics/wince/FontCustomPlatformData.h
Source/WebCore/platform/graphics/wince/GraphicsContextWinCE.cpp
Source/WebCore/platform/graphics/wx/FontCustomPlatformData.h
Source/WebCore/platform/gtk/ClipboardGtk.h
Source/WebCore/platform/image-decoders/ImageDecoder.h
Source/WebCore/platform/mac/ClipboardMac.h
Source/WebCore/platform/mac/LocalCurrentGraphicsContext.h
Source/WebCore/platform/network/BlobData.h
Source/WebCore/platform/network/FormDataBuilder.h
Source/WebCore/platform/network/NetworkStateNotifier.h
Source/WebCore/platform/network/ResourceHandleInternal.h
Source/WebCore/platform/network/ResourceRequestBase.h
Source/WebCore/platform/network/ResourceResponseBase.h
Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp
Source/WebCore/platform/network/win/ResourceHandleWin.cpp
Source/WebCore/platform/qt/ClipboardQt.h
Source/WebCore/platform/sql/SQLiteDatabase.h
Source/WebCore/platform/sql/SQLiteStatement.h
Source/WebCore/platform/sql/SQLiteTransaction.h
Source/WebCore/platform/text/BidiResolver.h
Source/WebCore/platform/text/RegularExpression.h
Source/WebCore/platform/text/TextCodec.h
Source/WebCore/platform/text/transcoder/FontTranscoder.h
Source/WebCore/platform/win/ClipboardWin.h
Source/WebCore/platform/win/WindowMessageBroadcaster.h
Source/WebCore/plugins/PluginDatabase.h
Source/WebCore/plugins/PluginMainThreadScheduler.h
Source/WebCore/plugins/PluginView.h
Source/WebCore/rendering/ColumnInfo.h
Source/WebCore/rendering/LayoutState.h
Source/WebCore/rendering/RenderArena.h
Source/WebCore/rendering/RenderBlock.h
Source/WebCore/rendering/RenderBoxModelObject.cpp
Source/WebCore/rendering/RenderFrameSet.h
Source/WebCore/rendering/RenderImageResource.h
Source/WebCore/rendering/RenderLayerBacking.h
Source/WebCore/rendering/RenderMarquee.h
Source/WebCore/rendering/RenderOverflow.h
Source/WebCore/rendering/RenderSelectionInfo.h
Source/WebCore/rendering/RenderView.h
Source/WebCore/rendering/RenderWidgetProtector.h
Source/WebCore/rendering/TableLayout.h
Source/WebCore/rendering/TransformState.h
Source/WebCore/rendering/VerticalPositionCache.h
Source/WebCore/rendering/style/ContentData.h
Source/WebCore/rendering/style/CounterContent.h
Source/WebCore/rendering/style/FillLayer.h
Source/WebCore/rendering/style/ShadowData.h
Source/WebCore/rendering/svg/RenderSVGResourceClipper.h
Source/WebCore/rendering/svg/SVGImageBufferTools.h
Source/WebCore/rendering/svg/SVGMarkerLayoutInfo.h
Source/WebCore/rendering/svg/SVGResources.h
Source/WebCore/rendering/svg/SVGResourcesCache.h
Source/WebCore/rendering/svg/SVGResourcesCycleSolver.h
Source/WebCore/rendering/svg/SVGTextChunkBuilder.h
Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.h
Source/WebCore/rendering/svg/SVGTextLayoutEngine.h
Source/WebCore/rendering/svg/SVGTextLayoutEngineBaseline.h
Source/WebCore/rendering/svg/SVGTextLayoutEngineSpacing.h
Source/WebCore/storage/DatabaseTask.h
Source/WebCore/storage/DatabaseTracker.h
Source/WebCore/storage/IDBPendingTransactionMonitor.h
Source/WebCore/storage/LocalStorageTask.h
Source/WebCore/storage/LocalStorageThread.h
Source/WebCore/storage/OriginQuotaManager.h
Source/WebCore/storage/OriginUsageRecord.h
Source/WebCore/storage/SQLTransactionClient.h
Source/WebCore/storage/SQLTransactionCoordinator.h
Source/WebCore/svg/SVGDocumentExtensions.h
Source/WebCore/svg/SVGElementRareData.h
Source/WebCore/svg/SVGFontData.h
Source/WebCore/svg/SVGPathBlender.h
Source/WebCore/svg/SVGPathByteStream.h
Source/WebCore/svg/SVGPathConsumer.h
Source/WebCore/svg/SVGPathParser.h
Source/WebCore/svg/SVGPathSource.h
Source/WebCore/svg/SVGViewSpec.h
Source/WebCore/svg/graphics/SVGImage.cpp
Source/WebCore/webaudio/RealtimeAnalyser.h
Source/WebCore/websockets/ThreadableWebSocketChannel.h
Source/WebCore/websockets/WebSocketChannel.h
Source/WebCore/websockets/WebSocketHandshake.h
Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h
Source/WebCore/workers/DefaultSharedWorkerRepository.h
Source/WebCore/workers/WorkerContext.h
Source/WebCore/workers/WorkerMessagingProxy.h
Source/WebCore/workers/WorkerRunLoop.cpp
Source/WebCore/workers/WorkerRunLoop.h
Source/WebCore/workers/WorkerThread.cpp
Source/WebCore/xml/XMLHttpRequest.cpp
Source/WebCore/xml/XMLHttpRequest.h
Source/WebCore/xml/XPathExpressionNode.h
Source/WebCore/xml/XPathNodeSet.h
Source/WebCore/xml/XPathParser.h
Source/WebCore/xml/XPathPredicate.h
Source/WebCore/xml/XPathStep.h
Source/WebCore/xml/XSLImportRule.h
Source/WebKit/ChangeLog
Source/WebKit/chromium/src/BoundObject.h
Source/WebKit/chromium/src/DebuggerAgentManager.cpp
Source/WebKit/chromium/src/DebuggerAgentManager.h
Source/WebKit/chromium/src/InspectorFrontendClientImpl.h
Source/WebKit/chromium/src/WebDevToolsFrontendImpl.h
Source/WebKit/chromium/src/WebFrameImpl.cpp
Source/WebKit/chromium/src/WebPopupMenuImpl.h
Source/WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.h
Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h
Source/WebKit/gtk/webkit/webkitdownload.cpp
Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
Source/WebKit/mac/Storage/WebDatabaseTrackerClient.mm
Source/WebKit/win/COMEnumVariant.h
Source/WebKit/win/COMPropertyBag.h
Source/WebKit/win/FullscreenVideoController.h
Source/WebKit/win/WebDatabaseManager.cpp
Source/WebKit/win/WebInspector.h
Source/WebKit/win/WebLocalizableStrings.cpp
Source/WebKit/win/WebScriptWorld.h
Source/WebKit/win/WebSerializedJSValue.h
Source/WebKit/win/WebUserContentURLPattern.h
Source/WebKit2/ChangeLog
Source/WebKit2/Platform/Module.h
Source/WebKit2/Platform/SharedMemory.h
Source/WebKit2/PluginProcess/PluginProcess.h
Source/WebKit2/Shared/ChildProcess.h
Source/WebKit2/Shared/WebMemorySampler.h
Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h
Source/WebKit2/UIProcess/Plugins/win/PluginInfoStoreWin.cpp
Source/WebKit2/UIProcess/VisitedLinkProvider.h
Source/WebKit2/WebProcess/Downloads/Download.h
Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.h
Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.h
Tools/ChangeLog
Tools/DumpRenderTree/chromium/CppBoundClass.h
Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h
Tools/DumpRenderTree/chromium/DRTDevToolsClient.h
Tools/DumpRenderTree/chromium/TestNavigationController.h
Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.h
Tools/DumpRenderTree/chromium/WebThemeEngineDRTWin.h
Tools/WebKitAPITest/HostWindow.h
Tools/WebKitAPITest/TestsController.h
Tools/WebKitTestRunner/TestInvocation.h

index 5062093..0971700 100644 (file)
@@ -34,7 +34,9 @@
 #include <runtime/WeakGCPtr.h>
 #include <wtf/HashMap.h>
 
-struct StaticValueEntry : FastAllocBase {
+struct StaticValueEntry {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     StaticValueEntry(JSObjectGetPropertyCallback _getProperty, JSObjectSetPropertyCallback _setProperty, JSPropertyAttributes _attributes)
         : getProperty(_getProperty), setProperty(_setProperty), attributes(_attributes)
     {
@@ -45,7 +47,9 @@ struct StaticValueEntry : FastAllocBase {
     JSPropertyAttributes attributes;
 };
 
-struct StaticFunctionEntry : FastAllocBase {
+struct StaticFunctionEntry {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     StaticFunctionEntry(JSObjectCallAsFunctionCallback _callAsFunction, JSPropertyAttributes _attributes)
         : callAsFunction(_callAsFunction), attributes(_attributes)
     {
@@ -62,7 +66,9 @@ struct OpaqueJSClass;
 
 // An OpaqueJSClass (JSClass) is created without a context, so it can be used with any context, even across context groups.
 // This structure holds data members that vary across context groups.
-struct OpaqueJSClassContextData : Noncopyable {
+struct OpaqueJSClassContextData {
+    WTF_MAKE_NONCOPYABLE(OpaqueJSClassContextData); WTF_MAKE_FAST_ALLOCATED;
+public:
     OpaqueJSClassContextData(OpaqueJSClass*);
     ~OpaqueJSClassContextData();
 
index 4198ca8..d6de426 100644 (file)
@@ -480,7 +480,9 @@ JSObjectRef JSObjectCallAsConstructor(JSContextRef ctx, JSObjectRef object, size
     return result;
 }
 
-struct OpaqueJSPropertyNameArray : FastAllocBase {
+struct OpaqueJSPropertyNameArray {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     OpaqueJSPropertyNameArray(JSGlobalData* globalData)
         : refCount(0)
         , globalData(globalData)
index e58e8c0..804f67a 100644 (file)
@@ -1,3 +1,16 @@
+2011-01-20  Zoltan Horvath  <zoltan@webkit.org>
+
+        Reviewed by Csaba Osztrogonác.
+
+        Refactoring of the custom allocation framework
+        https://bugs.webkit.org/show_bug.cgi?id=49897
+
+        Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
+        The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
+        equivalent macro implementation at the necessary places.
+
+        * wtf/FastAllocBase.h: Turn FastAllocBase's implementation into a macro.
+
 2011-01-20  Mark Rowe  <mrowe@apple.com>
 
         Reviewed by Maciej Stachowiak.
index e38b9d4..c5a7d5b 100644 (file)
@@ -50,7 +50,8 @@ namespace JSC {
 //   * The address of a Label pointing into the code may be resolved.
 //   * The value referenced by a DataLabel may be set.
 //
-class LinkBuffer : public Noncopyable {
+class LinkBuffer {
+    WTF_MAKE_NONCOPYABLE(LinkBuffer);
     typedef MacroAssemblerCodeRef CodeRef;
     typedef MacroAssemblerCodePtr CodePtr;
     typedef MacroAssembler::Label Label;
index 7eca72a..1cd0863 100644 (file)
@@ -242,7 +242,8 @@ namespace JSC {
     }
 #endif
 
-    class CodeBlock : public FastAllocBase {
+    class CodeBlock {
+        WTF_MAKE_FAST_ALLOCATED;
         friend class JIT;
     protected:
         CodeBlock(ScriptExecutable* ownerExecutable, CodeType, JSGlobalObject*, PassRefPtr<SourceProvider>, unsigned sourceOffset, SymbolTable* symbolTable, bool isConstructor);
@@ -578,7 +579,9 @@ namespace JSC {
 
         SymbolTable* m_symbolTable;
 
-        struct RareData : FastAllocBase {
+        struct RareData {
+           WTF_MAKE_FAST_ALLOCATED;
+        public:
             Vector<HandlerInfo> m_exceptionHandlers;
 
             // Rare Constants
@@ -599,6 +602,9 @@ namespace JSC {
             Vector<CallReturnOffsetToBytecodeOffset> m_callReturnIndexVector;
 #endif
         };
+#if PLATFORM(WIN)
+        friend void WTF::deleteOwnedPtr<RareData>(RareData*);
+#endif
         OwnPtr<RareData> m_rareData;
     };
 
index c6468a5..f077cbf 100644 (file)
@@ -54,7 +54,9 @@ namespace JSC {
     class StructureChain;
 
     // Structure used by op_get_by_id_self_list and op_get_by_id_proto_list instruction to hold data off the main opcode stream.
-    struct PolymorphicAccessStructureList : FastAllocBase {
+    struct PolymorphicAccessStructureList {
+        WTF_MAKE_FAST_ALLOCATED;
+    public:
         struct PolymorphicStubInfo {
             bool isChain;
             PolymorphicAccessStructureListStubRoutineType stubRoutine;
index 8e3ed9e..9ca54da 100644 (file)
@@ -142,7 +142,8 @@ namespace JSC {
         friend class HostCallRecord;
         
 #if ENABLE(OPCODE_SAMPLING)
-        class CallRecord : public Noncopyable {
+        class CallRecord {
+            WTF_MAKE_NONCOPYABLE(CallRecord);
         public:
             CallRecord(SamplingTool* samplingTool)
                 : m_samplingTool(samplingTool)
@@ -172,7 +173,8 @@ namespace JSC {
             }
         };
 #else
-        class CallRecord : public Noncopyable {
+        class CallRecord {
+            WTF_MAKE_NONCOPYABLE(CallRecord);
         public:
             CallRecord(SamplingTool*)
             {
index 8b0cc40..de16f8e 100644 (file)
@@ -40,7 +40,6 @@
 #include "SymbolTable.h"
 #include "Debugger.h"
 #include "Nodes.h"
-#include <wtf/FastAllocBase.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/SegmentedVector.h>
 #include <wtf/Vector.h>
@@ -85,7 +84,8 @@ namespace JSC {
         RefPtr<RegisterID> propertyRegister;
     };
 
-    class BytecodeGenerator : public FastAllocBase {
+    class BytecodeGenerator {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         typedef DeclarationStacks::VarStack VarStack;
         typedef DeclarationStacks::FunctionStack FunctionStack;
index 3532ad8..78d49d2 100644 (file)
 #define RegisterID_h
 
 #include <wtf/Assertions.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/VectorTraits.h>
 
 namespace JSC {
 
-    class RegisterID : public Noncopyable {
+    class RegisterID {
+        WTF_MAKE_NONCOPYABLE(RegisterID);
     public:
         RegisterID()
             : m_refCount(0)
index dfbe658..740001d 100644 (file)
@@ -32,7 +32,8 @@
 #include "Interpreter.h"
 
 namespace JSC {
-    class CachedCall : public Noncopyable {
+    class CachedCall {
+        WTF_MAKE_NONCOPYABLE(CachedCall); WTF_MAKE_FAST_ALLOCATED;
     public:
         CachedCall(CallFrame* callFrame, JSFunction* function, int argCount)
             : m_valid(false)
index 47790cf..753d90e 100644 (file)
@@ -30,7 +30,6 @@
 #define Interpreter_h
 
 #include "ArgList.h"
-#include "FastAllocBase.h"
 #include "JSCell.h"
 #include "JSValue.h"
 #include "JSObject.h"
@@ -65,7 +64,8 @@ namespace JSC {
 
     enum { MaxLargeThreadReentryDepth = 256, MaxSmallThreadReentryDepth = 32 };
 
-    class Interpreter : public FastAllocBase {
+    class Interpreter {
+        WTF_MAKE_FAST_ALLOCATED;
         friend class JIT;
         friend class CachedCall;
     public:
index 38d1647..3944642 100644 (file)
@@ -31,7 +31,6 @@
 
 #include "JSValue.h"
 #include <wtf/Assertions.h>
-#include <wtf/FastAllocBase.h>
 #include <wtf/VectorTraits.h>
 
 namespace JSC {
@@ -47,7 +46,8 @@ namespace JSC {
 
     typedef ExecState CallFrame;
 
-    class Register : public WTF::FastAllocBase {
+    class Register {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         Register();
 
index 75fd784..3498e90 100644 (file)
@@ -89,7 +89,8 @@ namespace JSC {
 
     class JSGlobalObject;
 
-    class RegisterFile : public Noncopyable {
+    class RegisterFile {
+        WTF_MAKE_NONCOPYABLE(RegisterFile);
         friend class JIT;
     public:
         enum CallFrameHeaderEntry {
index dfdb22c..d4145c1 100644 (file)
@@ -37,7 +37,8 @@ namespace JSC {
 
     class RegExp;
 
-    class Lexer : public Noncopyable {
+    class Lexer {
+        WTF_MAKE_NONCOPYABLE(Lexer); WTF_MAKE_FAST_ALLOCATED;
     public:
         // Character manipulation functions.
         static bool isWhiteSpace(int character);
index 54b7231..6e73c00 100644 (file)
@@ -1376,7 +1376,9 @@ namespace JSC {
         ParameterNode* m_next;
     };
 
-    struct ScopeNodeData : FastAllocBase {
+    struct ScopeNodeData {
+        WTF_MAKE_FAST_ALLOCATED;
+    public:
         typedef DeclarationStacks::VarStack VarStack;
         typedef DeclarationStacks::FunctionStack FunctionStack;
 
@@ -1472,6 +1474,7 @@ namespace JSC {
     };
 
     class FunctionParameters : public Vector<Identifier>, public RefCounted<FunctionParameters> {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassRefPtr<FunctionParameters> create(ParameterNode* firstParameter) { return adoptRef(new FunctionParameters(firstParameter)); }
 
index b257b68..58398d1 100644 (file)
@@ -45,8 +45,10 @@ namespace JSC {
 
     template <typename T> struct ParserArenaData : ParserArenaDeletable { T data; };
 
-    class Parser : public Noncopyable {
+    class Parser {
+        WTF_MAKE_NONCOPYABLE(Parser); WTF_MAKE_FAST_ALLOCATED;
     public:
+        Parser() { }
         template <class ParsedNode>
         PassRefPtr<ParsedNode> parse(JSGlobalObject* lexicalGlobalObject, Debugger*, ExecState*, const SourceCode& source, FunctionParameters*, JSParserStrictness strictness, JSObject** exception);
 
index 7c1809e..82fb808 100644 (file)
@@ -34,7 +34,8 @@ namespace JSC {
     class ParserArenaDeletable;
     class ParserArenaRefCounted;
 
-    class IdentifierArena : public FastAllocBase {
+    class IdentifierArena {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         ALWAYS_INLINE const Identifier& makeIdentifier(JSGlobalData*, const UChar* characters, size_t length);
         const Identifier& makeNumericIdentifier(JSGlobalData*, double number);
@@ -59,7 +60,8 @@ namespace JSC {
         return m_identifiers.last();
     }
 
-    class ParserArena : Noncopyable {
+    class ParserArena {
+        WTF_MAKE_NONCOPYABLE(ParserArena);
     public:
         ParserArena();
         ~ParserArena();
index 789f80a..b7018aa 100644 (file)
@@ -112,7 +112,9 @@ struct BracketChainNode {
     const UChar* bracketStart;
 };
 
-struct MatchFrame : FastAllocBase {
+struct MatchFrame {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     ReturnLocation returnLocation;
     struct MatchFrame* previousFrame;
     
index 76c1470..a9827c0 100644 (file)
 #define CallIdentifier_h
 
 #include <runtime/UString.h>
-#include "FastAllocBase.h"
 #include <wtf/text/CString.h>
 #include <wtf/text/StringHash.h>
 
 namespace JSC {
 
-    struct CallIdentifier : public FastAllocBase {
+    struct CallIdentifier {
+        WTF_MAKE_FAST_ALLOCATED;
+    public:
         UString m_name;
         UString m_url;
         unsigned m_lineNumber;
index f9c2ccb..f88746d 100644 (file)
@@ -44,7 +44,8 @@ namespace JSC {
     class UString;
     struct CallIdentifier;    
 
-    class Profiler : public FastAllocBase {
+    class Profiler {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static Profiler** enabledProfilerReference()
         {
index cd563a2..57e3c20 100644 (file)
 #include "CallFrame.h"
 #include "Register.h"
 #include <wtf/HashSet.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
 
 namespace JSC {
 
     class MarkStack;
 
-    class MarkedArgumentBuffer : public Noncopyable {
+    class MarkedArgumentBuffer {
+        WTF_MAKE_NONCOPYABLE(MarkedArgumentBuffer);
     private:
         static const unsigned inlineCapacity = 8;
         typedef Vector<Register, inlineCapacity> VectorType;
index 715a2ac..fe900a2 100644 (file)
 
 namespace JSC {
 
-    struct ArgumentsData : Noncopyable {
+    struct ArgumentsData {
+        WTF_MAKE_NONCOPYABLE(ArgumentsData); WTF_MAKE_FAST_ALLOCATED;
+    public:
+        ArgumentsData() { }
         JSActivation* activation;
 
         unsigned numParameters;
index 74089a5..db2d1d7 100644 (file)
 #ifndef BatchedTransitionOptimizer_h
 #define BatchedTransitionOptimizer_h
 
-#include <wtf/Noncopyable.h>
 #include "JSObject.h"
 
 namespace JSC {
 
-    class BatchedTransitionOptimizer : public Noncopyable {
+    class BatchedTransitionOptimizer {
+        WTF_MAKE_NONCOPYABLE(BatchedTransitionOptimizer);
     public:
         BatchedTransitionOptimizer(JSObject* object)
             : m_object(object)
index 1e22b6a..6587a8f 100644 (file)
@@ -84,7 +84,8 @@
 
 namespace JSC {
 
-    class CommonIdentifiers : public Noncopyable {
+    class CommonIdentifiers {
+        WTF_MAKE_NONCOPYABLE(CommonIdentifiers); WTF_MAKE_FAST_ALLOCATED;
     private:
         CommonIdentifiers(JSGlobalData*);
         friend class JSGlobalData;
index 243bba3..3e1d886 100644 (file)
@@ -45,7 +45,8 @@ namespace JSC {
 
     enum OperationInProgress { NoOperation, Allocation, Collection };
 
-    class Heap : public Noncopyable {
+    class Heap {
+        WTF_MAKE_NONCOPYABLE(Heap);
     public:
         void destroy();
 
index a22b0aa..24bc2f8 100644 (file)
@@ -465,7 +465,8 @@ namespace JSC {
         return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure(), values);
     }
 
-    class DynamicGlobalObjectScope : public Noncopyable {
+    class DynamicGlobalObjectScope {
+        WTF_MAKE_NONCOPYABLE(DynamicGlobalObjectScope);
     public:
         DynamicGlobalObjectScope(CallFrame* callFrame, JSGlobalObject* dynamicGlobalObject);
 
index 05b388c..7b07b4f 100644 (file)
@@ -53,7 +53,8 @@ namespace JSC {
 
     enum JSLockBehavior { SilenceAssertionsOnly, LockForReal };
 
-    class JSLock : public Noncopyable {
+    class JSLock {
+        WTF_MAKE_NONCOPYABLE(JSLock);
     public:
         JSLock(ExecState*);
         JSLock(JSGlobalData*);
@@ -89,7 +90,8 @@ namespace JSC {
 
         JSLockBehavior m_lockBehavior;
 
-        class DropAllLocks : public Noncopyable {
+        class DropAllLocks {
+            WTF_MAKE_NONCOPYABLE(DropAllLocks);
         public:
             DropAllLocks(ExecState* exec);
             DropAllLocks(JSLockBehavior);
index 9e63027..df4be52 100644 (file)
@@ -70,7 +70,8 @@ private:
     mutable JSValue m_value;
 };
 
-class Stringifier : public Noncopyable {
+class Stringifier {
+    WTF_MAKE_NONCOPYABLE(Stringifier);
 public:
     Stringifier(ExecState*, JSValue replacer, JSValue space);
     ~Stringifier();
index 9bc81d4..0d6d98f 100644 (file)
@@ -53,7 +53,8 @@ namespace JSC {
     typedef PropertySlot::GetValueFunc GetFunction;
     typedef void (*PutFunction)(ExecState*, JSObject* baseObject, JSValue value);
 
-    class HashEntry : public FastAllocBase {
+    class HashEntry {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         void initialize(StringImpl* key, unsigned char attributes, intptr_t v1, intptr_t v2
 #if ENABLE(JIT)
index e80fe05..b186834 100644 (file)
@@ -34,7 +34,8 @@ namespace JSC {
     class Heap;
     class MarkStack;
 
-    class MachineStackMarker : public Noncopyable {
+    class MachineStackMarker {
+        WTF_MAKE_NONCOPYABLE(MachineStackMarker);
     public:
         MachineStackMarker(Heap*);
         ~MachineStackMarker();
index 7bccadf..f54cfa6 100644 (file)
@@ -37,7 +37,8 @@ namespace JSC {
     
     enum MarkSetProperties { MayContainNullValues, NoNullValues };
     
-    class MarkStack : Noncopyable {
+    class MarkStack {
+        WTF_MAKE_NONCOPYABLE(MarkStack);
     public:
         MarkStack(void* jsArrayVPtr)
             : m_jsArrayVPtr(jsArrayVPtr)
index 78f918c..3b0c5e0 100644 (file)
@@ -63,7 +63,8 @@ namespace JSC {
         }
     };
 
-    class MarkedSpace : public Noncopyable {
+    class MarkedSpace {
+        WTF_MAKE_NONCOPYABLE(MarkedSpace);
     public:
         MarkedSpace(JSGlobalData*);
         void destroy(ProtectCountSet&);
index 58abde5..1714bd3 100644 (file)
@@ -31,7 +31,9 @@ namespace JSC {
     class RegExpPrototype;
     struct RegExpConstructorPrivate;
 
-    struct RegExpConstructorPrivate : FastAllocBase {
+    struct RegExpConstructorPrivate {
+        WTF_MAKE_FAST_ALLOCATED;
+    public:
         // Global search cache / settings
         RegExpConstructorPrivate()
             : lastNumSubPatterns(0)
index c8cae28..99c84da 100644 (file)
@@ -58,7 +58,9 @@ namespace JSC {
     private:
         bool match(ExecState*);
 
-        struct RegExpObjectData : FastAllocBase {
+        struct RegExpObjectData {
+            WTF_MAKE_FAST_ALLOCATED;
+        public:
             RegExpObjectData(NonNullPassRefPtr<RegExp> regExp, double lastIndex)
                 : regExp(regExp)
                 , lastIndex(lastIndex)
@@ -68,7 +70,9 @@ namespace JSC {
             RefPtr<RegExp> regExp;
             double lastIndex;
         };
-
+#if PLATFORM(WIN)
+        friend void WTF::deleteOwnedPtr<RegExpObjectData>(RegExpObjectData*);
+#endif
         OwnPtr<RegExpObjectData> d;
     };
 
index 0b15b67..b104e75 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef ScopeChain_h
 #define ScopeChain_h
 
-#include "FastAllocBase.h"
+#include <wtf/FastAllocBase.h>
 
 namespace JSC {
 
@@ -31,7 +31,8 @@ namespace JSC {
     class MarkStack;
     class ScopeChainIterator;
     
-    class ScopeChainNode : public FastAllocBase {
+    class ScopeChainNode {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         ScopeChainNode(ScopeChainNode* next, JSObject* object, JSGlobalData* globalData, JSGlobalObject* globalObject, JSObject* globalThis)
             : next(next)
index f358727..5614932 100644 (file)
@@ -40,7 +40,8 @@ static inline bool isMarked(JSString* string)
     return string && Heap::isCellMarked(string);
 }
 
-class SmallStringsStorage : public Noncopyable {
+class SmallStringsStorage {
+    WTF_MAKE_NONCOPYABLE(SmallStringsStorage); WTF_MAKE_FAST_ALLOCATED;
 public:
     SmallStringsStorage();
 
index d1ebfb1..ac84fe8 100644 (file)
@@ -37,7 +37,8 @@ namespace JSC {
     class MarkStack;
     class SmallStringsStorage;
 
-    class SmallStrings : public Noncopyable {
+    class SmallStrings {
+        WTF_MAKE_NONCOPYABLE(SmallStrings); WTF_MAKE_FAST_ALLOCATED;
     public:
         SmallStrings();
         ~SmallStrings();
index 1b1636d..2635501 100644 (file)
@@ -122,6 +122,7 @@ namespace JSC {
     typedef HashMap<RefPtr<StringImpl>, SymbolTableEntry, IdentifierRepHash, HashTraits<RefPtr<StringImpl> >, SymbolTableIndexHashTraits> SymbolTable;
 
     class SharedSymbolTable : public SymbolTable, public RefCounted<SharedSymbolTable> {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassRefPtr<SharedSymbolTable> create() { return adoptRef(new SharedSymbolTable); }
     private:
index 2d4e59d..316794f 100644 (file)
@@ -35,7 +35,8 @@ class JSCell;
 
 // A HashMap whose get() function returns emptyValue() for cells awaiting destruction.
 template<typename KeyType, typename MappedType>
-class WeakGCMap : public FastAllocBase {
+class WeakGCMap {
+    WTF_MAKE_FAST_ALLOCATED;
     /*
     Invariants:
         * A value enters the WeakGCMap marked. (Guaranteed by set().)
index 6cc75a5..4946ee7 100644 (file)
 
 #include "Heap.h"
 #include "GCHandle.h"
-#include <wtf/Noncopyable.h>
 
 namespace JSC {
 
 // A smart pointer whose get() function returns 0 for cells awaiting destruction.
-template <typename T> class WeakGCPtr : Noncopyable {
+template <typename T> class WeakGCPtr {
+    WTF_MAKE_NONCOPYABLE(WeakGCPtr);
 public:
     WeakGCPtr()
         : m_ptr(0)
index 0c0e997..8b65977 100644 (file)
@@ -51,7 +51,8 @@ namespace WTF {
     // with respect to the original and any other copies.  The underlying m_data is jointly
     // owned by the original instance and all copies.
     template<class T>
-    class CrossThreadRefCounted : public Noncopyable {
+    class CrossThreadRefCounted {
+        WTF_MAKE_NONCOPYABLE(CrossThreadRefCounted);
     public:
         static PassRefPtr<CrossThreadRefCounted<T> > create(T* data)
         {
index 8d0d932..41bd4fa 100644 (file)
@@ -44,6 +44,7 @@
 #define DateMath_h
 
 #include <math.h>
+#include <stdint.h>
 #include <string.h>
 #include <time.h>
 #include <wtf/CurrentTime.h>
@@ -120,7 +121,9 @@ double parseDateFromNullTerminatedCharacters(ExecState*, const char* dateString)
 
 // Intentionally overridding the default tm of the system.
 // The members of tm differ on various operating systems.
-struct GregorianDateTime : Noncopyable {
+struct GregorianDateTime {
+    WTF_MAKE_NONCOPYABLE(GregorianDateTime);
+public:
     GregorianDateTime()
         : second(0)
         , minute(0)
index 745e0b6..1b16afc 100644 (file)
@@ -44,7 +44,8 @@ namespace WTF {
     template<typename T> class DequeConstReverseIterator;
 
     template<typename T>
-    class Deque : public FastAllocBase {
+    class Deque {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         typedef DequeIterator<T> iterator;
         typedef DequeConstIterator<T> const_iterator;
index bb1825e..e4899ab 100644 (file)
@@ -32,8 +32,8 @@
 // Provides customizable overrides of fastMalloc/fastFree and operator new/delete
 //
 // Provided functionality:
+//    Macro: WTF_MAKE_FAST_ALLOCATED
 //    namespace WTF {
-//        class FastAllocBase;
 //
 //        T*    fastNew<T>();
 //        T*    fastNew<T>(arg);
 // FastDelete assumes that the underlying
 //
 // Example usage:
-//    class Widget : public FastAllocBase { ... };
+//    class Widget {
+//        WTF_MAKE_FAST_ALLOCATED
+//    ...
+//    };
+//
+//    struct Data {
+//        WTF_MAKE_FAST_ALLOCATED
+//    public:
+//    ...
+//    };
 //
 //    char* charPtr = fastNew<char>();
 //    fastDelete(charPtr);
@@ -83,8 +92,6 @@
 #include "FastMalloc.h"
 #include "TypeTraits.h"
 
-namespace WTF {
-
 #define WTF_MAKE_FAST_ALLOCATED \
 public: \
     void* operator new(size_t, void* p) { return p; } \
@@ -115,11 +122,10 @@ public: \
          ::WTF::fastMallocMatchValidateFree(p, ::WTF::Internal::AllocTypeClassNewArray); \
          ::WTF::fastFree(p); \
     } \
-private:
+private: \
+typedef int ThisIsHereToForceASemicolonAfterThisMacro
 
-class FastAllocBase {
-    WTF_MAKE_FAST_ALLOCATED  
-};
+namespace WTF {
 
     // fastNew / fastDelete
 
@@ -410,7 +416,6 @@ class FastAllocBase {
 
 } // namespace WTF
 
-using WTF::FastAllocBase;
 using WTF::fastDeleteSkippingDestructor;
 
 #endif // FastAllocBase_h
index 4ed75c5..b97d8c8 100644 (file)
 #define WTF_HashCountedSet_h
 
 #include "Assertions.h"
-#include "FastAllocBase.h"
 #include "HashMap.h"
 #include "Vector.h"
 
 namespace WTF {
 
     template<typename Value, typename HashFunctions = typename DefaultHash<Value>::Hash,
-        typename Traits = HashTraits<Value> > class HashCountedSet : public FastAllocBase {
+        typename Traits = HashTraits<Value> > class HashCountedSet {
+        WTF_MAKE_FAST_ALLOCATED;
     private:
         typedef HashMap<Value, unsigned, HashFunctions, Traits> ImplType;
     public:
index 09094d1..7731546 100644 (file)
@@ -29,7 +29,8 @@ namespace WTF {
 
     template<typename KeyArg, typename MappedArg, typename HashArg = typename DefaultHash<KeyArg>::Hash,
         typename KeyTraitsArg = HashTraits<KeyArg>, typename MappedTraitsArg = HashTraits<MappedArg> >
-    class HashMap : public FastAllocBase {
+    class HashMap {
+        WTF_MAKE_FAST_ALLOCATED;
     private:
         typedef KeyTraitsArg KeyTraits;
         typedef MappedTraitsArg MappedTraits;
index 66639e4..be6b93d 100644 (file)
@@ -35,7 +35,8 @@ namespace WTF {
     template<typename T> struct IdentityExtractor;
 
     template<typename ValueArg, typename HashArg = typename DefaultHash<ValueArg>::Hash,
-        typename TraitsArg = HashTraits<ValueArg> > class HashSet : public FastAllocBase {
+        typename TraitsArg = HashTraits<ValueArg> > class HashSet {
+        WTF_MAKE_FAST_ALLOCATED;
     private:
         typedef HashArg HashFunctions;
         typedef TraitsArg ValueTraits;
index e14ac45..e916ef2 100644 (file)
@@ -52,7 +52,8 @@ namespace WTF {
     template<typename ValueArg, size_t inlineCapacity> struct ListHashSetNodeAllocator;
     template<typename ValueArg, size_t inlineCapacity, typename HashArg> struct ListHashSetNodeHashFunctions;
 
-    template<typename ValueArg, size_t inlineCapacity = 256, typename HashArg = typename DefaultHash<ValueArg>::Hash> class ListHashSet : public FastAllocBase {
+    template<typename ValueArg, size_t inlineCapacity = 256, typename HashArg = typename DefaultHash<ValueArg>::Hash> class ListHashSet {
+        WTF_MAKE_FAST_ALLOCATED;
     private:
         typedef ListHashSetNode<ValueArg, inlineCapacity> Node;
         typedef ListHashSetNodeAllocator<ValueArg, inlineCapacity> NodeAllocator;
index 41813d3..c465b99 100644 (file)
@@ -32,7 +32,8 @@
 
 namespace WTF {
 
-template <typename T> class Locker : public Noncopyable {
+template <typename T> class Locker {
+    WTF_MAKE_NONCOPYABLE(Locker);
 public:
     Locker(T& lockable) : m_lockable(lockable) { m_lockable.lock(); }
     ~Locker() { m_lockable.unlock(); }
index 14100c9..7c18a0c 100644 (file)
@@ -48,7 +48,8 @@ namespace WTF {
     // when messages are fetched from the queue.
     // Essentially, MessageQueue acts as a queue of OwnPtr<DataType>.
     template<typename DataType>
-    class MessageQueue : public Noncopyable {
+    class MessageQueue {
+        WTF_MAKE_NONCOPYABLE(MessageQueue);
     public:
         MessageQueue() : m_killed(false) { }
         ~MessageQueue();
index 285ed2e..cc6bc55 100644 (file)
             ClassName& operator=(const ClassName&)
 #endif
 
-// We don't want argument-dependent lookup to pull in everything from the WTF
-// namespace when you use Noncopyable, so put it in its own namespace.
-
-#include "FastAllocBase.h"
-
-namespace WTFNoncopyable {
-
-    class Noncopyable : public FastAllocBase {
-        Noncopyable(const Noncopyable&);
-        Noncopyable& operator=(const Noncopyable&);
-    protected:
-        Noncopyable() { }
-        ~Noncopyable() { }
-    };
-
-} // namespace WTFNoncopyable
-
-using WTFNoncopyable::Noncopyable;
-
 #endif // WTF_Noncopyable_h
index 643b90b..dbd34af 100644 (file)
@@ -35,7 +35,7 @@ namespace WTF {
 template<typename T> class PassOwnArrayPtr;
 template<typename T> PassOwnArrayPtr<T> adoptArrayPtr(T*);
 
-template <typename T> class OwnArrayPtr : public Noncopyable {
+template <typename T> class OwnArrayPtr {
 public:
     typedef T* PtrType;
 
index 8b6cbf4..9d4841a 100644 (file)
 #define OwnFastMallocPtr_h
 
 #include "FastMalloc.h"
-#include "Noncopyable.h"
 
 namespace WTF {
 
-    template<class T> class OwnFastMallocPtr : public Noncopyable {
+    template<class T> class OwnFastMallocPtr {
+        WTF_MAKE_NONCOPYABLE(OwnFastMallocPtr);
     public:
         explicit OwnFastMallocPtr(T* ptr) : m_ptr(ptr)
         {
index cdc277c..fb59432 100644 (file)
@@ -22,7 +22,6 @@
 #define WTF_OwnPtr_h
 
 #include "Assertions.h"
-#include "Noncopyable.h"
 #include "NullPtr.h"
 #include "OwnPtrCommon.h"
 #include "TypeTraits.h"
@@ -39,7 +38,7 @@ namespace WTF {
     template<typename T> class PassOwnPtr;
     template<typename T> PassOwnPtr<T> adoptPtr(T*);
 
-    template<typename T> class OwnPtr : public Noncopyable {
+    template<typename T> class OwnPtr {
     public:
         typedef typename RemovePointer<T>::Type ValueType;
         typedef ValueType* PtrType;
index 8d8b302..da178b2 100644 (file)
@@ -22,6 +22,7 @@
 #define RefCounted_h
 
 #include "Assertions.h"
+#include "FastAllocBase.h"
 #include "Noncopyable.h"
 
 namespace WTF {
@@ -131,7 +132,8 @@ inline void adopted(RefCountedBase* object)
 
 #endif
 
-template<typename T> class RefCounted : public RefCountedBase, public Noncopyable {
+template<typename T> class RefCounted : public RefCountedBase {
+    WTF_MAKE_NONCOPYABLE(RefCounted); WTF_MAKE_FAST_ALLOCATED;
 public:
     void deref()
     {
@@ -140,6 +142,7 @@ public:
     }
 
 protected:
+    RefCounted() { }
     ~RefCounted()
     {
     }
index d57f88a..353bd35 100644 (file)
@@ -36,7 +36,8 @@ namespace WTF {
 
     enum HashTableDeletedValueType { HashTableDeletedValue };
 
-    template<typename T> class RefPtr : public FastAllocBase {
+    template<typename T> class RefPtr {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         ALWAYS_INLINE RefPtr() : m_ptr(0) { }
         ALWAYS_INLINE RefPtr(T* ptr) : m_ptr(ptr) { refIfNotNull(ptr); }
index b9e7eea..dbeabfa 100644 (file)
@@ -45,7 +45,8 @@ namespace WTF {
     };
 
     template<typename T, typename MappedArg, typename HashArg, typename KeyTraitsArg, typename MappedTraitsArg>
-    class HashMap<RefPtr<T>, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> : public FastAllocBase {
+    class HashMap<RefPtr<T>, MappedArg, HashArg, KeyTraitsArg, MappedTraitsArg> {
+        WTF_MAKE_FAST_ALLOCATED;
     private:
         typedef KeyTraitsArg KeyTraits;
         typedef MappedTraitsArg MappedTraits;
index 3af87a8..ed1ba2c 100644 (file)
 #ifndef ThreadIdentifierDataPthreads_h
 #define ThreadIdentifierDataPthreads_h
 
-#include <wtf/Noncopyable.h>
 #include <wtf/Threading.h>
 
 namespace WTF {
 
 // Holds ThreadIdentifier in the thread-specific storage and employs pthreads-specific 2-pass destruction to reliably remove
 // ThreadIdentifier from threadMap. It assumes regular ThreadSpecific types don't use multiple-pass destruction.
-class ThreadIdentifierData : public Noncopyable {
+class ThreadIdentifierData {
+    WTF_MAKE_NONCOPYABLE(ThreadIdentifierData);
 public:
     ~ThreadIdentifierData();
 
index 33c6612..a6a1cf2 100644 (file)
 #include "Platform.h"
 
 #include <wtf/Atomics.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/ThreadingPrimitives.h>
 
 namespace WTF {
 
-class ThreadSafeSharedBase : public Noncopyable {
+class ThreadSafeSharedBase {
+    WTF_MAKE_NONCOPYABLE(ThreadSafeSharedBase); WTF_MAKE_FAST_ALLOCATED;
 public:
     ThreadSafeSharedBase(int initialRefCount = 1)
         : m_refCount(initialRefCount)
index 93ed466..fa9a393 100644 (file)
@@ -61,7 +61,8 @@ namespace WTF {
 void ThreadSpecificThreadExit();
 #endif
 
-template<typename T> class ThreadSpecific : public Noncopyable {
+template<typename T> class ThreadSpecific {
+    WTF_MAKE_NONCOPYABLE(ThreadSpecific);
 public:
     ThreadSpecific();
     T* operator->();
@@ -84,7 +85,9 @@ private:
     void static destroy(void* ptr);
 
 #if USE(PTHREADS) || PLATFORM(QT) || PLATFORM(GTK) || OS(WINDOWS)
-    struct Data : Noncopyable {
+    struct Data {
+        WTF_MAKE_NONCOPYABLE(Data);
+    public:
         Data(T* value, ThreadSpecific<T>* owner) : value(value), owner(owner) {}
 #if PLATFORM(QT)
         ~Data() { owner->destroy(this); }
index f2c0cad..d72996a 100644 (file)
@@ -21,7 +21,6 @@
 #include "config.h"
 
 #include "ThreadSpecific.h"
-#include <wtf/Noncopyable.h>
 
 #if USE(PTHREADS)
 #error This file should not be compiled by ports that do not use Windows native ThreadSpecific implementation.
index 49de59e..f2e0565 100644 (file)
@@ -30,7 +30,9 @@
 
 namespace WTF {
 
-struct NewThreadContext : FastAllocBase {
+struct NewThreadContext {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     NewThreadContext(ThreadFunction entryPoint, void* data, const char* name)
         : entryPoint(entryPoint)
         , data(data)
index c11a6cb..809c3e2 100644 (file)
@@ -34,6 +34,7 @@
 #include "Platform.h"
 
 #include <wtf/Assertions.h>
+#include <wtf/FastAllocBase.h>
 #include <wtf/Locker.h>
 #include <wtf/Noncopyable.h>
 
@@ -96,7 +97,8 @@ typedef void* PlatformReadWriteLock;
 typedef void* PlatformCondition;
 #endif
     
-class Mutex : public Noncopyable {
+class Mutex {
+    WTF_MAKE_NONCOPYABLE(Mutex); WTF_MAKE_FAST_ALLOCATED;
 public:
     Mutex();
     ~Mutex();
@@ -113,7 +115,8 @@ private:
 
 typedef Locker<Mutex> MutexLocker;
 
-class ReadWriteLock : public Noncopyable {
+class ReadWriteLock {
+    WTF_MAKE_NONCOPYABLE(ReadWriteLock);
 public:
     ReadWriteLock();
     ~ReadWriteLock();
@@ -130,7 +133,8 @@ private:
     PlatformReadWriteLock m_readWriteLock;
 };
 
-class ThreadCondition : public Noncopyable {
+class ThreadCondition {
+    WTF_MAKE_NONCOPYABLE(ThreadCondition);
 public:
     ThreadCondition();
     ~ThreadCondition();
index f73793f..6d8dd4c 100644 (file)
@@ -277,7 +277,8 @@ namespace WTF {
     };
 
     template<typename T>
-    class VectorBufferBase : public Noncopyable {
+    class VectorBufferBase {
+        WTF_MAKE_NONCOPYABLE(VectorBufferBase);
     public:
         void allocateBuffer(size_t newCapacity)
         {
@@ -488,7 +489,8 @@ namespace WTF {
     };
 
     template<typename T, size_t inlineCapacity = 0>
-    class Vector : public FastAllocBase {
+    class Vector {
+        WTF_MAKE_FAST_ALLOCATED;
     private:
         typedef VectorBuffer<T, inlineCapacity> Buffer;
         typedef VectorTypeOperations<T> TypeOperations;
index 52c267a..243aa91 100644 (file)
@@ -52,7 +52,8 @@ namespace JSC {
 
 typedef HashMap<const char*, RefPtr<StringImpl>, PtrHash<const char*> > LiteralIdentifierTable;
 
-class IdentifierTable : public FastAllocBase {
+class IdentifierTable {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     ~IdentifierTable();
 
@@ -85,7 +86,8 @@ class AtomicStringTable;
 
 typedef void (*AtomicStringTableDestructor)(AtomicStringTable*);
 
-class WTFThreadData : public Noncopyable {
+class WTFThreadData {
+    WTF_MAKE_NONCOPYABLE(WTFThreadData);
 public:
     WTFThreadData();
     ~WTFThreadData();
index c89c036..b5b1261 100644 (file)
@@ -414,7 +414,10 @@ static void mult(BigInt& aRef, const BigInt& bRef)
     aRef = c;
 }
 
-struct P5Node : Noncopyable {
+struct P5Node {
+    WTF_MAKE_NONCOPYABLE(P5Node); WTF_MAKE_FAST_ALLOCATED;
+public:
+    P5Node() { }
     BigInt val;
     P5Node* next;
 };
index cec3e43..4136f28 100644 (file)
@@ -41,7 +41,8 @@ template<> void freeOwnedGPtr<GPatternSpec>(GPatternSpec*);
 template<> void freeOwnedGPtr<GDir>(GDir*);
 template<> void freeOwnedGPtr<GFile>(GFile*);
 
-template <typename T> class GOwnPtr : public Noncopyable {
+template <typename T> class GOwnPtr {
+    WTF_MAKE_NONCOPYABLE(GOwnPtr);
 public:
     explicit GOwnPtr(T* ptr = 0) : m_ptr(ptr) { }
     ~GOwnPtr() { freeOwnedGPtr(m_ptr); }
index a546bf3..e73d38e 100644 (file)
 #define StringBuffer_h
 
 #include <wtf/Assertions.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/unicode/Unicode.h>
 #include <limits>
 
 namespace WTF {
 
-class StringBuffer : public Noncopyable {
+class StringBuffer {
+    WTF_MAKE_NONCOPYABLE(StringBuffer);
 public:
     explicit StringBuffer(unsigned length)
         : m_length(length)
index 6567672..26bc1d9 100644 (file)
 #ifndef StringImplBase_h
 #define StringImplBase_h
 
-#include <wtf/Noncopyable.h>
 #include <wtf/unicode/Unicode.h>
 
 namespace WTF {
 
-class StringImplBase : public Noncopyable {
+class StringImplBase {
+    WTF_MAKE_NONCOPYABLE(StringImplBase); WTF_MAKE_FAST_ALLOCATED;
 public:
     bool isStringImpl() { return (m_refCountAndFlags & s_refCountInvalidForStringImpl) != s_refCountInvalidForStringImpl; }
     unsigned length() const { return m_length; }
@@ -45,9 +45,6 @@ protected:
         BufferShared,
     };
 
-    using Noncopyable::operator new;
-    void* operator new(size_t, void* inPlace) { ASSERT(inPlace); return inPlace; }
-
     // For SmallStringStorage, which allocates an array and uses an in-place new.
     StringImplBase() { }
 
index fe6a809..00ab16e 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef WTF_Collator_h
 #define WTF_Collator_h
 
+#include <wtf/FastAllocBase.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/unicode/Unicode.h>
@@ -39,7 +40,8 @@ struct UCollator;
 
 namespace WTF {
 
-    class Collator : public Noncopyable {
+    class Collator {
+        WTF_MAKE_NONCOPYABLE(Collator); WTF_MAKE_FAST_ALLOCATED;
     public:
         enum Result { Equal = 0, Greater = 1, Less = -1 };
 
index be703a9..eea5266 100644 (file)
@@ -299,7 +299,8 @@ struct ByteTerm {
     }
 };
 
-class ByteDisjunction : public FastAllocBase {
+class ByteDisjunction {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     ByteDisjunction(unsigned numSubpatterns, unsigned frameSize)
         : m_numSubpatterns(numSubpatterns)
@@ -312,7 +313,9 @@ public:
     unsigned m_frameSize;
 };
 
-struct BytecodePattern : FastAllocBase {
+struct BytecodePattern {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     BytecodePattern(PassOwnPtr<ByteDisjunction> body, Vector<ByteDisjunction*> allParenthesesInfo, YarrPattern& pattern, BumpPointerAllocator* allocator)
         : m_body(body)
         , m_ignoreCase(pattern.m_ignoreCase)
index 2172dda..d80f692 100644 (file)
@@ -63,7 +63,9 @@ private:
     }
 };
 
-struct CharacterClass : FastAllocBase {
+struct CharacterClass {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     // All CharacterClass instances have to have the full set of matches and ranges,
     // they may have an optional table for faster lookups (which must match the
     // specified matches and ranges)
@@ -204,7 +206,9 @@ struct PatternTerm {
     }
 };
 
-struct PatternAlternative : FastAllocBase {
+struct PatternAlternative {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     PatternAlternative(PatternDisjunction* disjunction)
         : m_parent(disjunction)
         , m_onceThrough(false)
@@ -245,7 +249,9 @@ struct PatternAlternative : FastAllocBase {
     bool m_containsBOL : 1;
 };
 
-struct PatternDisjunction : FastAllocBase {
+struct PatternDisjunction {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     PatternDisjunction(PatternAlternative* parent = 0)
         : m_parent(parent)
         , m_hasFixedSize(false)
index c59834c..e0381ab 100644 (file)
@@ -1,3 +1,14 @@
+2011-01-20  Zoltan Horvath  <zoltan@webkit.org>
+
+        Reviewed by Csaba Osztrogonác.
+
+        Refactoring of the custom allocation framework
+        https://bugs.webkit.org/show_bug.cgi?id=49897
+
+        Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
+        The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
+        equivalent macro implementation at the necessary places.
+
 2011-01-20  Mikhail Naganov  <mnaganov@chromium.org>
 
         Reviewed by Pavel Feldman.
index 670d6e0..00e7fbc 100644 (file)
@@ -60,7 +60,8 @@ struct TextMarkerData {
 
 enum PostType { PostSynchronously, PostAsynchronously };
 
-class AXObjectCache : public Noncopyable {
+class AXObjectCache {
+    WTF_MAKE_NONCOPYABLE(AXObjectCache); WTF_MAKE_FAST_ALLOCATED;
 public:
     AXObjectCache(const Document*);
     ~AXObjectCache();
index ea68d10..9bae8ca 100644 (file)
@@ -36,6 +36,7 @@
 namespace WebCore {
 
     class CachedScriptSourceProvider : public ScriptSourceProvider, public CachedResourceClient {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassRefPtr<CachedScriptSourceProvider> create(CachedScript* cachedScript) { return adoptRef(new CachedScriptSourceProvider(cachedScript)); }
 
index 4c25407..91f1e4c 100644 (file)
 #ifndef GCController_h
 #define GCController_h
 
-#include <wtf/Noncopyable.h>
 #include "Timer.h"
 
 namespace WebCore {
 
-    class GCController : public Noncopyable {
+    class GCController {
+        WTF_MAKE_NONCOPYABLE(GCController); WTF_MAKE_FAST_ALLOCATED;
         friend GCController& gcController();
 
     public:
index 94b6f78..e1138ed 100644 (file)
@@ -37,7 +37,8 @@ namespace WebCore {
 //     - wrappers being deleted without being removed from the cache
 //     - wrappers being cached twice
 
-class JSDebugWrapperSet : public Noncopyable {
+class JSDebugWrapperSet {
+    WTF_MAKE_NONCOPYABLE(JSDebugWrapperSet);
     friend class WTF::ThreadSpecific<JSDebugWrapperSet>;
 public:
     static JSDebugWrapperSet& shared();
index 8193d7c..349dc14 100644 (file)
 #ifndef NDEBUG
 #include <wtf/MainThread.h>
 #endif
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
-class JSMainThreadExecState : public Noncopyable {
+class JSMainThreadExecState {
+    WTF_MAKE_NONCOPYABLE(JSMainThreadExecState);
 public:
     static JSC::ExecState* currentState()
     { 
index 6c9d0ba..59ad6fc 100644 (file)
@@ -41,7 +41,8 @@ namespace WebCore {
     * time interval, either once or repeatedly. Used for window.setTimeout()
     * and window.setInterval()
     */
-    class ScheduledAction : public Noncopyable {
+    class ScheduledAction {
+        WTF_MAKE_NONCOPYABLE(ScheduledAction); WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassOwnPtr<ScheduledAction> create(JSC::ExecState*, DOMWrapperWorld* isolatedWorld);
 
index 15c23c5..5f691d9 100644 (file)
@@ -40,7 +40,8 @@ namespace WebCore {
     class DOMWindow;
     class DOMWrapperWorld;
 
-    class ScriptCachedFrameData  : public Noncopyable {
+    class ScriptCachedFrameData {
+        WTF_MAKE_NONCOPYABLE(ScriptCachedFrameData); WTF_MAKE_FAST_ALLOCATED;
         typedef HashMap< RefPtr<DOMWrapperWorld>, JSC::ProtectedPtr<JSDOMWindow> > JSDOMWindowSet;
 
     public:
index de274db..bde4736 100644 (file)
@@ -56,7 +56,8 @@ class PageGroup;
 class ScriptDebugListener;
 class JavaScriptCallFrame;
 
-class ScriptDebugServer : JSC::Debugger, public Noncopyable {
+class ScriptDebugServer : JSC::Debugger {
+    WTF_MAKE_NONCOPYABLE(ScriptDebugServer); WTF_MAKE_FAST_ALLOCATED;
 public:
     static ScriptDebugServer& shared();
 
index 05e7a25..d4dd606 100644 (file)
 #include "ScriptProfile.h"
 #include "ScriptState.h"
 
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
-class ScriptProfiler : public Noncopyable {
+class ScriptProfiler {
+    WTF_MAKE_NONCOPYABLE(ScriptProfiler);
 public:
     static void start(ScriptState* state, const String& title);
     static PassRefPtr<ScriptProfile> stop(ScriptState* state, const String& title);
index 0c08611..e19c0c8 100644 (file)
@@ -52,7 +52,8 @@ class Page;
 // For now, the separation is purely by convention.
 typedef JSC::ExecState ScriptState;
 
-class ScriptStateProtectedPtr : public Noncopyable {
+class ScriptStateProtectedPtr {
+    WTF_MAKE_NONCOPYABLE(ScriptStateProtectedPtr);
 public:
     explicit ScriptStateProtectedPtr(ScriptState*);
     ~ScriptStateProtectedPtr();
index 5d03328..6e2d7be 100644 (file)
 
 #include "DOMWrapperWorld.h"
 #include "DOMObjectHashTableMap.h"
-#include <wtf/Noncopyable.h>
 #include <wtf/HashSet.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-class WebCoreJSClientData : public JSC::JSGlobalData::ClientData, public Noncopyable {
+class WebCoreJSClientData : public JSC::JSGlobalData::ClientData {
+    WTF_MAKE_NONCOPYABLE(WebCoreJSClientData); WTF_MAKE_FAST_ALLOCATED;
     friend class JSGlobalDataWorldIterator;
     friend void initNormalWorldClientData(JSC::JSGlobalData*);
 
 public:
+    WebCoreJSClientData() { }
     virtual ~WebCoreJSClientData()
     {
         ASSERT(m_worldSet.contains(m_normalWorld.get()));
index be7da4d..4578913 100644 (file)
@@ -31,7 +31,6 @@
 
 #include <runtime/Protect.h>
 #include <wtf/Forward.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/Threading.h>
 
 namespace JSC {
@@ -45,7 +44,8 @@ namespace WebCore {
     class ScriptValue;
     class WorkerContext;
 
-    class WorkerScriptController : public Noncopyable {
+    class WorkerScriptController {
+        WTF_MAKE_NONCOPYABLE(WorkerScriptController); WTF_MAKE_FAST_ALLOCATED;
     public:
         WorkerScriptController(WorkerContext*);
         ~WorkerScriptController();
index 78edf92..b042606 100644 (file)
@@ -43,7 +43,8 @@ namespace WebCore {
     // thread.  The DOMData for the main thread and the DOMData for child threads
     // use different subclasses.
     //
-    class DOMData : public Noncopyable {
+    class DOMData {
+        WTF_MAKE_NONCOPYABLE(DOMData);
     public:
         DOMData();
         virtual ~DOMData();
index cfe220e..dbead9c 100644 (file)
@@ -149,7 +149,8 @@ namespace WebCore {
     // This class doesn't manage the lifetime of the store.  The data store
     // lifetime is managed by subclasses.
     //
-    class DOMDataStore : public Noncopyable {
+    class DOMDataStore {
+        WTF_MAKE_NONCOPYABLE(DOMDataStore);
     public:
         enum DOMWrapperMapType {
             DOMNodeMap,
index 1aa1f62..376b5f6 100644 (file)
@@ -60,14 +60,14 @@ public:
 
 #include "OwnHandle.h"
 #include <v8.h>
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
 class Frame;
 class DOMWindow;
 
-class ScriptCachedFrameData  : public Noncopyable {
+class ScriptCachedFrameData  {
+    WTF_MAKE_NONCOPYABLE(ScriptCachedFrameData);
 public:
     ScriptCachedFrameData(Frame*);
     ~ScriptCachedFrameData() { }
index 40dd5fc..8fa723f 100644 (file)
@@ -48,7 +48,8 @@ namespace WebCore {
 class Page;
 class ScriptDebugListener;
 
-class ScriptDebugServer : public Noncopyable {
+class ScriptDebugServer {
+    WTF_MAKE_NONCOPYABLE(ScriptDebugServer);
 public:
     static ScriptDebugServer& shared();
 
index b75a054..e0969e1 100644 (file)
 #include "ScriptProfile.h"
 #include "ScriptState.h"
 
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
 class InspectorObject;
 
-class ScriptProfiler : public Noncopyable {
+class ScriptProfiler {
+    WTF_MAKE_NONCOPYABLE(ScriptProfiler);
 public:
     static void start(ScriptState* state, const String& title);
     static PassRefPtr<ScriptProfile> stop(ScriptState* state, const String& title);
index 11813b0..0fecee8 100644 (file)
@@ -42,7 +42,8 @@ class Frame;
 class Node;
 class Page;
 
-class ScriptState : public Noncopyable {
+class ScriptState {
+    WTF_MAKE_NONCOPYABLE(ScriptState);
 public:
     bool hadException() { return !m_exception.IsEmpty(); }
     void setException(v8::Local<v8::Value> exception)
@@ -79,7 +80,8 @@ public:
     ~EmptyScriptState() { }
 };
 
-class ScriptStateProtectedPtr : public Noncopyable {
+class ScriptStateProtectedPtr {
+    WTF_MAKE_NONCOPYABLE(ScriptStateProtectedPtr);
 public:
     ScriptStateProtectedPtr() : m_scriptState(0) { }
     ScriptStateProtectedPtr(ScriptState* scriptState) : m_scriptState(scriptState)
index e050bfc..666e619 100644 (file)
@@ -128,7 +128,8 @@ private:
 
 // Writer is responsible for serializing primitive types and storing
 // information used to reconstruct composite types.
-class Writer : Noncopyable {
+class Writer {
+    WTF_MAKE_NONCOPYABLE(Writer);
 public:
     Writer()
         : m_position(0)
@@ -377,7 +378,8 @@ public:
     }
 
 private:
-    class StateBase : public Noncopyable {
+    class StateBase {
+        WTF_MAKE_NONCOPYABLE(StateBase);
     public:
         virtual ~StateBase() { }
 
index 50efc64..00d6f36 100644 (file)
 #define Bridge_h
 
 #include "BridgeJSC.h"
-#include <wtf/Noncopyable.h>
 
 namespace JSC  {
 
 namespace Bindings {
 
-class Method : public Noncopyable {
+class Method {
+    WTF_MAKE_NONCOPYABLE(Method); WTF_MAKE_FAST_ALLOCATED;
 public:
+    Method() { }
     virtual int numParameters() const = 0;
 
     virtual ~Method() { }
index 99bae0b..8646e92 100644 (file)
@@ -33,7 +33,8 @@
 
 namespace WebCore {
     
-class IdentifierRep : public FastAllocBase {
+class IdentifierRep {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     static IdentifierRep* get(int);
     static IdentifierRep* get(const char*);
index 96974d9..ebcfaad 100644 (file)
@@ -59,8 +59,10 @@ public:
     virtual ~Field() { }
 };
 
-class Class : public Noncopyable {
+class Class {
+    WTF_MAKE_NONCOPYABLE(Class); WTF_MAKE_FAST_ALLOCATED;
 public:
+    Class() { }
     virtual MethodList methodsNamed(const Identifier&, Instance*) const = 0;
     virtual Field* fieldNamed(const Identifier&, Instance*) const = 0;
     virtual JSValue fallbackObject(ExecState*, Instance*, const Identifier&) { return jsUndefined(); }
@@ -125,7 +127,8 @@ private:
     WeakGCPtr<RuntimeObject> m_runtimeObject;
 };
 
-class Array : public Noncopyable {
+class Array {
+    WTF_MAKE_NONCOPYABLE(Array);
 public:
     Array(PassRefPtr<RootObject>);
     virtual ~Array();
index 833d7fe..174f1ed 100644 (file)
@@ -32,6 +32,7 @@ class StyleCachedImage;
 class StyleImage;
 
 class CSSImageValue : public CSSPrimitiveValue, private CachedResourceClient {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassRefPtr<CSSImageValue> create() { return adoptRef(new CSSImageValue); }
     static PassRefPtr<CSSImageValue> create(const String& url) { return adoptRef(new CSSImageValue(url)); }
index 10d3026..ad4e97d 100644 (file)
@@ -34,6 +34,7 @@ class CachedCSSStyleSheet;
 class MediaList;
 
 class CSSImportRule : public CSSRule, private CachedResourceClient {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassRefPtr<CSSImportRule> create(CSSStyleSheet* parent, const String& href, PassRefPtr<MediaList> media)
     {
index 6225c36..92638f2 100644 (file)
@@ -26,7 +26,9 @@
 
 namespace WebCore {
 
-    struct CSSNamespace : Noncopyable {
+    struct CSSNamespace {
+        WTF_MAKE_NONCOPYABLE(CSSNamespace); WTF_MAKE_FAST_ALLOCATED;
+    public:
         AtomicString prefix;
         AtomicString uri;
         OwnPtr<CSSNamespace> parent;
index 496a21a..d326812 100644 (file)
@@ -340,7 +340,8 @@ namespace WebCore {
     int cssPropertyID(const String&);
     int cssValueKeywordID(const CSSParserString&);
 
-    class ShorthandScope : public FastAllocBase {
+    class ShorthandScope {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         ShorthandScope(CSSParser* parser, int propId) : m_parser(parser)
         {
index 993ae28..996e783 100644 (file)
@@ -59,7 +59,8 @@ struct CSSParserValue {
     PassRefPtr<CSSValue> createCSSValue();
 };
 
-class CSSParserValueList : public FastAllocBase {
+class CSSParserValueList {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     CSSParserValueList()
         : m_current(0)
@@ -83,7 +84,9 @@ private:
     Vector<CSSParserValue, 4> m_values;
 };
 
-struct CSSParserFunction : FastAllocBase {
+struct CSSParserFunction {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     CSSParserString name;
     OwnPtr<CSSParserValueList> args;
 };
index 106171d..10e593c 100644 (file)
@@ -29,7 +29,8 @@
 
 namespace WebCore {
 
-class CSSProperty : public FastAllocBase {
+class CSSProperty {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     CSSProperty(int propID, PassRefPtr<CSSValue> value, bool important = false, int shorthandID = 0, bool implicit = false)
         : m_id(propID)
index 400dd40..ca3814a 100644 (file)
@@ -37,8 +37,10 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-class CSSSelectorBag : public Noncopyable {
+class CSSSelectorBag {
+    WTF_MAKE_NONCOPYABLE(CSSSelectorBag);
 public:
+    CSSSelectorBag() { }
     ~CSSSelectorBag()
     {
         ASSERT(isEmpty());
index 5456be6..b930353 100644 (file)
@@ -33,7 +33,8 @@ namespace WebCore {
     class CSSSelectorBag;
 
     // this class represents a selector for a StyleRule
-    class CSSSelector : public Noncopyable {
+    class CSSSelector {
+        WTF_MAKE_NONCOPYABLE(CSSSelector); WTF_MAKE_FAST_ALLOCATED;
     public:
         CSSSelector()
             : m_relation(Descendant)
@@ -306,7 +307,9 @@ namespace WebCore {
         unsigned specificityForPage() const;
         void extractPseudoType() const;
 
-        struct RareData : Noncopyable {
+        struct RareData {
+            WTF_MAKE_NONCOPYABLE(RareData); WTF_MAKE_FAST_ALLOCATED;
+        public:
             RareData(PassOwnPtr<CSSSelector> tagHistory)
                 : m_a(0)
                 , m_b(0)
index 7adc6b9..abd9bc8 100644 (file)
 #define CSSSelectorList_h
 
 #include "CSSSelector.h"
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
     
-class CSSSelectorList : public Noncopyable {
+class CSSSelectorList {
+    WTF_MAKE_NONCOPYABLE(CSSSelectorList); WTF_MAKE_FAST_ALLOCATED;
 public:
     CSSSelectorList() : m_selectorArray(0) { }
     ~CSSSelectorList();
index fc0722a..27b44d2 100644 (file)
@@ -352,7 +352,8 @@ if (id == propID) { \
     return; \
 }
 
-class CSSRuleData : public Noncopyable {
+class CSSRuleData {
+    WTF_MAKE_NONCOPYABLE(CSSRuleData);
 public:
     CSSRuleData(unsigned pos, CSSStyleRule* r, CSSSelector* sel, CSSRuleData* prev = 0)
         : m_position(pos)
@@ -380,7 +381,8 @@ private:
     CSSRuleData* m_next;
 };
 
-class CSSRuleDataList : public Noncopyable {
+class CSSRuleDataList {
+    WTF_MAKE_NONCOPYABLE(CSSRuleDataList);
 public:
     CSSRuleDataList(unsigned pos, CSSStyleRule* rule, CSSSelector* sel)
         : m_first(new CSSRuleData(pos, rule, sel))
@@ -410,7 +412,8 @@ private:
     CSSRuleData* m_last;
 };
 
-class CSSRuleSet : public Noncopyable {
+class CSSRuleSet {
+    WTF_MAKE_NONCOPYABLE(CSSRuleSet);
 public:
     CSSRuleSet();
     ~CSSRuleSet();
index eeace57..e035af2 100644 (file)
@@ -69,7 +69,8 @@ class StyledElement;
 class WebKitCSSKeyframeRule;
 class WebKitCSSKeyframesRule;
 
-class MediaQueryResult : public Noncopyable {
+class MediaQueryResult {
+    WTF_MAKE_NONCOPYABLE(MediaQueryResult); WTF_MAKE_FAST_ALLOCATED;
 public:
     MediaQueryResult(const MediaQueryExp& expr, bool result)
         : m_expression(expr)
@@ -82,7 +83,8 @@ public:
 };
 
     // This class selects a RenderStyle for a given element based on a collection of stylesheets.
-    class CSSStyleSelector : public Noncopyable {
+    class CSSStyleSelector {
+        WTF_MAKE_NONCOPYABLE(CSSStyleSelector); WTF_MAKE_FAST_ALLOCATED;
     public:
         CSSStyleSelector(Document*, StyleSheetList* authorSheets, CSSStyleSheet* mappedElementSheet,
                          CSSStyleSheet* pageUserSheet, const Vector<RefPtr<CSSStyleSheet> >* pageGroupUserSheets,
@@ -214,7 +216,8 @@ public:
     public:
         static RenderStyle* styleNotYetAvailable() { return s_styleNotYetAvailable; }
 
-        class SelectorChecker : public Noncopyable {
+        class SelectorChecker {
+            WTF_MAKE_NONCOPYABLE(SelectorChecker);
         public:
             SelectorChecker(Document*, bool strictParsing);
 
index 281009b..a638ac9 100644 (file)
@@ -37,7 +37,8 @@
 namespace WebCore {
 class MediaQueryExp;
 
-class MediaQuery : public Noncopyable {
+class MediaQuery {
+    WTF_MAKE_NONCOPYABLE(MediaQuery); WTF_MAKE_FAST_ALLOCATED;
 public:
     enum Restrictor {
         Only, Not, None
index 00ac394..07c4d0d 100644 (file)
@@ -49,7 +49,8 @@ class MediaQueryExp;
  * the device characteristics are not known. This can be used to prune the loading
  * of stylesheets to only those which are probable to match.
  */
-class MediaQueryEvaluator : public Noncopyable {
+class MediaQueryEvaluator {
+     WTF_MAKE_NONCOPYABLE(MediaQueryEvaluator); WTF_MAKE_FAST_ALLOCATED;
 public:
     /** Creates evaluator which evaluates only simple media queries
      *  Evaluator returns true for "all", and returns value of \mediaFeatureResult
index 72d3fff..7e4d477 100644 (file)
@@ -38,7 +38,8 @@
 namespace WebCore {
 class CSSParserValueList;
 
-class MediaQueryExp : public FastAllocBase {
+class MediaQueryExp {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<MediaQueryExp> create(const AtomicString& mediaFeature, CSSParserValueList* values);
     ~MediaQueryExp();
index 2326f67..6a75323 100644 (file)
@@ -39,7 +39,8 @@ class Document;
 class PendingScript;
 class ScriptElement;
     
-class AsyncScriptRunner : public Noncopyable {
+class AsyncScriptRunner {
+    WTF_MAKE_NONCOPYABLE(AsyncScriptRunner); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<AsyncScriptRunner> create(Document* document) { return new AsyncScriptRunner(document); }
     ~AsyncScriptRunner();
index 86a22b0..772a700 100644 (file)
@@ -35,7 +35,8 @@ namespace WebCore {
 class Element;
 typedef int ExceptionCode;
 
-class DOMStringMap : public Noncopyable {
+class DOMStringMap {
+    WTF_MAKE_NONCOPYABLE(DOMStringMap); WTF_MAKE_FAST_ALLOCATED;
 public:
     virtual ~DOMStringMap();
 
index 0bb025a..15b097c 100644 (file)
@@ -4691,7 +4691,9 @@ void Document::addMessage(MessageSource source, MessageType type, MessageLevel l
         window->console()->addMessage(source, type, level, message, lineNumber, sourceURL, callStack);
 }
 
-struct PerformTaskContext : Noncopyable {
+struct PerformTaskContext {
+    WTF_MAKE_NONCOPYABLE(PerformTaskContext); WTF_MAKE_FAST_ALLOCATED;
+public:
     PerformTaskContext(PassRefPtr<DocumentWeakReference> documentReference, PassOwnPtr<ScriptExecutionContext::Task> task)
         : documentReference(documentReference)
         , task(task)
index 83177fc..2dc2b9e 100644 (file)
@@ -38,8 +38,10 @@ class IntRect;
 class Node;
 class Range;
 
-class DocumentMarkerController : public Noncopyable {
+class DocumentMarkerController {
+    WTF_MAKE_NONCOPYABLE(DocumentMarkerController); WTF_MAKE_FAST_ALLOCATED;
 public:
+    DocumentMarkerController() { }
     ~DocumentMarkerController() { detach(); }
 
     void detach();
index f629241..45b879d 100644 (file)
 #ifndef Event_h
 #define Event_h
 
+#include "Clipboard.h"
 #include "DOMTimeStamp.h"
 #include <wtf/RefCounted.h>
 #include <wtf/text/AtomicString.h>
 
 namespace WebCore {
 
-    class Clipboard;
     class EventTarget;
 
     class Event : public RefCounted<Event> {
index 72768d2..439e9d8 100644 (file)
@@ -180,7 +180,8 @@ namespace WebCore {
     \
 // end of DOM_EVENT_NAMES_FOR_EACH
 
-    class EventNames : public Noncopyable {
+    class EventNames {
+        WTF_MAKE_NONCOPYABLE(EventNames); WTF_MAKE_FAST_ALLOCATED;
         int dummy; // Needed to make initialization macro work.
         // Private to prevent accidental call to EventNames() instead of eventNames()
         EventNames();
index ddcb663..81eeb7f 100644 (file)
@@ -83,7 +83,9 @@ namespace WebCore {
     typedef Vector<RegisteredEventListener, 1> EventListenerVector;
     typedef HashMap<AtomicString, EventListenerVector*> EventListenerMap;
 
-    struct EventTargetData : Noncopyable {
+    struct EventTargetData {
+        WTF_MAKE_NONCOPYABLE(EventTargetData); WTF_MAKE_FAST_ALLOCATED;
+    public:
         EventTargetData();
         ~EventTargetData();
 
index 9d1835a..26f7fd0 100644 (file)
 #define IgnoreDestructiveWriteCountIncrementer_h
 
 #include "Document.h"
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
-class IgnoreDestructiveWriteCountIncrementer : public Noncopyable {
+class IgnoreDestructiveWriteCountIncrementer {
+    WTF_MAKE_NONCOPYABLE(IgnoreDestructiveWriteCountIncrementer);
 public:
     explicit IgnoreDestructiveWriteCountIncrementer(Document* document)
         : m_count(document ? &document->m_ignoreDestructiveWriteCount : 0)
index f308a29..07668a4 100644 (file)
@@ -55,7 +55,8 @@ namespace WebCore {
 
     // MessagePortChannel is a platform-independent interface to the remote side of a message channel.
     // It acts as a wrapper around the platform-dependent PlatformMessagePortChannel implementation which ensures that the platform-dependent close() method is invoked before destruction.
-    class MessagePortChannel : public Noncopyable {
+    class MessagePortChannel {
+        WTF_MAKE_NONCOPYABLE(MessagePortChannel); WTF_MAKE_FAST_ALLOCATED;
     public:
         static void createChannel(PassRefPtr<MessagePort>, PassRefPtr<MessagePort>);
 
@@ -78,7 +79,8 @@ namespace WebCore {
         // Returns true if the proxy currently contains messages for this port.
         bool hasPendingActivity();
 
-        class EventData : public Noncopyable {
+        class EventData {
+            WTF_MAKE_NONCOPYABLE(EventData); WTF_MAKE_FAST_ALLOCATED;
         public:
             static PassOwnPtr<EventData> create(PassRefPtr<SerializedScriptValue>, PassOwnPtr<MessagePortChannelArray>);
 
index ab208d2..7350f80 100644 (file)
@@ -34,7 +34,9 @@
 
 namespace WebCore {
 
-struct NodeListsNodeData : Noncopyable {
+struct NodeListsNodeData {
+    WTF_MAKE_NONCOPYABLE(NodeListsNodeData); WTF_MAKE_FAST_ALLOCATED;
+public:
     typedef HashSet<DynamicNodeList*> NodeListSet;
     NodeListSet m_listsWithCaches;
     
@@ -67,7 +69,8 @@ private:
     }
 };
     
-class NodeRareData : public Noncopyable {
+class NodeRareData {
+    WTF_MAKE_NONCOPYABLE(NodeRareData); WTF_MAKE_FAST_ALLOCATED;
 public:    
     NodeRareData()
         : m_tabIndex(0)
index 34fc069..cb95f20 100644 (file)
@@ -32,7 +32,8 @@ struct QualifiedNameComponents {
     StringImpl* m_namespace;
 };
 
-class QualifiedName : public FastAllocBase {
+class QualifiedName {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     class QualifiedNameImpl : public RefCounted<QualifiedNameImpl> {
     public:
index 07c59db..5250f3e 100644 (file)
@@ -32,6 +32,7 @@ class ScriptElement;
 class ScriptSourceCode;
 
 class ScriptElement : private CachedResourceClient {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     ScriptElement(Element*, bool createdByParser, bool isEvaluated);
     virtual ~ScriptElement();
index f498be0..9fdf85e 100644 (file)
@@ -66,7 +66,8 @@ public:
     }
 };
 
-class ScriptExecutionContext::PendingException : public Noncopyable {
+class ScriptExecutionContext::PendingException {
+    WTF_MAKE_NONCOPYABLE(PendingException);
 public:
     PendingException(const String& errorMessage, int lineNumber, const String& sourceURL, PassRefPtr<ScriptCallStack> callStack)
         : m_errorMessage(errorMessage)
index fbb96ec..b57b75a 100644 (file)
@@ -33,6 +33,7 @@
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
+#include <wtf/Noncopyable.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -114,8 +115,10 @@ namespace WebCore {
         void ref() { refScriptExecutionContext(); }
         void deref() { derefScriptExecutionContext(); }
 
-        class Task : public Noncopyable {
+        class Task {
+            WTF_MAKE_NONCOPYABLE(Task); WTF_MAKE_FAST_ALLOCATED;
         public:
+            Task() { }
             virtual ~Task();
             virtual void performTask(ScriptExecutionContext*) = 0;
             // Certain tasks get marked specially so that they aren't discarded, and are executed, when the context is shutting down its message queue.
index 826e6bd..6eb893c 100644 (file)
@@ -28,7 +28,8 @@
 
 namespace WebCore {
 
-    class SpaceSplitStringData : public Noncopyable {
+    class SpaceSplitStringData {
+        WTF_MAKE_NONCOPYABLE(SpaceSplitStringData); WTF_MAKE_FAST_ALLOCATED;
     public:
         SpaceSplitStringData(const String& string, bool shouldFoldCase)
             : m_string(string), m_shouldFoldCase(shouldFoldCase), m_createdVector(false)
index f97afcf..63dc78a 100644 (file)
@@ -33,7 +33,8 @@ namespace WebCore {
     typedef void* PlatformTransformSource;
 #endif
 
-    class TransformSource : public Noncopyable {
+    class TransformSource {
+        WTF_MAKE_NONCOPYABLE(TransformSource); WTF_MAKE_FAST_ALLOCATED;
     public:
         TransformSource(const PlatformTransformSource& source);
         ~TransformSource();
index 17ea319..b1ed96b 100644 (file)
@@ -36,7 +36,8 @@ enum ProcessingUserGestureState {
     DefinitelyNotProcessingUserGesture
 };
 
-class UserGestureIndicator : public Noncopyable {
+class UserGestureIndicator {
+    WTF_MAKE_NONCOPYABLE(UserGestureIndicator);
 public:
     static bool processingUserGesture() { return s_processingUserGesture == DefinitelyProcessingUserGesture; }
     static ProcessingUserGestureState getUserGestureState() { return s_processingUserGesture; }
index 6c71079..21f4c7e 100644 (file)
@@ -34,7 +34,8 @@ namespace WebCore {
 class Frame;
 class Node;
 
-class UserTypingGestureIndicator : public Noncopyable {
+class UserTypingGestureIndicator {
+    WTF_MAKE_NONCOPYABLE(UserTypingGestureIndicator);
 public:
     static bool processingUserTypingGesture();
     static Node* focusedElementAtGestureStart();
index 7533c5b..1aad9b3 100644 (file)
@@ -71,6 +71,7 @@ namespace WebCore {
 #endif
 
     class XMLDocumentParser : public ScriptableDocumentParser, public CachedResourceClient {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassRefPtr<XMLDocumentParser> create(Document* document, FrameView* view)
         {
index 0f6b4b4..10d6e0d 100644 (file)
@@ -75,8 +75,10 @@ using namespace std;
 
 namespace WebCore {
 
-class PendingCallbacks : public Noncopyable {
+class PendingCallbacks {
+    WTF_MAKE_NONCOPYABLE(PendingCallbacks);
 public:
+    PendingCallbacks() { }
     ~PendingCallbacks()
     {
         deleteAllValues(m_callbacks);
index 58e8a6b..f60471b 100644 (file)
@@ -36,7 +36,8 @@ namespace WebCore {
 
     class CachedResourceLoader;
 
-    class XMLDocumentParserScope : public Noncopyable {
+    class XMLDocumentParserScope {
+        WTF_MAKE_NONCOPYABLE(XMLDocumentParserScope);
     public:
         XMLDocumentParserScope(CachedResourceLoader* cachedResourceLoader);
         ~XMLDocumentParserScope();
index 1286c07..4d928c7 100644 (file)
@@ -36,7 +36,8 @@ class HTMLElement;
 class RenderObject;
 class VisibleSelection;
 
-class DeleteButtonController : public Noncopyable {
+class DeleteButtonController {
+    WTF_MAKE_NONCOPYABLE(DeleteButtonController); WTF_MAKE_FAST_ALLOCATED;
 public:
     DeleteButtonController(Frame*);
 
index 24cfa41..f47cb4e 100644 (file)
@@ -62,7 +62,8 @@ enum EFragmentType { EmptyFragment, SingleTextNodeFragment, TreeFragment };
 
 // --- ReplacementFragment helper class
 
-class ReplacementFragment : public Noncopyable {
+class ReplacementFragment {
+    WTF_MAKE_NONCOPYABLE(ReplacementFragment);
 public:
     ReplacementFragment(Document*, DocumentFragment*, bool matchStyle, const VisibleSelection&);
 
index ee52187..3f805d3 100644 (file)
@@ -48,7 +48,8 @@ class VisiblePosition;
 
 enum DirectionalityPolicy { MakeNonDirectionalSelection, MakeDirectionalSelection };
 
-class SelectionController : public Noncopyable {
+class SelectionController {
+    WTF_MAKE_NONCOPYABLE(SelectionController); WTF_MAKE_FAST_ALLOCATED;
 public:
     enum EAlteration { AlterationMove, AlterationExtend };
     enum CursorAlignOnScroll { AlignCursorOnScrollIfNeeded,
index f6215d2..81bb519 100644 (file)
@@ -54,7 +54,8 @@ private:
     int m_length;
 };
 
-class SpellChecker : public Noncopyable {
+class SpellChecker {
+    WTF_MAKE_NONCOPYABLE(SpellChecker);
 public:
     explicit SpellChecker(Frame*, EditorClient*);
     ~SpellChecker();
index 227530f..8b5c691 100644 (file)
@@ -72,7 +72,8 @@ private:
     mutable int m_checkingLength;
 };
 
-class TextCheckingHelper : public Noncopyable {
+class TextCheckingHelper {
+    WTF_MAKE_NONCOPYABLE(TextCheckingHelper);
 public:
     TextCheckingHelper(EditorClient*, PassRefPtr<Range>);
     ~TextCheckingHelper();
index c24bcb2..1fc7606 100644 (file)
@@ -61,7 +61,8 @@ using namespace HTMLNames;
 // Case folding is also done if the CaseInsensitive option is specified.
 // Matches are further filtered if the AtWordStarts option is specified, although some
 // matches inside a word are permitted if TreatMedialCapitalAsWordStart is specified as well.
-class SearchBuffer : public Noncopyable {
+class SearchBuffer {
+    WTF_MAKE_NONCOPYABLE(SearchBuffer);
 public:
     SearchBuffer(const String& target, FindOptions);
     ~SearchBuffer();
index d7aabf7..45205c4 100644 (file)
@@ -54,7 +54,8 @@ public:
     bool start();
     void stop();
 
-    class Task : public Noncopyable {
+    class Task {
+        WTF_MAKE_NONCOPYABLE(Task);
     public:
         virtual ~Task() { }
         virtual void performTask() = 0;
index b779a5f..12a7012 100644 (file)
@@ -45,7 +45,8 @@ class FileSystemCallback;
 class ScriptExecutionContext;
 
 // Keeps per-process information and provides an entry point to open a file system.
-class LocalFileSystem : public Noncopyable {
+class LocalFileSystem {
+    WTF_MAKE_NONCOPYABLE(LocalFileSystem);
 public:
     // Returns a per-process instance of LocalFileSystem.
     // Note that LocalFileSystem::initializeLocalFileSystem must be called before
index 25e6739..020ac49 100644 (file)
@@ -58,7 +58,8 @@ class FileEntrySync;
 
 // A helper template for FileSystemSync implementation.
 template <typename SuccessCallback, typename ObserverType, typename CallbackArg, typename ResultType>
-class SyncCallbackHelper : public Noncopyable {
+class SyncCallbackHelper {
+    WTF_MAKE_NONCOPYABLE(SyncCallbackHelper);
 public:
     typedef SyncCallbackHelper<SuccessCallback, ObserverType, CallbackArg, ResultType> HelperType;
     SyncCallbackHelper(ObserverType* observer = 0)
index e89e32b..12884ea 100644 (file)
@@ -36,7 +36,8 @@ class BackForwardList;
 class HistoryItem;
 class Page;
 
-class BackForwardController : public Noncopyable {
+class BackForwardController {
+    WTF_MAKE_NONCOPYABLE(BackForwardController); WTF_MAKE_FAST_ALLOCATED;
 public:
     BackForwardController(Page*, PassRefPtr<BackForwardList>);
     ~BackForwardController();
index 71ae5ad..912bd65 100644 (file)
@@ -39,7 +39,8 @@ namespace WebCore {
     class HistoryItem;
     class Page;
     
-    class PageCache : public Noncopyable {
+    class PageCache {
+        WTF_MAKE_NONCOPYABLE(PageCache); WTF_MAKE_FAST_ALLOCATED;
     public:
         friend PageCache* pageCache();
         
index df1d1fa..8e4a066 100644 (file)
@@ -29,7 +29,9 @@ namespace WebCore {
 
 class Element;
 
-struct CollectionCache : FastAllocBase {
+struct CollectionCache {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     CollectionCache();
     CollectionCache(const CollectionCache&);
     CollectionCache& operator=(const CollectionCache& other)
index 2b711b4..8f6fd4e 100644 (file)
@@ -35,6 +35,7 @@
 namespace WebCore {
 
 class DOMSettableTokenList : public DOMTokenList, public RefCounted<DOMSettableTokenList> {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassRefPtr<DOMSettableTokenList> create()
     {
index 5df2ede..0b75b66 100644 (file)
 
 #include "ExceptionCode.h"
 #include <wtf/text/AtomicString.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
 class Element;
 
-class DOMTokenList : public Noncopyable {
+class DOMTokenList {
+    WTF_MAKE_NONCOPYABLE(DOMTokenList); WTF_MAKE_FAST_ALLOCATED;
 public:
+    DOMTokenList() { }
     virtual ~DOMTokenList() {};
 
     virtual void ref() = 0;
index 50de710..3bf22a4 100644 (file)
 #define HTMLParserQuirks_h
 
 #include <wtf/Forward.h>
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
 class Node;
 
-class HTMLParserQuirks : public Noncopyable {
+class HTMLParserQuirks {
+    WTF_MAKE_NONCOPYABLE(HTMLParserQuirks);
 public:
     HTMLParserQuirks() { }
     virtual ~HTMLParserQuirks() { }
index ea4541f..e6ceb96 100644 (file)
@@ -33,6 +33,7 @@
 #define InputType_h
 
 #include <wtf/Forward.h>
+#include <wtf/FastAllocBase.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/RefPtr.h>
 #include <wtf/Vector.h>
@@ -56,17 +57,18 @@ class WheelEvent;
 typedef int ExceptionCode;
 
 struct ClickHandlingState {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
     bool checked;
     bool indeterminate;
     RefPtr<HTMLInputElement> checkedRadioButton;
-
-    WTF_MAKE_FAST_ALLOCATED
 };
 
 // An InputType object represents the type-specific part of an HTMLInputElement.
 // Do not expose instances of InputType and classes derived from it to classes
 // other than HTMLInputElement.
-class InputType : public Noncopyable {
+class InputType {
+    WTF_MAKE_NONCOPYABLE(InputType); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<InputType> create(HTMLInputElement*, const String&);
     static PassOwnPtr<InputType> createText(HTMLInputElement*);
index ce044ea..2fa1393 100644 (file)
@@ -28,7 +28,8 @@ namespace WebCore {
 
 class HTMLInputElement;
 
-class StepRange : public Noncopyable {
+class StepRange {
+    WTF_MAKE_NONCOPYABLE(StepRange);
 public:
     bool hasStep;
     double step;
index 5fa1f96..7cd0cbb 100644 (file)
@@ -42,7 +42,8 @@ namespace WebCore {
 class FormAssociatedElement;
 class HTMLElement;
 
-class ValidationMessage : public Noncopyable {
+class ValidationMessage {
+    WTF_MAKE_NONCOPYABLE(ValidationMessage);
 public:
     static PassOwnPtr<ValidationMessage> create(FormAssociatedElement*);
     ~ValidationMessage();
index e140c49..4a96488 100644 (file)
@@ -29,7 +29,8 @@
 
 namespace WebCore {
 
-class ValidityState : public Noncopyable {
+class ValidityState {
+    WTF_MAKE_NONCOPYABLE(ValidityState); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<ValidityState> create(FormAssociatedElement* control)
     {
index a25e8a1..a143596 100644 (file)
@@ -41,7 +41,8 @@ class HTMLVideoElement;
 class KURL;
 class WebGLObject;
 
-class CanvasRenderingContext : public Noncopyable {
+class CanvasRenderingContext {
+    WTF_MAKE_NONCOPYABLE(CanvasRenderingContext); WTF_MAKE_FAST_ALLOCATED;
 public:
     CanvasRenderingContext(HTMLCanvasElement*);
     virtual ~CanvasRenderingContext() { }
index 7ac282f..fae95a1 100644 (file)
@@ -35,7 +35,8 @@ namespace WebCore {
 class Document;
 class HTMLToken;
 
-class CSSPreloadScanner : public Noncopyable {
+class CSSPreloadScanner {
+    WTF_MAKE_NONCOPYABLE(CSSPreloadScanner);
 public:
     CSSPreloadScanner(Document*);
 
index 8b09bf5..5a4a65d 100644 (file)
@@ -40,7 +40,8 @@ class AtomicHTMLToken;
 class Document;
 class Element;
 
-class HTMLConstructionSite : public Noncopyable {
+class HTMLConstructionSite {
+    WTF_MAKE_NONCOPYABLE(HTMLConstructionSite);
 public:
     HTMLConstructionSite(Document*, FragmentScriptingPermission, bool isParsingFragment);
     ~HTMLConstructionSite();
@@ -89,7 +90,8 @@ public:
     HTMLFormElement* form() const { return m_form.get(); }
     PassRefPtr<HTMLFormElement> takeForm();
 
-    class RedirectToFosterParentGuard : public Noncopyable {
+    class RedirectToFosterParentGuard {
+        WTF_MAKE_NONCOPYABLE(RedirectToFosterParentGuard);
     public:
         RedirectToFosterParentGuard(HTMLConstructionSite& tree)
             : m_tree(tree)
index 80ca727..f925269 100644 (file)
@@ -50,6 +50,7 @@ class ScriptController;
 class ScriptSourceCode;
 
 class HTMLDocumentParser :  public ScriptableDocumentParser, HTMLScriptRunnerHost, CachedResourceClient {
+    WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassRefPtr<HTMLDocumentParser> create(HTMLDocument* document, bool reportErrors)
     {
index 8a8e160..ad8b941 100644 (file)
@@ -39,12 +39,14 @@ class QualifiedName;
 
 // NOTE: The HTML5 spec uses a backwards (grows downward) stack.  We're using
 // more standard (grows upwards) stack terminology here.
-class HTMLElementStack : public Noncopyable {
+class HTMLElementStack {
+    WTF_MAKE_NONCOPYABLE(HTMLElementStack); WTF_MAKE_FAST_ALLOCATED;
 public:
     HTMLElementStack();
     ~HTMLElementStack();
 
-    class ElementRecord : public Noncopyable {
+    class ElementRecord {
+        WTF_MAKE_NONCOPYABLE(ElementRecord);
     public:
         ~ElementRecord(); // Public for ~PassOwnPtr()
     
index aca05bb..f75fa50 100644 (file)
@@ -35,7 +35,8 @@ namespace WebCore {
 class Element;
 
 // This may end up merged into HTMLElementStack.
-class HTMLFormattingElementList : public Noncopyable {
+class HTMLFormattingElementList {
+    WTF_MAKE_NONCOPYABLE(HTMLFormattingElementList);
 public:
     HTMLFormattingElementList();
     ~HTMLFormattingElementList();
index 1bfbaf9..d95ec31 100644 (file)
@@ -47,7 +47,8 @@ namespace WebCore {
 // m_last is a pointer to the last of the afterInsertionPoint strings.
 // The network adds data at the end of the InputStream, which appends
 // them to the "last" string.
-class HTMLInputStream : public Noncopyable {
+class HTMLInputStream {
+    WTF_MAKE_NONCOPYABLE(HTMLInputStream);
 public:
     HTMLInputStream()
         : m_last(&m_first)
@@ -129,7 +130,8 @@ private:
     SegmentedString* m_last;
 };
 
-class InsertionPointRecord : public Noncopyable {
+class InsertionPointRecord {
+    WTF_MAKE_NONCOPYABLE(InsertionPointRecord);
 public:
     explicit InsertionPointRecord(HTMLInputStream& inputStream)
         : m_inputStream(&inputStream)
index c3136f5..45fbaf7 100644 (file)
@@ -36,7 +36,8 @@ namespace WebCore {
 class HTMLTokenizer;
 class TextCodec;
 
-class HTMLMetaCharsetParser : public Noncopyable {
+class HTMLMetaCharsetParser {
+    WTF_MAKE_NONCOPYABLE(HTMLMetaCharsetParser);
 public:
     static PassOwnPtr<HTMLMetaCharsetParser> create() { return adoptPtr(new HTMLMetaCharsetParser()); }
 
index 3a20b2b..c415c62 100644 (file)
 
 #include "Timer.h"
 #include <wtf/CurrentTime.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/PassOwnPtr.h>
 
 namespace WebCore {
 
 class HTMLDocumentParser;
 
-class HTMLParserScheduler :  public Noncopyable {
+class HTMLParserScheduler {
+    WTF_MAKE_NONCOPYABLE(HTMLParserScheduler); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<HTMLParserScheduler> create(HTMLDocumentParser* parser)
     {
index 94a90e6..bed77fe 100644 (file)
@@ -30,7 +30,6 @@
 #include "CSSPreloadScanner.h"
 #include "HTMLToken.h"
 #include "SegmentedString.h"
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
@@ -39,7 +38,8 @@ class HTMLToken;
 class HTMLTokenizer;
 class SegmentedString;
 
-class HTMLPreloadScanner : public Noncopyable {
+class HTMLPreloadScanner {
+    WTF_MAKE_NONCOPYABLE(HTMLPreloadScanner); WTF_MAKE_FAST_ALLOCATED;
 public:
     HTMLPreloadScanner(Document*);
 
index 6cf74d8..986f7bd 100644 (file)
@@ -29,7 +29,6 @@
 #include "PendingScript.h"
 #include <wtf/Deque.h>
 #include <wtf/text/TextPosition.h>
-#include <wtf/Noncopyable.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
@@ -42,7 +41,8 @@ class Frame;
 class HTMLScriptRunnerHost;
 class ScriptSourceCode;
 
-class HTMLScriptRunner : public Noncopyable {
+class HTMLScriptRunner {
+    WTF_MAKE_NONCOPYABLE(HTMLScriptRunner); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<HTMLScriptRunner> create(Document* document, HTMLScriptRunnerHost* host)
     {
index 42cddb8..1cbc151 100644 (file)
 #define HTMLToken_h
 
 #include "NamedNodeMap.h"
-#include <wtf/Noncopyable.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class HTMLToken : public Noncopyable {
+class HTMLToken {
+    WTF_MAKE_NONCOPYABLE(HTMLToken); WTF_MAKE_FAST_ALLOCATED;
 public:
     enum Type {
         Uninitialized,
@@ -313,7 +313,8 @@ private:
     // want to end up with a cleaner interface between the two classes.
     friend class AtomicHTMLToken;
 
-    class DoctypeData : public Noncopyable {
+    class DoctypeData {
+        WTF_MAKE_NONCOPYABLE(DoctypeData);
     public:
         DoctypeData()
             : m_hasPublicIdentifier(false)
@@ -352,7 +353,8 @@ private:
 
 // FIXME: This class should eventually be named HTMLToken once we move the
 // exiting HTMLToken to be internal to the HTMLTokenizer.
-class AtomicHTMLToken : public Noncopyable {
+class AtomicHTMLToken {
+    WTF_MAKE_NONCOPYABLE(AtomicHTMLToken);
 public:
     AtomicHTMLToken(HTMLToken& token)
         : m_type(token.type())
index f16b049..fa45cb2 100644 (file)
@@ -39,7 +39,8 @@ class Element;
 class Frame;
 class HTMLToken;
 
-class HTMLTokenizer : public Noncopyable {
+class HTMLTokenizer {
+    WTF_MAKE_NONCOPYABLE(HTMLTokenizer); WTF_MAKE_FAST_ALLOCATED;
 public:
     enum State {
         DataState,
@@ -172,7 +173,8 @@ public:
 
 private:
     // http://www.whatwg.org/specs/web-apps/current-work/#preprocessing-the-input-stream
-    class InputStreamPreprocessor : public Noncopyable {
+    class InputStreamPreprocessor {
+        WTF_MAKE_NONCOPYABLE(InputStreamPreprocessor);
     public:
         InputStreamPreprocessor(HTMLTokenizer* tokenizer)
             : m_tokenizer(tokenizer)
index 02713e5..97cee13 100644 (file)
@@ -241,7 +241,8 @@ HTMLFormElement* closestFormAncestor(Element* element)
 
 } // namespace
 
-class HTMLTreeBuilder::ExternalCharacterTokenBuffer : public Noncopyable {
+class HTMLTreeBuilder::ExternalCharacterTokenBuffer {
+    WTF_MAKE_NONCOPYABLE(ExternalCharacterTokenBuffer);
 public:
     explicit ExternalCharacterTokenBuffer(AtomicHTMLToken& token)
         : m_current(token.characters().data())
@@ -2342,7 +2343,8 @@ void HTMLTreeBuilder::reprocessEndTag(AtomicHTMLToken& token)
     processEndTag(token);
 }
 
-class HTMLTreeBuilder::FakeInsertionMode : public Noncopyable {
+class HTMLTreeBuilder::FakeInsertionMode {
+    WTF_MAKE_NONCOPYABLE(FakeInsertionMode);
 public:
     FakeInsertionMode(HTMLTreeBuilder* treeBuilder, InsertionMode mode)
         : m_treeBuilder(treeBuilder)
index 17b77b7..309ac6f 100644 (file)
@@ -51,7 +51,8 @@ class HTMLDocument;
 class Node;
 class HTMLDocumentParser;
 
-class HTMLTreeBuilder : public Noncopyable {
+class HTMLTreeBuilder {
+    WTF_MAKE_NONCOPYABLE(HTMLTreeBuilder); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<HTMLTreeBuilder> create(HTMLDocumentParser* parser, HTMLDocument* document, bool reportErrors, bool usePreHTML5ParserQuirks)
     {
@@ -204,7 +205,8 @@ private:
     void processForeignContentUsingInBodyModeAndResetMode(AtomicHTMLToken& token);
     void resetForeignInsertionMode();
 
-    class FragmentParsingContext : public Noncopyable {
+    class FragmentParsingContext {
+        WTF_MAKE_NONCOPYABLE(FragmentParsingContext);
     public:
         FragmentParsingContext();
         FragmentParsingContext(DocumentFragment*, Element* contextElement, FragmentScriptingPermission);
index c597876..8155635 100644 (file)
@@ -28,7 +28,8 @@
 
 namespace WebCore {
 
-class NestingLevelIncrementer : public Noncopyable {
+class NestingLevelIncrementer {
+    WTF_MAKE_NONCOPYABLE(NestingLevelIncrementer);
 public:
     explicit NestingLevelIncrementer(unsigned& nestingLevel)
         : m_nestingLevel(&nestingLevel)
index 310aa8e..7c3348b 100644 (file)
@@ -46,7 +46,8 @@ class ScriptCallFrame;
 class ScriptCallStack;
 class ScriptValue;
 
-class ConsoleMessage : public Noncopyable {
+class ConsoleMessage {
+    WTF_MAKE_NONCOPYABLE(ConsoleMessage); WTF_MAKE_FAST_ALLOCATED;
 public:
     ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, unsigned li, const String& u);
     ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, PassRefPtr<ScriptArguments>, PassRefPtr<ScriptCallStack>);
index 3d9e494..ac0acbf 100644 (file)
@@ -41,7 +41,8 @@ class InspectorObject;
 class InspectorValue;
 class ResourceResponse;
 
-class InspectorApplicationCacheAgent : public Noncopyable {
+class InspectorApplicationCacheAgent {
+    WTF_MAKE_NONCOPYABLE(InspectorApplicationCacheAgent); WTF_MAKE_FAST_ALLOCATED;
 public:
     InspectorApplicationCacheAgent(InspectorController* inspectorController, InspectorFrontend* frontend);
     ~InspectorApplicationCacheAgent() { }
index 537bda1..6af31e8 100644 (file)
@@ -48,7 +48,8 @@ class InspectorController;
 class InspectorObject;
 class Node;
 
-class InspectorBrowserDebuggerAgent : public Noncopyable {
+class InspectorBrowserDebuggerAgent {
+    WTF_MAKE_NONCOPYABLE(InspectorBrowserDebuggerAgent);
 public:
     static PassOwnPtr<InspectorBrowserDebuggerAgent> create(InspectorController* inspectorController)
     {
index 3a05eec..411f709 100644 (file)
@@ -46,7 +46,8 @@ class ScriptArguments;
 class ScriptCallStack;
 class ScriptProfile;
 
-class InspectorConsoleAgent : public Noncopyable {
+class InspectorConsoleAgent {
+    WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent);
 public:
     InspectorConsoleAgent(InspectorController*);
     ~InspectorConsoleAgent();
index 7ff88f3..b450f5f 100644 (file)
@@ -105,7 +105,8 @@ class WebSocketHandshakeRequest;
 class WebSocketHandshakeResponse;
 #endif
 
-class InspectorController : public Noncopyable {
+class InspectorController {
+    WTF_MAKE_NONCOPYABLE(InspectorController); WTF_MAKE_FAST_ALLOCATED;
 public:
     static const char* const ConsolePanel;
     static const char* const ElementsPanel;
index 98ac1f9..4cb9f9c 100644 (file)
@@ -53,7 +53,8 @@ enum DebuggerEventType {
     NativeBreakpointDebuggerEventType
 };
 
-class InspectorDebuggerAgent : public ScriptDebugListener, public Noncopyable {
+class InspectorDebuggerAgent : public ScriptDebugListener {
+    WTF_MAKE_NONCOPYABLE(InspectorDebuggerAgent); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<InspectorDebuggerAgent> create(InspectorController*, InspectorFrontend*);
     virtual ~InspectorDebuggerAgent();
index 9dcaa5a..19f6ad1 100644 (file)
@@ -41,7 +41,8 @@ class InspectorController;
 class InspectorFrontendHost;
 class Page;
 
-class InspectorFrontendClientLocal : public InspectorFrontendClient, public Noncopyable {
+class InspectorFrontendClientLocal : public InspectorFrontendClient {
+    WTF_MAKE_NONCOPYABLE(InspectorFrontendClientLocal); WTF_MAKE_FAST_ALLOCATED;
 public:
     InspectorFrontendClientLocal(InspectorController*, Page*);
     virtual ~InspectorFrontendClientLocal();
index 7806bfb..436ae51 100644 (file)
@@ -47,7 +47,8 @@ class InspectorObject;
 class ScriptHeapSnapshot;
 class ScriptProfile;
 
-class InspectorProfilerAgent : public Noncopyable {
+class InspectorProfilerAgent {
+    WTF_MAKE_NONCOPYABLE(InspectorProfilerAgent); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<InspectorProfilerAgent> create(InspectorController*);
     virtual ~InspectorProfilerAgent();
index 3f1be42..3ac2eed 100644 (file)
@@ -46,7 +46,8 @@ class InjectedScriptHost;
 class InspectorObject;
 class InspectorValue;
 
-class InspectorRuntimeAgent : public Noncopyable {
+class InspectorRuntimeAgent {
+    WTF_MAKE_NONCOPYABLE(InspectorRuntimeAgent);
 public:
     static PassOwnPtr<InspectorRuntimeAgent> create(InjectedScriptHost* injectedScriptHost)
     {
index 33e2737..cae5aad 100644 (file)
@@ -70,7 +70,8 @@ enum TimelineRecordType {
     ScheduleResourceRequestTimelineRecordType = 20
 };
 
-class InspectorTimelineAgent : ScriptGCEventListener, public Noncopyable {
+class InspectorTimelineAgent : ScriptGCEventListener {
+    WTF_MAKE_NONCOPYABLE(InspectorTimelineAgent); WTF_MAKE_FAST_ALLOCATED;
 public:
     InspectorTimelineAgent(InspectorFrontend* frontend);
     ~InspectorTimelineAgent();
index 1016aed..ddd5070 100644 (file)
@@ -38,7 +38,8 @@ namespace WebCore {
     class HTTPHeaderMap;
     class ResourceResponse;
 
-    class CrossOriginPreflightResultCacheItem : public Noncopyable {
+    class CrossOriginPreflightResultCacheItem {
+        WTF_MAKE_NONCOPYABLE(CrossOriginPreflightResultCacheItem); WTF_MAKE_FAST_ALLOCATED;
     public:
         CrossOriginPreflightResultCacheItem(bool credentials)
             : m_absoluteExpiryTime(0)
@@ -63,7 +64,8 @@ namespace WebCore {
         HeadersSet m_headers;
     };
 
-    class CrossOriginPreflightResultCache : public Noncopyable {
+    class CrossOriginPreflightResultCache {
+        WTF_MAKE_NONCOPYABLE(CrossOriginPreflightResultCache); WTF_MAKE_FAST_ALLOCATED;
     public:
         static CrossOriginPreflightResultCache& shared();
 
index ebf3a25..3a3cc64 100644 (file)
@@ -47,6 +47,7 @@ namespace WebCore {
     class ThreadableLoaderClient;
 
     class DocumentThreadableLoader : public RefCounted<DocumentThreadableLoader>, public ThreadableLoader, private SubresourceLoaderClient  {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
         static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&);
index 5fb3dc1..fb93606 100644 (file)
@@ -39,7 +39,8 @@ class Frame;
 class SecurityOrigin;
 class TextResourceDecoder;
 
-class DocumentWriter : public Noncopyable {
+class DocumentWriter {
+    WTF_MAKE_NONCOPYABLE(DocumentWriter);
 public:
     DocumentWriter(Frame*);
 
index e4cefc5..f670024 100644 (file)
@@ -214,8 +214,10 @@ public:
 #endif
 };
 
-class EmptyFrameLoaderClient : public FrameLoaderClient, public Noncopyable {
+class EmptyFrameLoaderClient : public FrameLoaderClient {
+    WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
 public:
+    EmptyFrameLoaderClient() { }
     virtual ~EmptyFrameLoaderClient() {  }
     virtual void frameLoaderDestroyed() { }
 
@@ -387,8 +389,10 @@ public:
     virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() { return PassRefPtr<FrameNetworkingContext>(); }
 };
 
-class EmptyEditorClient : public EditorClient, public Noncopyable {
+class EmptyEditorClient : public EditorClient {
+    WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
 public:
+    EmptyEditorClient() { }
     virtual ~EmptyEditorClient() { }
     virtual void pageDestroyed() { }
 
@@ -501,8 +505,10 @@ public:
 };
 
 #if ENABLE(CONTEXT_MENUS)
-class EmptyContextMenuClient : public ContextMenuClient, public Noncopyable {
+class EmptyContextMenuClient : public ContextMenuClient {
+    WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
 public:
+    EmptyContextMenuClient() { }
     virtual ~EmptyContextMenuClient() {  }
     virtual void contextMenuDestroyed() { }
 
@@ -528,8 +534,10 @@ public:
 #endif // ENABLE(CONTEXT_MENUS)
 
 #if ENABLE(DRAG_SUPPORT)
-class EmptyDragClient : public DragClient, public Noncopyable {
+class EmptyDragClient : public DragClient {
+    WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
 public:
+    EmptyDragClient() { }
     virtual ~EmptyDragClient() {}
     virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
     virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { }
@@ -541,8 +549,10 @@ public:
 };
 #endif // ENABLE(DRAG_SUPPORT)
 
-class EmptyInspectorClient : public InspectorClient, public Noncopyable {
+class EmptyInspectorClient : public InspectorClient {
+    WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
 public:
+    EmptyInspectorClient() { }
     virtual ~EmptyInspectorClient() { }
 
     virtual void inspectorDestroyed() { }
index d724835..7f58f91 100644 (file)
@@ -47,7 +47,8 @@ class FormSubmission : public RefCounted<FormSubmission> {
 public:
     enum Method { GetMethod, PostMethod };
 
-    class Attributes : public Noncopyable {
+    class Attributes {
+        WTF_MAKE_NONCOPYABLE(Attributes);
     public:
         Attributes()
             : m_method(GetMethod)
index 7ff5dbd..af97fb3 100644 (file)
@@ -86,7 +86,8 @@ struct WindowFeatures;
 
 bool isBackForwardLoadType(FrameLoadType);
 
-class FrameLoader : public Noncopyable {
+class FrameLoader {
+    WTF_MAKE_NONCOPYABLE(FrameLoader);
 public:
     FrameLoader(Frame*, FrameLoaderClient*);
     ~FrameLoader();
index c3408c2..fe37ece 100644 (file)
@@ -35,7 +35,8 @@ namespace WebCore {
 
 // Encapsulates a state machine for FrameLoader. Note that this is different from FrameState,
 // which stores the state of the current load that FrameLoader is executing.
-class FrameLoaderStateMachine : public Noncopyable {
+class FrameLoaderStateMachine {
+    WTF_MAKE_NONCOPYABLE(FrameLoaderStateMachine);
 public:
     FrameLoaderStateMachine();
 
index 17f80eb..061f235 100644 (file)
@@ -41,7 +41,8 @@ class Frame;
 class HistoryItem;
 class SerializedScriptValue;
 
-class HistoryController : public Noncopyable {
+class HistoryController {
+    WTF_MAKE_NONCOPYABLE(HistoryController);
 public:
     enum HistoryUpdateType { UpdateAll, UpdateAllExceptBackForwardList };
 
index a77e8c0..069b40e 100644 (file)
@@ -57,7 +57,8 @@ template<> struct ValueCheck<WebCore::ImageLoader*> {
 
 namespace WebCore {
 
-class ImageEventSender : public Noncopyable {
+class ImageEventSender {
+    WTF_MAKE_NONCOPYABLE(ImageEventSender); WTF_MAKE_FAST_ALLOCATED;
 public:
     ImageEventSender(const AtomicString& eventType);
 
index 175219c..d51575b 100644 (file)
@@ -53,7 +53,8 @@ namespace WebCore {
 
 unsigned NavigationDisablerForBeforeUnload::s_navigationDisableCount = 0;
 
-class ScheduledNavigation : public Noncopyable {
+class ScheduledNavigation {
+    WTF_MAKE_NONCOPYABLE(ScheduledNavigation); WTF_MAKE_FAST_ALLOCATED;
 public:
     ScheduledNavigation(double delay, bool lockHistory, bool lockBackForwardList, bool wasDuringLoad, bool isLocationChange)
         : m_delay(delay)
index 3a076fb..5988b60 100644 (file)
@@ -50,7 +50,8 @@ class ResourceResponse;
 // to allow the load to live long enough to ensure the message was actually sent.
 // Therefore, as soon as a callback is received from the ResourceHandle, this class 
 // will cancel the load and delete itself.
-class PingLoader : private ResourceHandleClient, public Noncopyable {
+class PingLoader : private ResourceHandleClient {
+    WTF_MAKE_NONCOPYABLE(PingLoader); WTF_MAKE_FAST_ALLOCATED;
 public:
     static void loadImage(Frame*, const KURL& url);
     static void sendPing(Frame*, const KURL& pingURL, const KURL& destinationURL);
index 541729c..3118dae 100644 (file)
@@ -45,7 +45,8 @@ class NavigationAction;
 class ResourceError;
 class ResourceResponse;
 
-class PolicyChecker : public Noncopyable {
+class PolicyChecker {
+    WTF_MAKE_NONCOPYABLE(PolicyChecker);
 public:
     PolicyChecker(Frame*);
 
index cd15433..65dd1c5 100644 (file)
@@ -50,7 +50,9 @@ static const double finalProgressValue = 0.9; // 1.0 - initialProgressValue
 
 static const int progressItemDefaultEstimatedLength = 1024 * 16;
 
-struct ProgressItem : Noncopyable {
+struct ProgressItem {
+    WTF_MAKE_NONCOPYABLE(ProgressItem); WTF_MAKE_FAST_ALLOCATED;
+public:
     ProgressItem(long long length) 
         : bytesReceived(0)
         , estimatedLength(length) { }
index 5d5b6b2..ea5f7f9 100644 (file)
@@ -36,7 +36,8 @@ class Frame;
 class ResourceResponse;
 struct ProgressItem;
 
-class ProgressTracker : public Noncopyable {
+class ProgressTracker {
+    WTF_MAKE_NONCOPYABLE(ProgressTracker); WTF_MAKE_FAST_ALLOCATED;
 public:
     ProgressTracker();
     ~ProgressTracker();
index 2f10856..a6d92fb 100644 (file)
@@ -43,7 +43,8 @@ class ResourceLoader;
 class ResourceResponse;
 class ResourceRequest;
 
-class ResourceLoadNotifier : public Noncopyable {
+class ResourceLoadNotifier {
+    WTF_MAKE_NONCOPYABLE(ResourceLoadNotifier);
 public:
     ResourceLoadNotifier(Frame*);
 
index 163b67e..f2e627f 100644 (file)
@@ -44,7 +44,8 @@ class ResourceRequest;
 class SubresourceLoader;
 class SubresourceLoaderClient;
 
-class ResourceLoadScheduler : public Noncopyable {
+class ResourceLoadScheduler {
+    WTF_MAKE_NONCOPYABLE(ResourceLoadScheduler);
 public:
     friend ResourceLoadScheduler* resourceLoadScheduler();
 
@@ -69,7 +70,8 @@ private:
     void scheduleServePendingRequests();
     void requestTimerFired(Timer<ResourceLoadScheduler>*);
 
-    class HostInformation : public Noncopyable {
+    class HostInformation {
+        WTF_MAKE_NONCOPYABLE(HostInformation);
     public:
         HostInformation(const String&, unsigned);
         ~HostInformation();
index a573045..ba63a5c 100644 (file)
@@ -54,7 +54,8 @@ class Node;
 class Widget;
 
 // This is a slight misnomer. It handles the higher level logic of loading both subframes and plugins.
-class SubframeLoader : public Noncopyable {
+class SubframeLoader {
+    WTF_MAKE_NONCOPYABLE(SubframeLoader);
 public:
     SubframeLoader(Frame*);
 
index f41a774..f574c94 100644 (file)
@@ -65,7 +65,8 @@ namespace WebCore {
 
     // Useful for doing loader operations from any thread (not threadsafe, 
     // just able to run on threads other than the main thread).
-    class ThreadableLoader : public Noncopyable {
+    class ThreadableLoader {
+        WTF_MAKE_NONCOPYABLE(ThreadableLoader);
     public:
         static void loadResourceSynchronously(ScriptExecutionContext*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
         static PassRefPtr<ThreadableLoader> create(ScriptExecutionContext*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&);
@@ -75,6 +76,7 @@ namespace WebCore {
         void deref() { derefThreadableLoader(); }
 
     protected:
+        ThreadableLoader() { }
         virtual ~ThreadableLoader() { }
         virtual void refThreadableLoader() = 0;
         virtual void derefThreadableLoader() = 0;
index bcf68be..cea8b0f 100644 (file)
 #ifndef ThreadableLoaderClient_h
 #define ThreadableLoaderClient_h
 
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
     class ResourceError;
     class ResourceResponse;
 
-    class ThreadableLoaderClient : public Noncopyable {
+    class ThreadableLoaderClient {
+        WTF_MAKE_NONCOPYABLE(ThreadableLoaderClient); WTF_MAKE_FAST_ALLOCATED;
     public:
         virtual void didSendData(unsigned long long /*bytesSent*/, unsigned long long /*totalBytesToBeSent*/) { }
 
@@ -51,6 +51,7 @@ namespace WebCore {
         virtual void didReceiveAuthenticationCancellation(const ResourceResponse&) { }
 
     protected:
+        ThreadableLoaderClient() { }
         virtual ~ThreadableLoaderClient() { }
     };
 
index 81da2e0..65cc637 100644 (file)
@@ -54,6 +54,7 @@ namespace WebCore {
     struct CrossThreadResourceRequestData;
 
     class WorkerThreadableLoader : public RefCounted<WorkerThreadableLoader>, public ThreadableLoader {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static void loadResourceSynchronously(WorkerContext*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
         static PassRefPtr<WorkerThreadableLoader> create(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, const ThreadableLoaderOptions& options)
index 2d8b83e..f3a117e 100644 (file)
@@ -53,7 +53,8 @@ enum ApplicationCacheUpdateOption {
     ApplicationCacheUpdateWithoutBrowsingContext
 };
 
-class ApplicationCacheGroup : public Noncopyable, ResourceHandleClient {
+class ApplicationCacheGroup : ResourceHandleClient {
+    WTF_MAKE_NONCOPYABLE(ApplicationCacheGroup); WTF_MAKE_FAST_ALLOCATED;
 public:
     ApplicationCacheGroup(const KURL& manifestURL, bool isCopy = false);    
     ~ApplicationCacheGroup();
index 8ac5357..a1f2841 100644 (file)
@@ -58,7 +58,8 @@ namespace WebCore {
     class ApplicationCacheStorage;
 #endif
 
-    class ApplicationCacheHost : public Noncopyable {
+    class ApplicationCacheHost {
+        WTF_MAKE_NONCOPYABLE(ApplicationCacheHost); WTF_MAKE_FAST_ALLOCATED;
     public:
         // The Status numeric values are specified in the HTML5 spec.
         enum Status {
index 7db34e6..8bfdf13 100644 (file)
@@ -44,7 +44,8 @@ template <class T>
 class StorageIDJournal;
 class SecurityOrigin;
 
-class ApplicationCacheStorage : public Noncopyable {
+class ApplicationCacheStorage {
+    WTF_MAKE_NONCOPYABLE(ApplicationCacheStorage); WTF_MAKE_FAST_ALLOCATED;
 public:
     enum FailureReason {
         OriginQuotaReached,
index 9d630d1..fd2ddbf 100644 (file)
@@ -39,7 +39,8 @@
 
 namespace WebCore {
 
-class ArchiveResourceCollection : public Noncopyable {
+class ArchiveResourceCollection {
+    WTF_MAKE_NONCOPYABLE(ArchiveResourceCollection); WTF_MAKE_FAST_ALLOCATED;
 public:
     ArchiveResourceCollection();
 
index 3600a02..5c8b38f 100644 (file)
@@ -50,7 +50,8 @@ class PurgeableBuffer;
 // A resource that is held in the cache. Classes who want to use this object should derive
 // from CachedResourceClient, to get the function calls in case the requested data has arrived.
 // This class also does the actual communication with the loader to obtain the resource from the network.
-class CachedResource : public Noncopyable {
+class CachedResource {
+    WTF_MAKE_NONCOPYABLE(CachedResource); WTF_MAKE_FAST_ALLOCATED;
     friend class MemoryCache;
     friend class InspectorResource;
     
index 275d331..1c56f13 100644 (file)
@@ -45,8 +45,8 @@ namespace WebCore {
      * inherit from this class and overload one of the 3 functions
      *
      */
-    class CachedResourceClient : public FastAllocBase
-    {
+    class CachedResourceClient {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         virtual ~CachedResourceClient() { }
 
index 34ef700..a540a41 100644 (file)
@@ -49,7 +49,8 @@ class ImageLoader;
 class KURL;
 
 // The CachedResourceLoader manages the loading of scripts/images/stylesheets for a single document.
-class CachedResourceLoader : public Noncopyable {
+class CachedResourceLoader {
+    WTF_MAKE_NONCOPYABLE(CachedResourceLoader); WTF_MAKE_FAST_ALLOCATED;
 friend class ImageLoader;
 
 public:
index e926d7c..dd8b843 100644 (file)
@@ -70,7 +70,8 @@ class KURL;
 // its member variables) are allocated in non-purgeable TC-malloc'd memory so we would see slightly
 // more memory use due to this.
 
-class MemoryCache : public Noncopyable {
+class MemoryCache {
+    WTF_MAKE_NONCOPYABLE(MemoryCache); WTF_MAKE_FAST_ALLOCATED;
 public:
     friend MemoryCache* memoryCache();
 
index 6146aa6..e08dcd4 100644 (file)
@@ -62,8 +62,8 @@ enum IconLoadDecision {
     IconLoadUnknown
 };
 
-class IconDatabase : public Noncopyable {
-
+class IconDatabase {
+    WTF_MAKE_NONCOPYABLE(IconDatabase); WTF_MAKE_FAST_ALLOCATED;
 // *** Main Thread Only ***
 public:
     void setClient(IconDatabaseClient*);
index c210d7d..f97a2a8 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef IconDatabaseClient_h
 #define IconDatabaseClient_h
 
+#include <wtf/FastAllocBase.h>
 #include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
  
 namespace WebCore {
 
-class IconDatabaseClient : public Noncopyable {
+class IconDatabaseClient {
+    WTF_MAKE_NONCOPYABLE(IconDatabaseClient); WTF_MAKE_FAST_ALLOCATED;
 public:
+    IconDatabaseClient() { }
     virtual ~IconDatabaseClient() { }
     virtual bool performImport() { return true; }
     virtual void dispatchDidRemoveAllIcons() { }
index 1ebac48..2985393 100644 (file)
@@ -37,7 +37,8 @@ class Frame;
 class KURL;
 class SharedBuffer;
 
-class IconLoader : private SubresourceLoaderClient, public Noncopyable {
+class IconLoader : private SubresourceLoaderClient {
+    WTF_MAKE_NONCOPYABLE(IconLoader); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<IconLoader> create(Frame*);
     ~IconLoader();
index f7ccb8f..7935dc9 100644 (file)
@@ -51,7 +51,8 @@ public:
     String iconURL;
 };
 
-class PageURLRecord : public Noncopyable {
+class PageURLRecord {
+    WTF_MAKE_NONCOPYABLE(PageURLRecord); WTF_MAKE_FAST_ALLOCATED;
 public:
     PageURLRecord(const String& pageURL);
     ~PageURLRecord();
index f14a302..73131e5 100644 (file)
@@ -59,6 +59,7 @@ namespace WebCore {
     class WorkerContext;
 
     class Notification : public RefCounted<Notification>, public ActiveDOMObject, public ThreadableLoaderClient, public EventTarget {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassRefPtr<Notification> create(const KURL& url, ScriptExecutionContext* context, ExceptionCode& ec, PassRefPtr<NotificationCenter> provider);
         static PassRefPtr<Notification> create(const NotificationContents& contents, ScriptExecutionContext* context, ExceptionCode& ec, PassRefPtr<NotificationCenter> provider);
index ab92796..e6a0a00 100644 (file)
@@ -41,7 +41,8 @@ namespace WebCore {
     class Event;
     class Page;
 
-    class ContextMenuController : public Noncopyable {
+    class ContextMenuController {
+        WTF_MAKE_NONCOPYABLE(ContextMenuController); WTF_MAKE_FAST_ALLOCATED;
     public:
         ContextMenuController(Page*, ContextMenuClient*);
         ~ContextMenuController();
index 10bb5f8..0f176b1 100644 (file)
@@ -47,7 +47,8 @@ namespace WebCore {
     class Range;
     class SelectionController;
     
-    class DragController : public Noncopyable {
+    class DragController {
+        WTF_MAKE_NONCOPYABLE(DragController); WTF_MAKE_FAST_ALLOCATED;
     public:
         DragController(Page*, DragClient*);
         ~DragController();
index 0c18450..d12a56e 100644 (file)
@@ -81,7 +81,8 @@ extern const int GeneralDragHysteresis;
 
 enum HitTestScrollbars { ShouldHitTestScrollbars, DontHitTestScrollbars };
 
-class EventHandler : public Noncopyable {
+class EventHandler {
+    WTF_MAKE_NONCOPYABLE(EventHandler);
 public:
     EventHandler(Frame*);
     ~EventHandler();
@@ -224,7 +225,10 @@ private:
         PerformDragAndDrop
     };
 
-    struct EventHandlerDragState : Noncopyable {
+    struct EventHandlerDragState {
+        WTF_MAKE_NONCOPYABLE(EventHandlerDragState); WTF_MAKE_FAST_ALLOCATED;
+    public:
+        EventHandlerDragState() { }
         RefPtr<Node> m_dragSrc; // element that may be a drag source, for the current mouse gesture
         bool m_dragSrcIsLink;
         bool m_dragSrcIsImage;
index ffed592..10ad6ba 100644 (file)
@@ -51,6 +51,7 @@ namespace WebCore {
     class ThreadableLoader;
 
     class EventSource : public RefCounted<EventSource>, public EventTarget, private ThreadableLoaderClient, public ActiveDOMObject {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
         static PassRefPtr<EventSource> create(const String& url, ScriptExecutionContext*, ExceptionCode&);
         virtual ~EventSource();
index be51c77..50fa2ea 100644 (file)
@@ -40,7 +40,8 @@ class KeyboardEvent;
 class Node;
 class Page;
 
-class FocusController : public Noncopyable {
+class FocusController {
+    WTF_MAKE_NONCOPYABLE(FocusController); WTF_MAKE_FAST_ALLOCATED;
 public:
     FocusController(Page*);
 
index 94b8d16..bac5475 100644 (file)
@@ -26,7 +26,8 @@ namespace WebCore {
 
     class Frame;
 
-    class FrameTree : public Noncopyable {
+    class FrameTree {
+        WTF_MAKE_NONCOPYABLE(FrameTree);
     public:
         FrameTree(Frame* thisFrame, Frame* parentFrame) 
             : m_thisFrame(thisFrame)
index bcc8b9f..e03ef69 100644 (file)
@@ -108,7 +108,10 @@ double FrameView::s_deferredRepaintDelayIncrementDuringLoading = 0;
 // The maximum number of updateWidgets iterations that should be done before returning.
 static const unsigned maxUpdateWidgetsIterations = 2;
 
-struct ScheduledEvent : Noncopyable {
+struct ScheduledEvent {
+    WTF_MAKE_NONCOPYABLE(ScheduledEvent); WTF_MAKE_FAST_ALLOCATED;
+public:
+    ScheduledEvent() { }
     RefPtr<Event> m_event;
     RefPtr<Node> m_eventTarget;
 };
index 7db1951..1a2ce69 100644 (file)
@@ -40,7 +40,8 @@ class GeolocationError;
 class GeolocationPosition;
 class Page;
 
-class GeolocationController : public Noncopyable {
+class GeolocationController {
+    WTF_MAKE_NONCOPYABLE(GeolocationController);
 public:
     GeolocationController(Page*, GeolocationClient*);
     ~GeolocationController();
index fb6f6b5..1bbad2b 100644 (file)
@@ -33,7 +33,8 @@ namespace WebCore {
 
 class PageGroup;
 
-class GroupSettings : public Noncopyable {
+class GroupSettings {
+    WTF_MAKE_NONCOPYABLE(GroupSettings); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<GroupSettings> create()
     {
index 7413bb6..071b142 100644 (file)
@@ -90,12 +90,15 @@ namespace WebCore {
 
     enum FindDirection { FindDirectionForward, FindDirectionBackward };
 
-    class Page : public Noncopyable {
+    class Page {
+        WTF_MAKE_NONCOPYABLE(Page);
     public:
         static void scheduleForcedStyleRecalcForAllPages();
 
         // It is up to the platform to ensure that non-null clients are provided where required.
-        struct PageClients : Noncopyable {
+        struct PageClients {
+            WTF_MAKE_NONCOPYABLE(PageClients); WTF_MAKE_FAST_ALLOCATED;
+        public:
             PageClients();
             ~PageClients();
 
index cc47fba..643c5e6 100644 (file)
@@ -41,7 +41,8 @@ namespace WebCore {
     class Page;
     class StorageNamespace;
 
-    class PageGroup : public Noncopyable {
+    class PageGroup {
+        WTF_MAKE_NONCOPYABLE(PageGroup); WTF_MAKE_FAST_ALLOCATED;
     public:
         PageGroup(const String& name);
         PageGroup(Page*);
index d443ebd..f7956c4 100644 (file)
@@ -28,7 +28,8 @@ namespace WebCore {
     class Frame;
     class Page;
 
-    class PageGroupLoadDeferrer : public Noncopyable {
+    class PageGroupLoadDeferrer {
+        WTF_MAKE_NONCOPYABLE(PageGroupLoadDeferrer);
     public:
         PageGroupLoadDeferrer(Page*, bool deferSelf);
         ~PageGroupLoadDeferrer();
index af8b31e..5b96d19 100644 (file)
@@ -35,7 +35,8 @@ namespace WebCore {
 
 class HaltablePlugin;
 
-class PluginHalter : public Noncopyable {
+class PluginHalter {
+    WTF_MAKE_NONCOPYABLE(PluginHalter); WTF_MAKE_FAST_ALLOCATED;
 public:
     PluginHalter(PluginHalterClient*);
 
index f4630de..420dacc 100644 (file)
@@ -50,7 +50,8 @@ namespace WebCore {
         TextDirectionSubmenuAlwaysIncluded
     };
 
-    class Settings : public Noncopyable {
+    class Settings {
+        WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
     public:
         Settings(Page*);
 
index 270f500..52d6c03 100644 (file)
@@ -36,7 +36,6 @@
 #include "SpeechInputListener.h"
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
-#include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
@@ -48,7 +47,8 @@ class SpeechInputListener;
 // This class connects the input elements requiring speech input with the platform specific
 // speech recognition engine. It provides methods for the input elements to activate speech
 // recognition and methods for the speech recognition engine to return back the results.
-class SpeechInput : public Noncopyable, public SpeechInputListener {
+class SpeechInput : public SpeechInputListener {
+    WTF_MAKE_NONCOPYABLE(SpeechInput);
 public:
     SpeechInput(SpeechInputClient*);
     virtual ~SpeechInput();
index 0652439..0514090 100644 (file)
@@ -35,7 +35,8 @@
 
 namespace WebCore {
 
-class UserScript : public Noncopyable {
+class UserScript {
+    WTF_MAKE_NONCOPYABLE(UserScript); WTF_MAKE_FAST_ALLOCATED;
 public:
     UserScript(const String& source, const KURL& url,
                PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
index fa42e2c..068df1e 100644 (file)
@@ -35,7 +35,8 @@
 
 namespace WebCore {
 
-class UserStyleSheet : public Noncopyable {
+class UserStyleSheet {
+    WTF_MAKE_NONCOPYABLE(UserStyleSheet); WTF_MAKE_FAST_ALLOCATED;
 public:
     UserStyleSheet(const String& source, const KURL& url,
                    PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,