2011-09-11 05:49:36 +00:00
|
|
|
/*
|
2021-03-11 19:27:27 +00:00
|
|
|
* Copyright (C) 2011-2021 Apple Inc. All rights reserved.
|
2011-09-11 05:49:36 +00:00
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
*
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
.: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* ManualTests/NPN_Invoke/Info.plist:
* ManualTests/NPN_Invoke/main.c:
* ManualTests/accessibility/resources/AppletTest.java:
Examples: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* NetscapeCocoaPlugin/MenuHandler.h:
* NetscapeCocoaPlugin/MenuHandler.m:
* NetscapeCocoaPlugin/main.m:
* NetscapeCoreAnimationPlugin/main.m:
* NetscapeInputMethodPlugin/main.m:
PerformanceTests: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* Dromaeo/resources/dromaeo/web/tests/sunspider-3d-raytrace.html:
* Dromaeo/resources/dromaeo/web/tests/sunspider-bitops-bitwise-and.html:
* Dromaeo/resources/dromaeo/web/tests/sunspider-math-cordic.html:
* Dromaeo/resources/dromaeo/web/tests/sunspider-string-tagcloud.html:
* LongSpider/3d-morph.js:
* LongSpider/3d-raytrace.js:
* LongSpider/math-cordic.js:
* LongSpider/string-tagcloud.js:
* Parser/resources/html5-8266.html:
* Parser/resources/html5.html:
PerformanceTests/SunSpider: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* hosted/sunspider.html:
* hosted/versions.html:
* make-hosted:
* resources/TEMPLATE.html:
* resources/driver-TEMPLATE.html:
* resources/results-TEMPLATE.html:
* resources/sunspider-analyze-results.js:
* resources/sunspider-compare-results.js:
* resources/sunspider-standalone-compare.js:
* resources/sunspider-standalone-driver.js:
* sunspider:
* sunspider-compare-results:
* tests/sunspider-0.9.1/3d-morph.js:
* tests/sunspider-0.9.1/3d-raytrace.js:
* tests/sunspider-0.9.1/bitops-bitwise-and.js:
* tests/sunspider-0.9.1/math-cordic.js:
* tests/sunspider-0.9.1/string-tagcloud.js:
* tests/sunspider-0.9/3d-morph.js:
* tests/sunspider-0.9/3d-raytrace.js:
* tests/sunspider-0.9/bitops-bitwise-and.js:
* tests/sunspider-0.9/math-cordic.js:
* tests/sunspider-0.9/string-tagcloud.js:
* tests/sunspider-1.0.1/3d-morph.js:
* tests/sunspider-1.0.1/3d-raytrace.js:
* tests/sunspider-1.0.1/bitops-bitwise-and.js:
* tests/sunspider-1.0.1/math-cordic.js:
* tests/sunspider-1.0.1/string-tagcloud.js:
* tests/sunspider-1.0.2/3d-morph.js:
* tests/sunspider-1.0.2/3d-raytrace.js:
* tests/sunspider-1.0.2/bitops-bitwise-and.js:
* tests/sunspider-1.0.2/math-cordic.js:
* tests/sunspider-1.0.2/string-tagcloud.js:
* tests/sunspider-1.0/3d-morph.js:
* tests/sunspider-1.0/3d-raytrace.js:
* tests/sunspider-1.0/bitops-bitwise-and.js:
* tests/sunspider-1.0/math-cordic.js:
* tests/sunspider-1.0/string-tagcloud.js:
Source/JavaScriptCore: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* API/APICast.h:
* API/JSBase.cpp:
* API/JSBase.h:
* API/JSBasePrivate.h:
* API/JSCallbackConstructor.cpp:
* API/JSCallbackConstructor.h:
* API/JSCallbackFunction.cpp:
* API/JSCallbackFunction.h:
* API/JSCallbackObject.cpp:
* API/JSCallbackObject.h:
* API/JSCallbackObjectFunctions.h:
* API/JSClassRef.cpp:
* API/JSClassRef.h:
* API/JSContextRef.cpp:
* API/JSContextRef.h:
* API/JSContextRefPrivate.h:
* API/JSObjectRef.cpp:
* API/JSObjectRef.h:
* API/JSProfilerPrivate.cpp:
* API/JSProfilerPrivate.h:
* API/JSRetainPtr.h:
* API/JSStringRef.cpp:
* API/JSStringRef.h:
* API/JSStringRefBSTR.cpp:
* API/JSStringRefBSTR.h:
* API/JSStringRefCF.cpp:
* API/JSStringRefCF.h:
* API/JSValueRef.cpp:
* API/JSValueRef.h:
* API/JavaScript.h:
* API/JavaScriptCore.h:
* API/OpaqueJSString.cpp:
* API/OpaqueJSString.h:
* API/tests/JSNode.c:
* API/tests/JSNode.h:
* API/tests/JSNodeList.c:
* API/tests/JSNodeList.h:
* API/tests/Node.c:
* API/tests/Node.h:
* API/tests/NodeList.c:
* API/tests/NodeList.h:
* API/tests/minidom.c:
* API/tests/minidom.js:
* API/tests/testapi.c:
* API/tests/testapi.js:
* DerivedSources.make:
* bindings/ScriptValue.cpp:
* bytecode/CodeBlock.cpp:
* bytecode/CodeBlock.h:
* bytecode/EvalCodeCache.h:
* bytecode/Instruction.h:
* bytecode/JumpTable.cpp:
* bytecode/JumpTable.h:
* bytecode/Opcode.cpp:
* bytecode/Opcode.h:
* bytecode/SamplingTool.cpp:
* bytecode/SamplingTool.h:
* bytecode/SpeculatedType.cpp:
* bytecode/SpeculatedType.h:
* bytecode/ValueProfile.h:
* bytecompiler/BytecodeGenerator.cpp:
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/Label.h:
* bytecompiler/LabelScope.h:
* bytecompiler/RegisterID.h:
* debugger/DebuggerCallFrame.cpp:
* debugger/DebuggerCallFrame.h:
* dfg/DFGDesiredStructureChains.cpp:
* dfg/DFGDesiredStructureChains.h:
* heap/GCActivityCallback.cpp:
* heap/GCActivityCallback.h:
* inspector/ConsoleMessage.cpp:
* inspector/ConsoleMessage.h:
* inspector/IdentifiersFactory.cpp:
* inspector/IdentifiersFactory.h:
* inspector/InjectedScriptManager.cpp:
* inspector/InjectedScriptManager.h:
* inspector/InjectedScriptSource.js:
* inspector/ScriptBreakpoint.h:
* inspector/ScriptDebugListener.h:
* inspector/ScriptDebugServer.cpp:
* inspector/ScriptDebugServer.h:
* inspector/agents/InspectorAgent.cpp:
* inspector/agents/InspectorAgent.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
* inspector/agents/InspectorDebuggerAgent.h:
* interpreter/Interpreter.cpp:
* interpreter/Interpreter.h:
* interpreter/JSStack.cpp:
* interpreter/JSStack.h:
* interpreter/Register.h:
* jit/CompactJITCodeMap.h:
* jit/JITStubs.cpp:
* jit/JITStubs.h:
* jit/JITStubsARM.h:
* jit/JITStubsARMv7.h:
* jit/JITStubsX86.h:
* jit/JITStubsX86_64.h:
* os-win32/stdbool.h:
* parser/SourceCode.h:
* parser/SourceProvider.h:
* profiler/LegacyProfiler.cpp:
* profiler/LegacyProfiler.h:
* profiler/ProfileNode.cpp:
* profiler/ProfileNode.h:
* runtime/ArrayBufferView.cpp:
* runtime/ArrayBufferView.h:
* runtime/BatchedTransitionOptimizer.h:
* runtime/CallData.h:
* runtime/ConstructData.h:
* runtime/DumpContext.cpp:
* runtime/DumpContext.h:
* runtime/ExceptionHelpers.cpp:
* runtime/ExceptionHelpers.h:
* runtime/InitializeThreading.cpp:
* runtime/InitializeThreading.h:
* runtime/IntegralTypedArrayBase.h:
* runtime/IntendedStructureChain.cpp:
* runtime/IntendedStructureChain.h:
* runtime/JSActivation.cpp:
* runtime/JSActivation.h:
* runtime/JSExportMacros.h:
* runtime/JSGlobalObject.cpp:
* runtime/JSNotAnObject.cpp:
* runtime/JSNotAnObject.h:
* runtime/JSPropertyNameIterator.cpp:
* runtime/JSPropertyNameIterator.h:
* runtime/JSSegmentedVariableObject.cpp:
* runtime/JSSegmentedVariableObject.h:
* runtime/JSSymbolTableObject.cpp:
* runtime/JSSymbolTableObject.h:
* runtime/JSTypeInfo.h:
* runtime/JSVariableObject.cpp:
* runtime/JSVariableObject.h:
* runtime/PropertyTable.cpp:
* runtime/PutPropertySlot.h:
* runtime/SamplingCounter.cpp:
* runtime/SamplingCounter.h:
* runtime/Structure.cpp:
* runtime/Structure.h:
* runtime/StructureChain.cpp:
* runtime/StructureChain.h:
* runtime/StructureInlines.h:
* runtime/StructureTransitionTable.h:
* runtime/SymbolTable.cpp:
* runtime/SymbolTable.h:
* runtime/TypedArrayBase.h:
* runtime/TypedArrayType.cpp:
* runtime/TypedArrayType.h:
* runtime/VM.cpp:
* runtime/VM.h:
* yarr/RegularExpression.cpp:
* yarr/RegularExpression.h:
Source/WebCore: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
No new tests because no behavior changes.
* DerivedSources.make:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.h:
* Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.idl:
* Modules/encryptedmedia/MediaKeyMessageEvent.cpp:
* Modules/encryptedmedia/MediaKeyMessageEvent.h:
* Modules/encryptedmedia/MediaKeyMessageEvent.idl:
* Modules/encryptedmedia/MediaKeyNeededEvent.cpp:
* Modules/encryptedmedia/MediaKeyNeededEvent.h:
* Modules/encryptedmedia/MediaKeyNeededEvent.idl:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/encryptedmedia/MediaKeys.idl:
* Modules/geolocation/NavigatorGeolocation.cpp:
* Modules/indexeddb/DOMWindowIndexedDatabase.idl:
* Modules/indexeddb/IDBCallbacks.h:
* Modules/indexeddb/IDBDatabaseException.cpp:
* Modules/indexeddb/IDBDatabaseMetadata.h:
* Modules/indexeddb/IDBEventDispatcher.cpp:
* Modules/indexeddb/IDBEventDispatcher.h:
* Modules/indexeddb/IDBFactory.cpp:
* Modules/indexeddb/IDBFactory.h:
* Modules/indexeddb/IDBFactoryBackendInterface.cpp:
* Modules/indexeddb/IDBFactoryBackendInterface.h:
* Modules/indexeddb/IDBHistograms.h:
* Modules/indexeddb/IDBIndexMetadata.h:
* Modules/indexeddb/IDBObjectStoreMetadata.h:
* Modules/indexeddb/IDBRecordIdentifier.h:
* Modules/indexeddb/IDBRequest.cpp:
* Modules/indexeddb/IDBRequest.h:
* Modules/indexeddb/IDBRequest.idl:
* Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp:
* Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h:
* Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl:
* Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.cpp:
* Modules/indexeddb/leveldb/IDBFactoryBackendLevelDB.h:
* Modules/mediacontrols/MediaControlsHost.cpp:
* Modules/mediacontrols/MediaControlsHost.h:
* Modules/mediacontrols/MediaControlsHost.idl:
* Modules/mediacontrols/mediaControlsApple.css:
* Modules/mediacontrols/mediaControlsiOS.css:
* Modules/mediasource/AudioTrackMediaSource.h:
* Modules/mediasource/AudioTrackMediaSource.idl:
* Modules/mediasource/TextTrackMediaSource.h:
* Modules/mediasource/TextTrackMediaSource.idl:
* Modules/mediasource/VideoTrackMediaSource.h:
* Modules/mediasource/VideoTrackMediaSource.idl:
* Modules/mediastream/AllAudioCapabilities.h:
* Modules/mediastream/AllAudioCapabilities.idl:
* Modules/mediastream/AllVideoCapabilities.h:
* Modules/mediastream/AllVideoCapabilities.idl:
* Modules/mediastream/AudioStreamTrack.cpp:
* Modules/mediastream/AudioStreamTrack.h:
* Modules/mediastream/AudioStreamTrack.idl:
* Modules/mediastream/CapabilityRange.cpp:
* Modules/mediastream/CapabilityRange.h:
* Modules/mediastream/CapabilityRange.idl:
* Modules/mediastream/MediaSourceStates.cpp:
* Modules/mediastream/MediaSourceStates.h:
* Modules/mediastream/MediaSourceStates.idl:
* Modules/mediastream/MediaStreamCapabilities.cpp:
* Modules/mediastream/MediaStreamCapabilities.h:
* Modules/mediastream/MediaStreamCapabilities.idl:
* Modules/mediastream/MediaTrackConstraint.cpp:
* Modules/mediastream/MediaTrackConstraint.h:
* Modules/mediastream/MediaTrackConstraint.idl:
* Modules/mediastream/MediaTrackConstraintSet.cpp:
* Modules/mediastream/MediaTrackConstraintSet.h:
* Modules/mediastream/MediaTrackConstraints.cpp:
* Modules/mediastream/MediaTrackConstraints.h:
* Modules/mediastream/MediaTrackConstraints.idl:
* Modules/mediastream/NavigatorMediaStream.cpp:
* Modules/mediastream/NavigatorUserMediaError.cpp:
* Modules/mediastream/RTCConfiguration.idl:
* Modules/mediastream/RTCIceServer.idl:
* Modules/mediastream/RTCOfferAnswerOptions.cpp:
* Modules/mediastream/RTCOfferAnswerOptions.h:
* Modules/mediastream/VideoStreamTrack.cpp:
* Modules/mediastream/VideoStreamTrack.h:
* Modules/mediastream/VideoStreamTrack.idl:
* Modules/networkinfo/NetworkInfo.cpp:
* Modules/networkinfo/NetworkInfo.h:
* Modules/networkinfo/NetworkInfoConnection.cpp:
* Modules/networkinfo/NetworkInfoConnection.h:
* Modules/networkinfo/NetworkInfoController.cpp:
* Modules/notifications/DOMWindowNotifications.cpp:
* Modules/notifications/DOMWindowNotifications.h:
* Modules/notifications/DOMWindowNotifications.idl:
* Modules/notifications/NotificationController.cpp:
* Modules/notifications/NotificationController.h:
* Modules/notifications/NotificationPermissionCallback.h:
* Modules/notifications/NotificationPermissionCallback.idl:
* Modules/notifications/WorkerGlobalScopeNotifications.cpp:
* Modules/notifications/WorkerGlobalScopeNotifications.h:
* Modules/notifications/WorkerGlobalScopeNotifications.idl:
* Modules/plugins/PluginReplacement.h:
* Modules/plugins/QuickTimePluginReplacement.cpp:
* Modules/plugins/QuickTimePluginReplacement.css:
* Modules/plugins/QuickTimePluginReplacement.h:
* Modules/plugins/QuickTimePluginReplacement.idl:
* Modules/quota/DOMWindowQuota.idl:
* Modules/speech/DOMWindowSpeechSynthesis.h:
* Modules/speech/DOMWindowSpeechSynthesis.idl:
* Modules/speech/SpeechSynthesis.cpp:
* Modules/speech/SpeechSynthesis.h:
* Modules/speech/SpeechSynthesis.idl:
* Modules/speech/SpeechSynthesisEvent.cpp:
* Modules/speech/SpeechSynthesisEvent.h:
* Modules/speech/SpeechSynthesisEvent.idl:
* Modules/speech/SpeechSynthesisUtterance.cpp:
* Modules/speech/SpeechSynthesisUtterance.h:
* Modules/speech/SpeechSynthesisUtterance.idl:
* Modules/speech/SpeechSynthesisVoice.cpp:
* Modules/speech/SpeechSynthesisVoice.h:
* Modules/speech/SpeechSynthesisVoice.idl:
* Modules/webaudio/AudioBuffer.cpp:
* Modules/webaudio/AudioBuffer.h:
* Modules/webaudio/AudioBuffer.idl:
* Modules/webaudio/AudioListener.cpp:
* Modules/webaudio/AudioListener.h:
* Modules/webaudio/AudioListener.idl:
* Modules/webaudio/AudioParam.h:
* Modules/webaudio/AudioParam.idl:
* Modules/webaudio/AudioParamTimeline.h:
* Modules/webaudio/AudioScheduledSourceNode.h:
* Modules/webaudio/ChannelMergerNode.cpp:
* Modules/webaudio/ChannelMergerNode.h:
* Modules/webaudio/ChannelMergerNode.idl:
* Modules/webaudio/MediaStreamAudioSource.cpp:
* Modules/webaudio/MediaStreamAudioSource.h:
* Modules/webaudio/PeriodicWave.cpp:
* Modules/webaudio/PeriodicWave.h:
* Modules/webdatabase/ChangeVersionWrapper.cpp:
* Modules/webdatabase/ChangeVersionWrapper.h:
* Modules/webdatabase/DOMWindowWebDatabase.cpp:
* Modules/webdatabase/DOMWindowWebDatabase.h:
* Modules/webdatabase/DOMWindowWebDatabase.idl:
* Modules/webdatabase/Database.cpp:
* Modules/webdatabase/Database.h:
* Modules/webdatabase/Database.idl:
* Modules/webdatabase/DatabaseAuthorizer.cpp:
* Modules/webdatabase/DatabaseAuthorizer.h:
* Modules/webdatabase/DatabaseBackendBase.cpp:
* Modules/webdatabase/DatabaseBackendBase.h:
* Modules/webdatabase/DatabaseCallback.idl:
* Modules/webdatabase/DatabaseContext.cpp:
* Modules/webdatabase/DatabaseContext.h:
* Modules/webdatabase/DatabaseDetails.h:
* Modules/webdatabase/DatabaseTask.cpp:
* Modules/webdatabase/DatabaseTask.h:
* Modules/webdatabase/DatabaseThread.cpp:
* Modules/webdatabase/DatabaseThread.h:
* Modules/webdatabase/DatabaseTracker.cpp:
* Modules/webdatabase/DatabaseTracker.h:
* Modules/webdatabase/SQLCallbackWrapper.h:
* Modules/webdatabase/SQLError.h:
* Modules/webdatabase/SQLError.idl:
* Modules/webdatabase/SQLException.cpp:
* Modules/webdatabase/SQLResultSet.cpp:
* Modules/webdatabase/SQLResultSet.h:
* Modules/webdatabase/SQLResultSet.idl:
* Modules/webdatabase/SQLResultSetRowList.cpp:
* Modules/webdatabase/SQLResultSetRowList.h:
* Modules/webdatabase/SQLResultSetRowList.idl:
* Modules/webdatabase/SQLStatement.cpp:
* Modules/webdatabase/SQLStatement.h:
* Modules/webdatabase/SQLStatementBackend.cpp:
* Modules/webdatabase/SQLStatementBackend.h:
* Modules/webdatabase/SQLStatementCallback.h:
* Modules/webdatabase/SQLStatementCallback.idl:
* Modules/webdatabase/SQLStatementErrorCallback.h:
* Modules/webdatabase/SQLStatementErrorCallback.idl:
* Modules/webdatabase/SQLStatementSync.cpp:
* Modules/webdatabase/SQLTransaction.cpp:
* Modules/webdatabase/SQLTransaction.h:
* Modules/webdatabase/SQLTransaction.idl:
* Modules/webdatabase/SQLTransactionBackend.cpp:
* Modules/webdatabase/SQLTransactionBackend.h:
* Modules/webdatabase/SQLTransactionCallback.h:
* Modules/webdatabase/SQLTransactionCallback.idl:
* Modules/webdatabase/SQLTransactionErrorCallback.h:
* Modules/webdatabase/SQLTransactionErrorCallback.idl:
* Modules/webdatabase/WorkerGlobalScopeWebDatabase.cpp:
* Modules/webdatabase/WorkerGlobalScopeWebDatabase.h:
* Modules/webdatabase/WorkerGlobalScopeWebDatabase.idl:
* Resources/deleteButton.tiff:
* Resources/deleteButtonPressed.tiff:
* WebCore.vcxproj/MigrateScripts:
* WebCorePrefix.cpp:
* accessibility/AXObjectCache.cpp:
* accessibility/AXObjectCache.h:
* accessibility/AccessibilityARIAGrid.cpp:
* accessibility/AccessibilityARIAGrid.h:
* accessibility/AccessibilityARIAGridCell.cpp:
* accessibility/AccessibilityARIAGridCell.h:
* accessibility/AccessibilityARIAGridRow.cpp:
* accessibility/AccessibilityARIAGridRow.h:
* accessibility/AccessibilityImageMapLink.cpp:
* accessibility/AccessibilityImageMapLink.h:
* accessibility/AccessibilityList.cpp:
* accessibility/AccessibilityList.h:
* accessibility/AccessibilityListBox.cpp:
* accessibility/AccessibilityListBox.h:
* accessibility/AccessibilityListBoxOption.cpp:
* accessibility/AccessibilityListBoxOption.h:
* accessibility/AccessibilityMediaControls.cpp:
* accessibility/AccessibilityMediaControls.h:
* accessibility/AccessibilityNodeObject.cpp:
* accessibility/AccessibilityNodeObject.h:
* accessibility/AccessibilityObject.cpp:
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityRenderObject.cpp:
* accessibility/AccessibilityRenderObject.h:
* accessibility/AccessibilitySVGRoot.cpp:
* accessibility/AccessibilitySVGRoot.h:
* accessibility/AccessibilityScrollbar.cpp:
* accessibility/AccessibilityScrollbar.h:
* accessibility/AccessibilitySlider.cpp:
* accessibility/AccessibilitySlider.h:
* accessibility/AccessibilityTable.cpp:
* accessibility/AccessibilityTable.h:
* accessibility/AccessibilityTableCell.cpp:
* accessibility/AccessibilityTableCell.h:
* accessibility/AccessibilityTableColumn.cpp:
* accessibility/AccessibilityTableColumn.h:
* accessibility/AccessibilityTableHeaderContainer.cpp:
* accessibility/AccessibilityTableHeaderContainer.h:
* accessibility/AccessibilityTableRow.cpp:
* accessibility/AccessibilityTableRow.h:
* accessibility/ios/AXObjectCacheIOS.mm:
* accessibility/ios/AccessibilityObjectIOS.mm:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
* accessibility/mac/AXObjectCacheMac.mm:
* accessibility/mac/AccessibilityObjectMac.mm:
* accessibility/mac/WebAccessibilityObjectWrapperBase.h:
* accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
* accessibility/mac/WebAccessibilityObjectWrapperMac.h:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
* bindings/gobject/WebKitDOMEventTarget.cpp:
* bindings/gobject/WebKitDOMHTMLPrivate.cpp:
* bindings/gobject/WebKitDOMHTMLPrivate.h:
* bindings/js/Dictionary.cpp:
* bindings/js/GCController.cpp:
* bindings/js/GCController.h:
* bindings/js/JSAttrCustom.cpp:
* bindings/js/JSAudioTrackCustom.cpp:
* bindings/js/JSAudioTrackListCustom.cpp:
* bindings/js/JSCSSRuleCustom.cpp:
* bindings/js/JSCSSRuleCustom.h:
* bindings/js/JSCSSRuleListCustom.cpp:
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
* bindings/js/JSCSSValueCustom.cpp:
* bindings/js/JSCallbackData.cpp:
* bindings/js/JSCallbackData.h:
* bindings/js/JSCanvasRenderingContextCustom.cpp:
* bindings/js/JSClipboardCustom.cpp:
* bindings/js/JSCustomSQLStatementErrorCallback.cpp:
* bindings/js/JSCustomXPathNSResolver.cpp:
* bindings/js/JSCustomXPathNSResolver.h:
* bindings/js/JSDOMGlobalObject.cpp:
* bindings/js/JSDOMGlobalObject.h:
* bindings/js/JSDOMWindowShell.cpp:
* bindings/js/JSDOMWindowShell.h:
* bindings/js/JSElementCustom.cpp:
* bindings/js/JSEventCustom.cpp:
* bindings/js/JSHTMLAppletElementCustom.cpp:
* bindings/js/JSHTMLCanvasElementCustom.cpp:
* bindings/js/JSHTMLDocumentCustom.cpp:
* bindings/js/JSHTMLElementCustom.cpp:
* bindings/js/JSHTMLEmbedElementCustom.cpp:
* bindings/js/JSHTMLFormElementCustom.cpp:
* bindings/js/JSHTMLFrameElementCustom.cpp:
* bindings/js/JSHTMLFrameSetElementCustom.cpp:
* bindings/js/JSHTMLObjectElementCustom.cpp:
* bindings/js/JSHTMLSelectElementCustom.h:
* bindings/js/JSHistoryCustom.cpp:
* bindings/js/JSMediaListCustom.h:
* bindings/js/JSMediaSourceStatesCustom.cpp:
* bindings/js/JSMediaStreamCapabilitiesCustom.cpp:
* bindings/js/JSNamedNodeMapCustom.cpp:
* bindings/js/JSNodeCustom.cpp:
* bindings/js/JSNodeCustom.h:
* bindings/js/JSNodeFilterCustom.cpp:
* bindings/js/JSNodeListCustom.cpp:
* bindings/js/JSSQLResultSetRowListCustom.cpp:
* bindings/js/JSSQLTransactionCustom.cpp:
* bindings/js/JSSQLTransactionSyncCustom.cpp:
* bindings/js/JSSVGElementInstanceCustom.cpp:
* bindings/js/JSStyleSheetCustom.cpp:
* bindings/js/JSStyleSheetCustom.h:
* bindings/js/JSStyleSheetListCustom.cpp:
* bindings/js/JSTextTrackCueCustom.cpp:
* bindings/js/JSTextTrackCustom.cpp:
* bindings/js/JSTextTrackListCustom.cpp:
* bindings/js/JSTouchCustom.cpp:
* bindings/js/JSTouchListCustom.cpp:
* bindings/js/JSTrackCustom.cpp:
* bindings/js/JSTrackCustom.h:
* bindings/js/JSTrackEventCustom.cpp:
* bindings/js/JSVideoTrackCustom.cpp:
* bindings/js/JSVideoTrackListCustom.cpp:
* bindings/js/JSWebGLRenderingContextCustom.cpp:
* bindings/js/JSWebKitPointCustom.cpp:
* bindings/js/JSWorkerGlobalScopeBase.cpp:
* bindings/js/JSWorkerGlobalScopeBase.h:
* bindings/js/JSXMLHttpRequestCustom.cpp:
* bindings/js/JSXSLTProcessorCustom.cpp:
* bindings/js/ScriptControllerMac.mm:
* bindings/js/ScriptProfile.cpp:
* bindings/js/ScriptProfile.h:
* bindings/js/ScriptProfileNode.h:
* bindings/js/ScriptProfiler.cpp:
* bindings/js/ScriptProfiler.h:
* bindings/js/SerializedScriptValue.cpp:
* bindings/js/SerializedScriptValue.h:
* bindings/js/WorkerScriptController.cpp:
* bindings/js/WorkerScriptController.h:
* bindings/objc/DOM.h:
* bindings/objc/DOM.mm:
* bindings/objc/DOMAbstractView.mm:
* bindings/objc/DOMAbstractViewFrame.h:
* bindings/objc/DOMCSS.h:
* bindings/objc/DOMCSS.mm:
* bindings/objc/DOMCore.h:
* bindings/objc/DOMCustomXPathNSResolver.h:
* bindings/objc/DOMCustomXPathNSResolver.mm:
* bindings/objc/DOMEventException.h:
* bindings/objc/DOMEvents.h:
* bindings/objc/DOMEvents.mm:
* bindings/objc/DOMException.h:
* bindings/objc/DOMExtensions.h:
* bindings/objc/DOMHTML.h:
* bindings/objc/DOMHTML.mm:
* bindings/objc/DOMInternal.h:
* bindings/objc/DOMInternal.mm:
* bindings/objc/DOMObject.h:
* bindings/objc/DOMObject.mm:
* bindings/objc/DOMPrivate.h:
* bindings/objc/DOMRangeException.h:
* bindings/objc/DOMRanges.h:
* bindings/objc/DOMStylesheets.h:
* bindings/objc/DOMTraversal.h:
* bindings/objc/DOMUIKitExtensions.h:
* bindings/objc/DOMUIKitExtensions.mm:
* bindings/objc/DOMUtility.mm:
* bindings/objc/DOMViews.h:
* bindings/objc/DOMXPath.h:
* bindings/objc/DOMXPath.mm:
* bindings/objc/DOMXPathException.h:
* bindings/objc/ExceptionHandlers.h:
* bindings/objc/ExceptionHandlers.mm:
* bindings/objc/ObjCEventListener.h:
* bindings/objc/ObjCEventListener.mm:
* bindings/objc/ObjCNodeFilterCondition.h:
* bindings/objc/ObjCNodeFilterCondition.mm:
* bindings/objc/PublicDOMInterfaces.h:
* bindings/objc/WebScriptObject.mm:
* bindings/scripts/CodeGeneratorObjC.pm:
* bindings/scripts/InFilesCompiler.pm:
(license):
* bindings/scripts/InFilesParser.pm:
* bindings/scripts/generate-bindings.pl:
* bindings/scripts/test/ObjC/DOMFloat64Array.h:
* bindings/scripts/test/ObjC/DOMFloat64Array.mm:
* bindings/scripts/test/ObjC/DOMFloat64ArrayInternal.h:
* bindings/scripts/test/ObjC/DOMTestActiveDOMObject.h:
* bindings/scripts/test/ObjC/DOMTestActiveDOMObject.mm:
* bindings/scripts/test/ObjC/DOMTestActiveDOMObjectInternal.h:
* bindings/scripts/test/ObjC/DOMTestCallback.h:
* bindings/scripts/test/ObjC/DOMTestCallback.mm:
* bindings/scripts/test/ObjC/DOMTestCallbackInternal.h:
* bindings/scripts/test/ObjC/DOMTestCustomNamedGetter.h:
* bindings/scripts/test/ObjC/DOMTestCustomNamedGetter.mm:
* bindings/scripts/test/ObjC/DOMTestCustomNamedGetterInternal.h:
* bindings/scripts/test/ObjC/DOMTestEventConstructor.h:
* bindings/scripts/test/ObjC/DOMTestEventConstructor.mm:
* bindings/scripts/test/ObjC/DOMTestEventConstructorInternal.h:
* bindings/scripts/test/ObjC/DOMTestEventTarget.h:
* bindings/scripts/test/ObjC/DOMTestEventTarget.mm:
* bindings/scripts/test/ObjC/DOMTestEventTargetInternal.h:
* bindings/scripts/test/ObjC/DOMTestException.h:
* bindings/scripts/test/ObjC/DOMTestException.mm:
* bindings/scripts/test/ObjC/DOMTestExceptionInternal.h:
* bindings/scripts/test/ObjC/DOMTestGenerateIsReachable.h:
* bindings/scripts/test/ObjC/DOMTestGenerateIsReachable.mm:
* bindings/scripts/test/ObjC/DOMTestGenerateIsReachableInternal.h:
* bindings/scripts/test/ObjC/DOMTestInterface.h:
* bindings/scripts/test/ObjC/DOMTestInterface.mm:
* bindings/scripts/test/ObjC/DOMTestInterfaceInternal.h:
* bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.h:
* bindings/scripts/test/ObjC/DOMTestMediaQueryListListener.mm:
* bindings/scripts/test/ObjC/DOMTestMediaQueryListListenerInternal.h:
* bindings/scripts/test/ObjC/DOMTestNamedConstructor.h:
* bindings/scripts/test/ObjC/DOMTestNamedConstructor.mm:
* bindings/scripts/test/ObjC/DOMTestNamedConstructorInternal.h:
* bindings/scripts/test/ObjC/DOMTestNode.h:
* bindings/scripts/test/ObjC/DOMTestNode.mm:
* bindings/scripts/test/ObjC/DOMTestNodeInternal.h:
* bindings/scripts/test/ObjC/DOMTestObj.h:
* bindings/scripts/test/ObjC/DOMTestObj.mm:
* bindings/scripts/test/ObjC/DOMTestObjInternal.h:
* bindings/scripts/test/ObjC/DOMTestOverloadedConstructors.h:
* bindings/scripts/test/ObjC/DOMTestOverloadedConstructors.mm:
* bindings/scripts/test/ObjC/DOMTestOverloadedConstructorsInternal.h:
* bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h:
* bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm:
* bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterfaceInternal.h:
* bindings/scripts/test/ObjC/DOMTestTypedefs.h:
* bindings/scripts/test/ObjC/DOMTestTypedefs.mm:
* bindings/scripts/test/ObjC/DOMTestTypedefsInternal.h:
* bindings/scripts/test/ObjC/DOMattribute.h:
* bindings/scripts/test/ObjC/DOMattribute.mm:
* bindings/scripts/test/ObjC/DOMattributeInternal.h:
* bindings/scripts/test/ObjC/DOMreadonly.h:
* bindings/scripts/test/ObjC/DOMreadonly.mm:
* bindings/scripts/test/ObjC/DOMreadonlyInternal.h:
* bindings/scripts/test/TestCallback.idl:
* bindings/scripts/test/TestCustomNamedGetter.idl:
* bindings/scripts/test/TestDomainSecurity.idl:
* bindings/scripts/test/TestEventConstructor.idl:
* bindings/scripts/test/TestEventTarget.idl:
* bindings/scripts/test/TestException.idl:
* bindings/scripts/test/TestImplements.idl:
* bindings/scripts/test/TestInterface.idl:
* bindings/scripts/test/TestMediaQueryListListener.idl:
* bindings/scripts/test/TestNamedConstructor.idl:
* bindings/scripts/test/TestObj.idl:
* bindings/scripts/test/TestOverloadedConstructors.idl:
* bindings/scripts/test/TestSupplemental.idl:
* bridge/Bridge.h:
* bridge/IdentifierRep.cpp:
* bridge/IdentifierRep.h:
* bridge/NP_jsobject.cpp:
* bridge/NP_jsobject.h:
* bridge/c/CRuntimeObject.cpp:
* bridge/c/CRuntimeObject.h:
* bridge/c/c_class.cpp:
* bridge/c/c_class.h:
* bridge/c/c_instance.cpp:
* bridge/c/c_instance.h:
* bridge/c/c_runtime.cpp:
* bridge/c/c_runtime.h:
* bridge/c/c_utility.cpp:
* bridge/c/c_utility.h:
* bridge/jsc/BridgeJSC.cpp:
* bridge/jsc/BridgeJSC.h:
* bridge/npruntime.cpp:
* bridge/npruntime_impl.h:
* bridge/npruntime_priv.h:
* bridge/objc/ObjCRuntimeObject.h:
* bridge/objc/ObjCRuntimeObject.mm:
* bridge/objc/WebScriptObject.h:
* bridge/objc/objc_class.h:
* bridge/objc/objc_class.mm:
* bridge/objc/objc_header.h:
* bridge/objc/objc_instance.h:
* bridge/objc/objc_instance.mm:
* bridge/objc/objc_runtime.h:
* bridge/objc/objc_runtime.mm:
* bridge/objc/objc_utility.h:
* bridge/objc/objc_utility.mm:
* bridge/runtime_array.cpp:
* bridge/runtime_array.h:
* bridge/runtime_method.cpp:
* bridge/runtime_method.h:
* bridge/runtime_object.cpp:
* bridge/runtime_object.h:
* bridge/runtime_root.cpp:
* bridge/runtime_root.h:
* bridge/testbindings.mm:
* css/CSSAllInOne.cpp:
* css/CSSAspectRatioValue.cpp:
* css/CSSAspectRatioValue.h:
* css/CSSBorderImageSliceValue.cpp:
* css/CSSBorderImageSliceValue.h:
* css/CSSCanvasValue.cpp:
* css/CSSCanvasValue.h:
* css/CSSCrossfadeValue.cpp:
* css/CSSCrossfadeValue.h:
* css/CSSFontFace.cpp:
* css/CSSFontFace.h:
* css/CSSFontFaceSource.cpp:
* css/CSSFontFaceSource.h:
* css/CSSFontFaceSrcValue.cpp:
* css/CSSFontFaceSrcValue.h:
* css/CSSFontFeatureValue.cpp:
* css/CSSFontFeatureValue.h:
* css/CSSFontSelector.cpp:
* css/CSSFontSelector.h:
* css/CSSFontValue.cpp:
* css/CSSGradientValue.cpp:
* css/CSSGradientValue.h:
* css/CSSImageGeneratorValue.cpp:
* css/CSSImageGeneratorValue.h:
* css/CSSMediaRule.cpp:
* css/CSSProperty.cpp:
* css/CSSProperty.h:
* css/CSSReflectValue.cpp:
* css/CSSReflectValue.h:
* css/CSSReflectionDirection.h:
* css/CSSRuleList.cpp:
* css/CSSRuleList.h:
* css/CSSRuleList.idl:
* css/CSSSegmentedFontFace.cpp:
* css/CSSSegmentedFontFace.h:
* css/CSSShadowValue.cpp:
* css/CSSTimingFunctionValue.cpp:
* css/CSSTimingFunctionValue.h:
* css/CSSUnicodeRangeValue.cpp:
* css/CSSUnicodeRangeValue.h:
* css/CSSUnknownRule.idl:
* css/CSSValue.cpp:
* css/CSSValueList.idl:
* css/MediaAllInOne.cpp:
* css/MediaFeatureNames.cpp:
* css/MediaList.idl:
* css/MediaQuery.cpp:
* css/MediaQuery.h:
* css/MediaQueryEvaluator.cpp:
* css/MediaQueryEvaluator.h:
* css/MediaQueryExp.cpp:
* css/MediaQueryExp.h:
* css/Pair.h:
* css/PropertySetCSSStyleDeclaration.h:
* css/RGBColor.cpp:
* css/RGBColor.h:
* css/SVGCSSParser.cpp:
* css/SVGCSSStyleSelector.cpp:
* css/StyleInvalidationAnalysis.cpp:
* css/StyleInvalidationAnalysis.h:
* css/StyleMedia.cpp:
* css/StyleMedia.h:
* css/StyleMedia.idl:
* css/StyleSheet.cpp:
* css/WebKitCSSFilterValue.cpp:
* css/WebKitCSSFilterValue.h:
* css/WebKitCSSFilterValue.idl:
* css/WebKitCSSKeyframeRule.cpp:
* css/WebKitCSSKeyframeRule.h:
* css/WebKitCSSKeyframeRule.idl:
* css/WebKitCSSKeyframesRule.cpp:
* css/WebKitCSSKeyframesRule.h:
* css/WebKitCSSKeyframesRule.idl:
* css/WebKitCSSTransformValue.cpp:
* css/WebKitCSSTransformValue.h:
* css/WebKitCSSTransformValue.idl:
* css/make-css-file-arrays.pl:
* css/mediaControls.css:
* css/mediaControlsEfl.css:
* css/mediaControlsEflFullscreen.css:
* css/mediaControlsGtk.css:
* css/mediaControlsiOS.css:
* css/svg.css:
* dom/ActiveDOMObject.cpp:
* dom/ActiveDOMObject.h:
* dom/BeforeLoadEvent.h:
* dom/BeforeLoadEvent.idl:
* dom/BeforeTextInsertedEvent.cpp:
* dom/BeforeTextInsertedEvent.h:
* dom/BeforeUnloadEvent.cpp:
* dom/BeforeUnloadEvent.h:
* dom/BeforeUnloadEvent.idl:
* dom/ClassNodeList.cpp:
* dom/ClassNodeList.h:
* dom/ClientRect.cpp:
* dom/ClientRect.h:
* dom/ClientRect.idl:
* dom/ClientRectList.cpp:
* dom/ClientRectList.h:
* dom/ClientRectList.idl:
* dom/Clipboard.cpp:
* dom/Clipboard.idl:
* dom/ClipboardAccessPolicy.h:
* dom/ClipboardMac.mm:
* dom/CompositionEvent.cpp:
* dom/CompositionEvent.h:
* dom/CompositionEvent.idl:
* dom/ContextDestructionObserver.cpp:
* dom/ContextDestructionObserver.h:
* dom/CurrentScriptIncrementer.h:
* dom/CustomEvent.cpp:
* dom/CustomEvent.h:
* dom/CustomEvent.idl:
* dom/DOMCoreException.cpp:
* dom/DOMCoreException.h:
* dom/DOMCoreException.idl:
* dom/DOMError.idl:
* dom/DeviceMotionEvent.cpp:
* dom/DeviceMotionEvent.h:
* dom/DeviceMotionEvent.idl:
* dom/DocumentEventQueue.cpp:
* dom/DocumentEventQueue.h:
* dom/DocumentMarker.h:
* dom/DocumentParser.h:
* dom/DocumentSharedObjectPool.cpp:
* dom/DocumentSharedObjectPool.h:
* dom/Entity.idl:
* dom/EventContext.cpp:
* dom/EventContext.h:
* dom/EventException.cpp:
* dom/EventException.h:
* dom/EventException.idl:
* dom/EventListener.idl:
* dom/EventListenerMap.cpp:
* dom/EventListenerMap.h:
* dom/EventNames.cpp:
* dom/EventQueue.h:
* dom/EventTarget.cpp:
* dom/EventTarget.h:
* dom/ExceptionBase.cpp:
* dom/ExceptionBase.h:
* dom/GenericEventQueue.cpp:
* dom/GenericEventQueue.h:
* dom/KeyboardEvent.idl:
* dom/MessageChannel.cpp:
* dom/MessageChannel.h:
* dom/MessageChannel.idl:
* dom/MessageEvent.cpp:
* dom/MessageEvent.h:
* dom/MessageEvent.idl:
* dom/MessagePort.cpp:
* dom/MessagePort.h:
* dom/MessagePort.idl:
* dom/MouseRelatedEvent.h:
* dom/MutationEvent.idl:
* dom/Notation.idl:
* dom/OverflowEvent.cpp:
* dom/OverflowEvent.h:
* dom/OverflowEvent.idl:
* dom/PopStateEvent.cpp:
* dom/PopStateEvent.h:
* dom/PopStateEvent.idl:
* dom/Position.cpp:
* dom/Position.h:
* dom/ProcessingInstruction.idl:
* dom/ProgressEvent.cpp:
* dom/ProgressEvent.h:
* dom/ProgressEvent.idl:
* dom/Range.idl:
* dom/RangeException.cpp:
* dom/RangeException.h:
* dom/ScriptExecutionContext.cpp:
* dom/ScriptExecutionContext.h:
* dom/SecurityContext.cpp:
* dom/SecurityContext.h:
* dom/StaticNodeList.cpp:
* dom/StaticNodeList.h:
* dom/Text.idl:
* dom/TextEvent.cpp:
* dom/TextEvent.h:
* dom/TextEvent.idl:
* dom/Touch.cpp:
* dom/Touch.h:
* dom/Touch.idl:
* dom/TouchEvent.cpp:
* dom/TouchEvent.h:
* dom/TouchEvent.idl:
* dom/TouchList.cpp:
* dom/TouchList.h:
* dom/TouchList.idl:
* dom/TransitionEvent.cpp:
* dom/TransitionEvent.h:
* dom/TransitionEvent.idl:
* dom/TreeWalker.idl:
* dom/UIEvent.idl:
* dom/UIEventWithKeyState.cpp:
* dom/WebKitAnimationEvent.cpp:
* dom/WebKitAnimationEvent.h:
* dom/WebKitAnimationEvent.idl:
* dom/WebKitTransitionEvent.cpp:
* dom/WebKitTransitionEvent.h:
* dom/WebKitTransitionEvent.idl:
* dom/make_dom_exceptions.pl:
* dom/make_event_factory.pl:
* dom/make_names.pl:
(printLicenseHeader):
* editing/AlternativeTextController.cpp:
* editing/AlternativeTextController.h:
* editing/AppendNodeCommand.cpp:
* editing/AppendNodeCommand.h:
* editing/ApplyStyleCommand.cpp:
* editing/ApplyStyleCommand.h:
* editing/BreakBlockquoteCommand.cpp:
* editing/BreakBlockquoteCommand.h:
* editing/CompositeEditCommand.cpp:
* editing/CompositeEditCommand.h:
* editing/CreateLinkCommand.cpp:
* editing/CreateLinkCommand.h:
* editing/DeleteButton.cpp:
* editing/DeleteButton.h:
* editing/DeleteButtonController.cpp:
* editing/DeleteButtonController.h:
* editing/DeleteFromTextNodeCommand.cpp:
* editing/DeleteFromTextNodeCommand.h:
* editing/DeleteSelectionCommand.cpp:
* editing/DeleteSelectionCommand.h:
* editing/EditAction.h:
* editing/EditCommand.cpp:
* editing/EditCommand.h:
* editing/EditingBoundary.h:
* editing/EditingStyle.cpp:
* editing/Editor.cpp:
* editing/Editor.h:
* editing/EditorCommand.cpp:
* editing/EditorDeleteAction.h:
* editing/EditorInsertAction.h:
* editing/FormatBlockCommand.cpp:
* editing/FormatBlockCommand.h:
* editing/FrameSelection.cpp:
* editing/FrameSelection.h:
* editing/HTMLInterchange.cpp:
* editing/HTMLInterchange.h:
* editing/IndentOutdentCommand.cpp:
* editing/IndentOutdentCommand.h:
* editing/InsertIntoTextNodeCommand.cpp:
* editing/InsertIntoTextNodeCommand.h:
* editing/InsertLineBreakCommand.cpp:
* editing/InsertLineBreakCommand.h:
* editing/InsertListCommand.cpp:
* editing/InsertListCommand.h:
* editing/InsertNodeBeforeCommand.cpp:
* editing/InsertNodeBeforeCommand.h:
* editing/InsertParagraphSeparatorCommand.cpp:
* editing/InsertParagraphSeparatorCommand.h:
* editing/InsertTextCommand.cpp:
* editing/InsertTextCommand.h:
* editing/MarkupAccumulator.h:
* editing/MergeIdenticalElementsCommand.cpp:
* editing/MergeIdenticalElementsCommand.h:
* editing/ModifySelectionListLevel.cpp:
* editing/ModifySelectionListLevel.h:
* editing/MoveSelectionCommand.cpp:
* editing/MoveSelectionCommand.h:
* editing/RemoveCSSPropertyCommand.cpp:
* editing/RemoveCSSPropertyCommand.h:
* editing/RemoveFormatCommand.cpp:
* editing/RemoveFormatCommand.h:
* editing/RemoveNodeCommand.cpp:
* editing/RemoveNodeCommand.h:
* editing/RemoveNodePreservingChildrenCommand.cpp:
* editing/RemoveNodePreservingChildrenCommand.h:
* editing/ReplaceSelectionCommand.cpp:
* editing/ReplaceSelectionCommand.h:
* editing/SetNodeAttributeCommand.cpp:
* editing/SetNodeAttributeCommand.h:
* editing/SetSelectionCommand.cpp:
* editing/SetSelectionCommand.h:
* editing/SimplifyMarkupCommand.cpp:
* editing/SimplifyMarkupCommand.h:
* editing/SmartReplace.cpp:
* editing/SmartReplace.h:
* editing/SmartReplaceCF.cpp:
* editing/SpellChecker.cpp:
* editing/SpellChecker.h:
* editing/SpellingCorrectionCommand.cpp:
* editing/SpellingCorrectionCommand.h:
* editing/SplitElementCommand.cpp:
* editing/SplitElementCommand.h:
* editing/SplitTextNodeCommand.cpp:
* editing/SplitTextNodeCommand.h:
* editing/SplitTextNodeContainingElementCommand.cpp:
* editing/SplitTextNodeContainingElementCommand.h:
* editing/TextAffinity.h:
* editing/TextCheckingHelper.cpp:
* editing/TextGranularity.h:
* editing/TextIterator.cpp:
* editing/TextIterator.h:
* editing/TextIteratorBehavior.h:
* editing/TypingCommand.cpp:
* editing/TypingCommand.h:
* editing/UnlinkCommand.cpp:
* editing/UnlinkCommand.h:
* editing/VisiblePosition.cpp:
* editing/VisiblePosition.h:
* editing/VisibleSelection.cpp:
* editing/VisibleSelection.h:
* editing/VisibleUnits.cpp:
* editing/VisibleUnits.h:
* editing/WrapContentsInDummySpanCommand.cpp:
* editing/WrapContentsInDummySpanCommand.h:
* editing/WritingDirection.h:
* editing/efl/EditorEfl.cpp:
* editing/htmlediting.cpp:
* editing/htmlediting.h:
* editing/mac/EditorMac.mm:
* editing/mac/FrameSelectionMac.mm:
* editing/markup.cpp:
* editing/markup.h:
* extract-localizable-strings.pl:
* fileapi/FileException.cpp:
* history/BackForwardClient.h:
* history/BackForwardList.cpp:
* history/BackForwardList.h:
* history/CachedFrame.cpp:
* history/CachedFrame.h:
* history/CachedFramePlatformData.h:
* history/CachedPage.cpp:
* history/CachedPage.h:
* history/HistoryItem.cpp:
* history/HistoryItem.h:
* history/PageCache.cpp:
* history/PageCache.h:
* history/mac/HistoryItemMac.mm:
* html/FTPDirectoryDocument.cpp:
* html/FTPDirectoryDocument.h:
* html/HTMLAudioElement.cpp:
* html/HTMLAudioElement.h:
* html/HTMLAudioElement.idl:
* html/HTMLCanvasElement.cpp:
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
* html/HTMLFieldSetElement.idl:
* html/HTMLImageLoader.h:
* html/HTMLMediaElement.cpp:
* html/HTMLMediaElement.h:
* html/HTMLMediaElement.idl:
* html/HTMLOptionsCollection.cpp:
* html/HTMLPlugInElement.cpp:
* html/HTMLSourceElement.cpp:
* html/HTMLSourceElement.h:
* html/HTMLSourceElement.idl:
* html/HTMLTablePartElement.cpp:
* html/HTMLTableRowsCollection.cpp:
* html/HTMLTableRowsCollection.h:
* html/HTMLTitleElement.idl:
* html/HTMLTrackElement.cpp:
* html/HTMLTrackElement.h:
* html/HTMLTrackElement.idl:
* html/HTMLVideoElement.cpp:
* html/HTMLVideoElement.h:
* html/HTMLVideoElement.idl:
* html/ImageData.cpp:
* html/ImageData.h:
* html/ImageData.idl:
* html/ImageDocument.cpp:
* html/ImageDocument.h:
* html/MediaController.cpp:
* html/MediaController.h:
* html/MediaController.idl:
* html/MediaControllerInterface.h:
* html/MediaError.h:
* html/MediaError.idl:
* html/MediaFragmentURIParser.cpp:
* html/MediaFragmentURIParser.h:
* html/MediaKeyError.h:
* html/MediaKeyError.idl:
* html/MediaKeyEvent.cpp:
* html/MediaKeyEvent.h:
* html/MediaKeyEvent.idl:
* html/PluginDocument.cpp:
* html/PluginDocument.h:
* html/TextDocument.cpp:
* html/TextDocument.h:
* html/TimeRanges.cpp:
* html/TimeRanges.h:
* html/TimeRanges.idl:
* html/VoidCallback.h:
* html/VoidCallback.idl:
* html/canvas/CanvasGradient.cpp:
* html/canvas/CanvasGradient.h:
* html/canvas/CanvasGradient.idl:
* html/canvas/CanvasPattern.cpp:
* html/canvas/CanvasPattern.h:
* html/canvas/CanvasPattern.idl:
* html/canvas/CanvasRenderingContext.cpp:
* html/canvas/CanvasRenderingContext.h:
* html/canvas/CanvasRenderingContext.idl:
* html/canvas/CanvasRenderingContext2D.cpp:
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/CanvasStyle.cpp:
* html/canvas/CanvasStyle.h:
* html/canvas/DOMPath.idl:
* html/canvas/OESVertexArrayObject.cpp:
* html/canvas/OESVertexArrayObject.h:
* html/canvas/OESVertexArrayObject.idl:
* html/canvas/WebGLBuffer.cpp:
* html/canvas/WebGLBuffer.h:
* html/canvas/WebGLBuffer.idl:
* html/canvas/WebGLContextGroup.cpp:
* html/canvas/WebGLContextGroup.h:
* html/canvas/WebGLContextObject.cpp:
* html/canvas/WebGLContextObject.h:
* html/canvas/WebGLFramebuffer.cpp:
* html/canvas/WebGLFramebuffer.h:
* html/canvas/WebGLFramebuffer.idl:
* html/canvas/WebGLObject.cpp:
* html/canvas/WebGLObject.h:
* html/canvas/WebGLProgram.cpp:
* html/canvas/WebGLProgram.h:
* html/canvas/WebGLProgram.idl:
* html/canvas/WebGLRenderbuffer.cpp:
* html/canvas/WebGLRenderbuffer.h:
* html/canvas/WebGLRenderbuffer.idl:
* html/canvas/WebGLRenderingContext.cpp:
* html/canvas/WebGLRenderingContext.h:
* html/canvas/WebGLRenderingContext.idl:
* html/canvas/WebGLShader.cpp:
* html/canvas/WebGLShader.h:
* html/canvas/WebGLShader.idl:
* html/canvas/WebGLSharedObject.cpp:
* html/canvas/WebGLSharedObject.h:
* html/canvas/WebGLTexture.cpp:
* html/canvas/WebGLTexture.h:
* html/canvas/WebGLTexture.idl:
* html/canvas/WebGLUniformLocation.cpp:
* html/canvas/WebGLUniformLocation.h:
* html/canvas/WebGLUniformLocation.idl:
* html/canvas/WebGLVertexArrayObjectOES.cpp:
* html/canvas/WebGLVertexArrayObjectOES.h:
* html/canvas/WebGLVertexArrayObjectOES.idl:
* html/forms/FileIconLoader.cpp:
* html/forms/FileIconLoader.h:
* html/parser/TextDocumentParser.cpp:
* html/parser/TextDocumentParser.h:
* html/shadow/MediaControlElementTypes.cpp:
* html/shadow/MediaControlElementTypes.h:
* html/shadow/MediaControlElements.cpp:
* html/shadow/MediaControlElements.h:
* html/shadow/MediaControls.cpp:
* html/shadow/MediaControls.h:
* html/shadow/MediaControlsApple.cpp:
* html/shadow/MediaControlsApple.h:
* html/shadow/MediaControlsGtk.cpp:
* html/shadow/MediaControlsGtk.h:
* html/shadow/SpinButtonElement.cpp:
* html/shadow/SpinButtonElement.h:
* html/shadow/TextControlInnerElements.cpp:
* html/shadow/TextControlInnerElements.h:
* html/track/AudioTrack.h:
* html/track/AudioTrack.idl:
* html/track/AudioTrackList.cpp:
* html/track/AudioTrackList.h:
* html/track/AudioTrackList.idl:
* html/track/DataCue.cpp:
* html/track/DataCue.h:
* html/track/DataCue.idl:
* html/track/InbandGenericTextTrack.cpp:
* html/track/InbandGenericTextTrack.h:
* html/track/InbandTextTrack.cpp:
* html/track/InbandTextTrack.h:
* html/track/InbandWebVTTTextTrack.cpp:
* html/track/InbandWebVTTTextTrack.h:
* html/track/LoadableTextTrack.cpp:
* html/track/LoadableTextTrack.h:
* html/track/TextTrack.h:
* html/track/TextTrack.idl:
* html/track/TextTrackCue.idl:
* html/track/TextTrackCueGeneric.cpp:
* html/track/TextTrackCueGeneric.h:
* html/track/TextTrackCueList.cpp:
* html/track/TextTrackCueList.h:
* html/track/TextTrackCueList.idl:
* html/track/TextTrackList.cpp:
* html/track/TextTrackList.h:
* html/track/TextTrackList.idl:
* html/track/TextTrackRegion.idl:
* html/track/TextTrackRegionList.cpp:
* html/track/TextTrackRegionList.h:
* html/track/TextTrackRegionList.idl:
* html/track/TrackBase.cpp:
* html/track/TrackBase.h:
* html/track/TrackEvent.cpp:
* html/track/TrackEvent.h:
* html/track/TrackEvent.idl:
* html/track/TrackListBase.cpp:
* html/track/TrackListBase.h:
* html/track/VTTCue.idl:
* html/track/VideoTrack.h:
* html/track/VideoTrack.idl:
* html/track/VideoTrackList.cpp:
* html/track/VideoTrackList.h:
* html/track/VideoTrackList.idl:
* html/track/WebVTTElement.cpp:
* html/track/WebVTTElement.h:
* inspector/CommandLineAPIHost.cpp:
* inspector/CommandLineAPIHost.h:
* inspector/CommandLineAPIModuleSource.js:
* inspector/InspectorAllInOne.cpp:
* inspector/InspectorClient.h:
* inspector/InspectorDOMAgent.cpp:
* inspector/InspectorDOMAgent.h:
* inspector/InspectorDOMStorageAgent.cpp:
* inspector/InspectorDOMStorageAgent.h:
* inspector/InspectorDatabaseAgent.cpp:
* inspector/InspectorDatabaseAgent.h:
* inspector/InspectorDatabaseResource.cpp:
* inspector/InspectorDatabaseResource.h:
* inspector/InspectorForwarding.h:
* inspector/InspectorFrontendHost.cpp:
* inspector/InspectorFrontendHost.h:
* inspector/InspectorLayerTreeAgent.h:
* inspector/InspectorNodeFinder.cpp:
* inspector/InspectorNodeFinder.h:
* inspector/InspectorOverlay.cpp:
* inspector/InspectorOverlay.h:
* inspector/InspectorOverlayPage.html:
* inspector/InspectorProfilerAgent.cpp:
* inspector/InspectorProfilerAgent.h:
* inspector/ScriptProfile.idl:
* inspector/ScriptProfileNode.idl:
* loader/CookieJar.h:
* loader/CrossOriginAccessControl.cpp:
* loader/CrossOriginAccessControl.h:
* loader/CrossOriginPreflightResultCache.cpp:
* loader/CrossOriginPreflightResultCache.h:
* loader/DocumentLoader.cpp:
* loader/DocumentLoader.h:
* loader/DocumentWriter.cpp:
* loader/EmptyClients.h:
* loader/FormState.cpp:
* loader/FormState.h:
* loader/FrameLoadRequest.h:
* loader/FrameLoader.cpp:
* loader/FrameLoader.h:
* loader/FrameLoaderClient.h:
* loader/FrameLoaderTypes.h:
* loader/HistoryController.cpp:
* loader/HistoryController.h:
* loader/MixedContentChecker.cpp:
* loader/NavigationAction.cpp:
* loader/NavigationAction.h:
* loader/NavigationScheduler.cpp:
* loader/NavigationScheduler.h:
* loader/NetscapePlugInStreamLoader.cpp:
* loader/NetscapePlugInStreamLoader.h:
* loader/PolicyCallback.cpp:
* loader/PolicyCallback.h:
* loader/PolicyChecker.cpp:
* loader/PolicyChecker.h:
* loader/ProgressTracker.cpp:
* loader/ProgressTracker.h:
* loader/ResourceBuffer.cpp:
* loader/ResourceBuffer.h:
* loader/ResourceLoadNotifier.cpp:
* loader/ResourceLoadNotifier.h:
* loader/ResourceLoader.cpp:
* loader/ResourceLoader.h:
* loader/SinkDocument.cpp:
* loader/SinkDocument.h:
* loader/SubframeLoader.cpp:
* loader/SubframeLoader.h:
* loader/SubresourceLoader.cpp:
* loader/SubresourceLoader.h:
* loader/SubstituteData.h:
* loader/TextTrackLoader.cpp:
* loader/appcache/ApplicationCacheAllInOne.cpp:
* loader/archive/Archive.cpp:
* loader/archive/Archive.h:
* loader/archive/ArchiveFactory.cpp:
* loader/archive/ArchiveFactory.h:
* loader/archive/ArchiveResource.cpp:
* loader/archive/ArchiveResource.h:
* loader/archive/ArchiveResourceCollection.cpp:
* loader/archive/ArchiveResourceCollection.h:
* loader/archive/cf/LegacyWebArchive.cpp:
* loader/archive/cf/LegacyWebArchive.h:
* loader/archive/cf/LegacyWebArchiveMac.mm:
* loader/cache/CachePolicy.h:
* loader/cache/CachedCSSStyleSheet.cpp:
* loader/cache/CachedFont.cpp:
* loader/cache/CachedFont.h:
* loader/cache/CachedResourceRequest.cpp:
* loader/cache/CachedResourceRequest.h:
* loader/cache/CachedResourceRequestInitiators.cpp:
* loader/cache/CachedResourceRequestInitiators.h:
* loader/cf/ResourceLoaderCFNet.cpp:
* loader/icon/IconController.cpp:
* loader/icon/IconController.h:
* loader/icon/IconDatabase.cpp:
* loader/icon/IconDatabase.h:
* loader/icon/IconDatabaseBase.cpp:
* loader/icon/IconDatabaseBase.h:
* loader/icon/IconDatabaseClient.h:
* loader/icon/IconLoader.cpp:
* loader/icon/IconLoader.h:
* loader/icon/IconRecord.cpp:
* loader/icon/IconRecord.h:
* loader/icon/PageURLRecord.cpp:
* loader/icon/PageURLRecord.h:
* loader/mac/DocumentLoaderMac.cpp:
* loader/mac/LoaderNSURLExtras.h:
* loader/mac/LoaderNSURLExtras.mm:
* loader/mac/ResourceBuffer.mm:
* loader/mac/ResourceLoaderMac.mm:
* loader/win/DocumentLoaderWin.cpp:
* loader/win/FrameLoaderWin.cpp:
* mathml/MathMLAllInOne.cpp:
* page/AbstractView.idl:
* page/AlternativeTextClient.h:
* page/AutoscrollController.cpp:
* page/AutoscrollController.h:
* page/BarProp.cpp:
* page/BarProp.h:
* page/BarProp.idl:
* page/ContentSecurityPolicy.cpp:
* page/ContentSecurityPolicy.h:
* page/ContextMenuClient.h:
* page/ContextMenuContext.cpp:
* page/ContextMenuContext.h:
* page/ContextMenuController.cpp:
* page/ContextMenuController.h:
* page/DOMSecurityPolicy.cpp:
* page/DOMSecurityPolicy.h:
* page/DOMSelection.cpp:
* page/DOMSelection.h:
* page/DOMSelection.idl:
* page/DOMTimer.cpp:
* page/DOMTimer.h:
* page/DOMWindow.cpp:
* page/DOMWindow.h:
* page/DOMWindow.idl:
* page/DragActions.h:
* page/DragClient.h:
* page/DragController.cpp:
* page/DragController.h:
* page/DragSession.h:
* page/DragState.h:
* page/EditorClient.h:
* page/EventHandler.cpp:
* page/EventHandler.h:
* page/FocusController.cpp:
* page/FocusController.h:
* page/FocusDirection.h:
* page/FrameTree.h:
* page/GestureTapHighlighter.cpp:
* page/GestureTapHighlighter.h:
* page/History.cpp:
* page/History.h:
* page/History.idl:
* page/Location.cpp:
* page/Location.h:
* page/Location.idl:
* page/MouseEventWithHitTestResults.cpp:
* page/MouseEventWithHitTestResults.h:
* page/Navigator.cpp:
* page/NavigatorBase.cpp:
* page/NavigatorBase.h:
* page/PageConsole.cpp:
* page/PageConsole.h:
* page/Screen.cpp:
* page/Screen.h:
* page/Screen.idl:
* page/SecurityOrigin.cpp:
* page/SecurityOrigin.h:
* page/SecurityOriginHash.h:
* page/Settings.cpp:
* page/Settings.h:
* page/SpatialNavigation.cpp:
* page/SuspendableTimer.cpp:
* page/SuspendableTimer.h:
* page/UserContentTypes.h:
* page/UserContentURLPattern.cpp:
* page/UserContentURLPattern.h:
* page/UserScript.h:
* page/UserScriptTypes.h:
* page/UserStyleSheet.h:
* page/UserStyleSheetTypes.h:
* page/WebCoreKeyboardUIMode.h:
* page/WebKitPoint.h:
* page/WebKitPoint.idl:
* page/WindowBase64.idl:
* page/WindowFeatures.h:
* page/WindowFocusAllowedIndicator.cpp:
* page/WindowFocusAllowedIndicator.h:
* page/WindowTimers.idl:
* page/WorkerNavigator.cpp:
* page/WorkerNavigator.h:
* page/WorkerNavigator.idl:
* page/animation/AnimationBase.cpp:
* page/animation/AnimationBase.h:
* page/animation/AnimationController.cpp:
* page/animation/AnimationController.h:
* page/animation/AnimationControllerPrivate.h:
* page/animation/CSSPropertyAnimation.cpp:
* page/animation/CSSPropertyAnimation.h:
* page/animation/CompositeAnimation.cpp:
* page/animation/CompositeAnimation.h:
* page/animation/ImplicitAnimation.cpp:
* page/animation/ImplicitAnimation.h:
* page/animation/KeyframeAnimation.cpp:
* page/animation/KeyframeAnimation.h:
* page/efl/DragControllerEfl.cpp:
* page/efl/EventHandlerEfl.cpp:
* page/gtk/DragControllerGtk.cpp:
* page/gtk/EventHandlerGtk.cpp:
* page/ios/EventHandlerIOS.mm:
* page/mac/DragControllerMac.mm:
* page/mac/EventHandlerMac.mm:
* page/mac/PageMac.cpp:
* page/mac/WebCoreFrameView.h:
* page/make_settings.pl:
* page/win/DragControllerWin.cpp:
* page/win/EventHandlerWin.cpp:
* page/win/FrameCGWin.cpp:
* page/win/FrameCairoWin.cpp:
* page/win/FrameGdiWin.cpp:
* page/win/FrameWin.cpp:
* page/win/FrameWin.h:
* pdf/ios/PDFDocument.h:
* platform/Clock.cpp:
* platform/Clock.h:
* platform/ClockGeneric.cpp:
* platform/ClockGeneric.h:
* platform/ColorChooser.h:
* platform/ColorChooserClient.h:
* platform/ContentType.cpp:
* platform/ContentType.h:
* platform/ContextMenu.h:
* platform/ContextMenuItem.h:
* platform/Cookie.h:
* platform/Cursor.h:
* platform/DragData.cpp:
* platform/DragData.h:
* platform/DragImage.cpp:
* platform/DragImage.h:
* platform/FileChooser.cpp:
* platform/FileChooser.h:
* platform/FileSystem.h:
* platform/FloatConversion.h:
* platform/KillRing.h:
* platform/LinkHash.h:
* platform/LocalizedStrings.cpp:
* platform/LocalizedStrings.h:
* platform/Logging.cpp:
* platform/Logging.h:
* platform/MIMETypeRegistry.cpp:
* platform/MIMETypeRegistry.h:
* platform/MediaDescription.h:
* platform/MediaSample.h:
* platform/NotImplemented.h:
* platform/PODFreeListArena.h:
* platform/Pasteboard.h:
* platform/PasteboardStrategy.h:
* platform/PlatformExportMacros.h:
* platform/PlatformKeyboardEvent.h:
* platform/PlatformMenuDescription.h:
* platform/PlatformMouseEvent.h:
* platform/PlatformPasteboard.h:
* platform/PlatformScreen.h:
* platform/PlatformSpeechSynthesis.h:
* platform/PlatformSpeechSynthesisUtterance.cpp:
* platform/PlatformSpeechSynthesisUtterance.h:
* platform/PlatformSpeechSynthesisVoice.cpp:
* platform/PlatformSpeechSynthesisVoice.h:
* platform/PlatformSpeechSynthesizer.cpp:
* platform/PlatformSpeechSynthesizer.h:
* platform/PlatformWheelEvent.h:
* platform/PopupMenuClient.h:
* platform/RemoteCommandListener.cpp:
* platform/RemoteCommandListener.h:
* platform/SSLKeyGenerator.h:
* platform/SchemeRegistry.cpp:
* platform/SchemeRegistry.h:
* platform/ScrollTypes.h:
* platform/ScrollView.cpp:
* platform/ScrollView.h:
* platform/Scrollbar.cpp:
* platform/Scrollbar.h:
* platform/SharedBuffer.cpp:
* platform/SharedBuffer.h:
* platform/SharedTimer.h:
* platform/Sound.h:
* platform/ThreadCheck.h:
* platform/ThreadGlobalData.cpp:
* platform/ThreadGlobalData.h:
* platform/ThreadTimers.cpp:
* platform/ThreadTimers.h:
* platform/Timer.cpp:
* platform/Timer.h:
* platform/URL.cpp:
* platform/URL.h:
* platform/Widget.cpp:
* platform/Widget.h:
* platform/animation/AnimationUtilities.h:
* platform/audio/AudioArray.h:
* platform/audio/AudioBus.cpp:
* platform/audio/AudioBus.h:
* platform/audio/AudioChannel.cpp:
* platform/audio/AudioChannel.h:
* platform/audio/AudioDestination.h:
* platform/audio/AudioFIFO.cpp:
* platform/audio/AudioFIFO.h:
* platform/audio/AudioFileReader.h:
* platform/audio/AudioIOCallback.h:
* platform/audio/AudioPullFIFO.cpp:
* platform/audio/AudioPullFIFO.h:
* platform/audio/AudioSourceProvider.h:
* platform/audio/Biquad.cpp:
* platform/audio/Biquad.h:
* platform/audio/Cone.cpp:
* platform/audio/Cone.h:
* platform/audio/DirectConvolver.cpp:
* platform/audio/DirectConvolver.h:
* platform/audio/Distance.cpp:
* platform/audio/Distance.h:
* platform/audio/DownSampler.cpp:
* platform/audio/DownSampler.h:
* platform/audio/DynamicsCompressor.cpp:
* platform/audio/DynamicsCompressor.h:
* platform/audio/DynamicsCompressorKernel.cpp:
* platform/audio/DynamicsCompressorKernel.h:
* platform/audio/FFTConvolver.cpp:
* platform/audio/FFTConvolver.h:
* platform/audio/FFTFrame.cpp:
* platform/audio/FFTFrame.h:
* platform/audio/HRTFDatabase.cpp:
* platform/audio/HRTFDatabase.h:
* platform/audio/HRTFDatabaseLoader.cpp:
* platform/audio/HRTFDatabaseLoader.h:
* platform/audio/HRTFElevation.cpp:
* platform/audio/HRTFElevation.h:
* platform/audio/HRTFKernel.cpp:
* platform/audio/HRTFKernel.h:
* platform/audio/MultiChannelResampler.cpp:
* platform/audio/MultiChannelResampler.h:
* platform/audio/Panner.cpp:
* platform/audio/Panner.h:
* platform/audio/Reverb.cpp:
* platform/audio/Reverb.h:
* platform/audio/ReverbAccumulationBuffer.cpp:
* platform/audio/ReverbAccumulationBuffer.h:
* platform/audio/ReverbConvolver.cpp:
* platform/audio/ReverbConvolver.h:
* platform/audio/ReverbConvolverStage.cpp:
* platform/audio/ReverbConvolverStage.h:
* platform/audio/ReverbInputBuffer.cpp:
* platform/audio/ReverbInputBuffer.h:
* platform/audio/SincResampler.cpp:
* platform/audio/SincResampler.h:
* platform/audio/UpSampler.cpp:
* platform/audio/UpSampler.h:
* platform/audio/ZeroPole.cpp:
* platform/audio/ZeroPole.h:
* platform/audio/ios/AudioDestinationIOS.cpp:
* platform/audio/ios/AudioDestinationIOS.h:
* platform/audio/ios/AudioFileReaderIOS.cpp:
* platform/audio/ios/AudioFileReaderIOS.h:
* platform/audio/mac/AudioDestinationMac.cpp:
* platform/audio/mac/AudioDestinationMac.h:
* platform/audio/mac/AudioFileReaderMac.cpp:
* platform/audio/mac/AudioFileReaderMac.h:
* platform/audio/mac/FFTFrameMac.cpp:
* platform/cf/FileSystemCF.cpp:
* platform/cf/SharedBufferCF.cpp:
* platform/cf/URLCF.cpp:
* platform/cocoa/KeyEventCocoa.h:
* platform/cocoa/KeyEventCocoa.mm:
* platform/efl/CursorEfl.cpp:
* platform/efl/EflKeyboardUtilities.cpp:
* platform/efl/EflKeyboardUtilities.h:
* platform/efl/FileSystemEfl.cpp:
* platform/efl/LanguageEfl.cpp:
* platform/efl/LocalizedStringsEfl.cpp:
* platform/efl/MIMETypeRegistryEfl.cpp:
* platform/efl/PlatformKeyboardEventEfl.cpp:
* platform/efl/PlatformMouseEventEfl.cpp:
* platform/efl/PlatformScreenEfl.cpp:
* platform/efl/PlatformWheelEventEfl.cpp:
* platform/efl/RenderThemeEfl.h:
* platform/efl/ScrollbarEfl.h:
* platform/efl/SharedTimerEfl.cpp:
* platform/efl/SoundEfl.cpp:
* platform/efl/TemporaryLinkStubs.cpp:
* platform/efl/WidgetEfl.cpp:
* platform/graphics/ANGLEWebKitBridge.cpp:
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/AudioTrackPrivate.h:
* platform/graphics/BitmapImage.cpp:
* platform/graphics/BitmapImage.h:
* platform/graphics/Color.cpp:
* platform/graphics/Color.h:
* platform/graphics/CrossfadeGeneratedImage.cpp:
* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/DashArray.h:
* platform/graphics/DisplayRefreshMonitor.cpp:
* platform/graphics/DisplayRefreshMonitor.h:
* platform/graphics/FloatPoint.cpp:
* platform/graphics/FloatPoint.h:
* platform/graphics/FloatQuad.cpp:
* platform/graphics/FloatQuad.h:
* platform/graphics/FloatRect.cpp:
* platform/graphics/FloatRect.h:
* platform/graphics/FloatSize.cpp:
* platform/graphics/FloatSize.h:
* platform/graphics/FontBaseline.h:
* platform/graphics/FontCache.cpp:
* platform/graphics/FontCache.h:
* platform/graphics/FontData.cpp:
* platform/graphics/FontData.h:
* platform/graphics/FontDescription.cpp:
* platform/graphics/FontFeatureSettings.cpp:
* platform/graphics/FontFeatureSettings.h:
* platform/graphics/FontGlyphs.cpp:
* platform/graphics/FontOrientation.h:
* platform/graphics/FontRenderingMode.h:
* platform/graphics/FontSelector.h:
* platform/graphics/FontWidthVariant.h:
* platform/graphics/FormatConverter.cpp:
* platform/graphics/FormatConverter.h:
* platform/graphics/GeneratedImage.h:
* platform/graphics/Glyph.h:
* platform/graphics/GlyphBuffer.h:
* platform/graphics/GlyphMetricsMap.h:
* platform/graphics/GlyphPage.h:
* platform/graphics/GlyphPageTreeNode.cpp:
* platform/graphics/GlyphPageTreeNode.h:
* platform/graphics/Gradient.cpp:
* platform/graphics/Gradient.h:
* platform/graphics/GradientImage.h:
* platform/graphics/GraphicsContext.h:
* platform/graphics/GraphicsContext3D.cpp:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/GraphicsLayer.cpp:
* platform/graphics/GraphicsLayer.h:
* platform/graphics/GraphicsLayerClient.h:
* platform/graphics/GraphicsTypes.cpp:
* platform/graphics/GraphicsTypes.h:
* platform/graphics/GraphicsTypes3D.h:
* platform/graphics/Image.cpp:
* platform/graphics/Image.h:
* platform/graphics/ImageBuffer.cpp:
* platform/graphics/ImageBuffer.h:
* platform/graphics/ImageBufferData.h:
* platform/graphics/ImageObserver.h:
* platform/graphics/ImageSource.cpp:
* platform/graphics/ImageSource.h:
* platform/graphics/InbandTextTrackPrivate.h:
* platform/graphics/InbandTextTrackPrivateClient.h:
* platform/graphics/IntPoint.cpp:
* platform/graphics/IntPoint.h:
* platform/graphics/IntSize.cpp:
* platform/graphics/IntSize.h:
* platform/graphics/MediaPlayer.cpp:
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
* platform/graphics/MediaSourcePrivateClient.h:
* platform/graphics/NativeImagePtr.h:
* platform/graphics/OpenGLESShims.h:
* platform/graphics/Path.cpp:
* platform/graphics/Path.h:
* platform/graphics/PathTraversalState.h:
* platform/graphics/Pattern.cpp:
* platform/graphics/Pattern.h:
* platform/graphics/PlatformLayer.h:
* platform/graphics/PlatformTimeRanges.cpp:
* platform/graphics/PlatformTimeRanges.h:
* platform/graphics/SegmentedFontData.cpp:
* platform/graphics/SegmentedFontData.h:
* platform/graphics/ShadowBlur.cpp:
* platform/graphics/ShadowBlur.h:
* platform/graphics/SimpleFontData.cpp:
* platform/graphics/SourceBufferPrivateClient.h:
* platform/graphics/StringTruncator.cpp:
* platform/graphics/StringTruncator.h:
* platform/graphics/TrackPrivateBase.h:
* platform/graphics/VideoTrackPrivate.h:
* platform/graphics/WindRule.h:
* platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.h:
* platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
* platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h:
* platform/graphics/avfoundation/cf/CoreMediaSoftLinking.h:
* platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:
* platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.h:
* platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.cpp:
* platform/graphics/avfoundation/cf/InbandTextTrackPrivateLegacyAVCF.h:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp:
* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm:
* platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h:
* platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
* platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
* platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/VideoTrackPrivateMediaSourceAVFObjC.mm:
* platform/graphics/ca/GraphicsLayerCA.cpp:
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/ca/LayerFlushScheduler.cpp:
* platform/graphics/ca/LayerFlushScheduler.h:
* platform/graphics/ca/LayerFlushSchedulerClient.h:
* platform/graphics/ca/PlatformCAAnimation.h:
* platform/graphics/ca/PlatformCAFilters.h:
* platform/graphics/ca/PlatformCALayer.cpp:
* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/PlatformCALayerClient.h:
* platform/graphics/ca/TransformationMatrixCA.cpp:
* platform/graphics/ca/mac/LayerFlushSchedulerMac.cpp:
* platform/graphics/ca/mac/LayerPool.mm:
* platform/graphics/ca/mac/PlatformCAAnimationMac.mm:
* platform/graphics/ca/mac/PlatformCAFiltersMac.h:
* platform/graphics/ca/mac/PlatformCAFiltersMac.mm:
* platform/graphics/ca/mac/PlatformCALayerMac.h:
* platform/graphics/ca/mac/PlatformCALayerMac.mm:
* platform/graphics/ca/mac/WebTiledBackingLayer.h:
* platform/graphics/ca/mac/WebTiledBackingLayer.mm:
* platform/graphics/ca/win/AbstractCACFLayerTreeHost.h:
* platform/graphics/ca/win/CACFLayerTreeHost.cpp:
* platform/graphics/ca/win/CACFLayerTreeHost.h:
* platform/graphics/ca/win/CACFLayerTreeHostClient.h:
* platform/graphics/ca/win/LayerChangesFlusher.cpp:
* platform/graphics/ca/win/LayerChangesFlusher.h:
* platform/graphics/ca/win/LegacyCACFLayerTreeHost.cpp:
* platform/graphics/ca/win/LegacyCACFLayerTreeHost.h:
* platform/graphics/ca/win/PlatformCAAnimationWin.cpp:
* platform/graphics/ca/win/PlatformCAFiltersWin.cpp:
* platform/graphics/ca/win/PlatformCALayerWin.cpp:
* platform/graphics/ca/win/PlatformCALayerWin.h:
* platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:
* platform/graphics/ca/win/PlatformCALayerWinInternal.h:
* platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp:
* platform/graphics/ca/win/WKCACFViewLayerTreeHost.h:
* platform/graphics/cairo/BitmapImageCairo.cpp:
* platform/graphics/cairo/CairoUtilities.cpp:
* platform/graphics/cairo/CairoUtilities.h:
* platform/graphics/cairo/DrawingBufferCairo.cpp:
* platform/graphics/cairo/FloatRectCairo.cpp:
* platform/graphics/cairo/FontCairo.cpp:
* platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:
* platform/graphics/cairo/GradientCairo.cpp:
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
* platform/graphics/cairo/GraphicsContextCairo.cpp:
* platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
* platform/graphics/cairo/ImageBufferCairo.cpp:
* platform/graphics/cairo/ImageBufferDataCairo.h:
* platform/graphics/cairo/ImageCairo.cpp:
* platform/graphics/cairo/PatternCairo.cpp:
* platform/graphics/cairo/PlatformContextCairo.cpp:
* platform/graphics/cairo/PlatformContextCairo.h:
* platform/graphics/cairo/TransformationMatrixCairo.cpp:
* platform/graphics/cg/BitmapImageCG.cpp:
* platform/graphics/cg/ColorCG.cpp:
* platform/graphics/cg/FloatPointCG.cpp:
* platform/graphics/cg/FloatRectCG.cpp:
* platform/graphics/cg/FloatSizeCG.cpp:
* platform/graphics/cg/GradientCG.cpp:
* platform/graphics/cg/GraphicsContext3DCG.cpp:
* platform/graphics/cg/GraphicsContextCG.cpp:
* platform/graphics/cg/GraphicsContextCG.h:
* platform/graphics/cg/GraphicsContextPlatformPrivateCG.h:
* platform/graphics/cg/ImageBufferCG.cpp:
* platform/graphics/cg/ImageBufferDataCG.cpp:
* platform/graphics/cg/ImageBufferDataCG.h:
* platform/graphics/cg/ImageCG.cpp:
* platform/graphics/cg/ImageSourceCG.cpp:
* platform/graphics/cg/IntPointCG.cpp:
* platform/graphics/cg/IntRectCG.cpp:
* platform/graphics/cg/IntSizeCG.cpp:
* platform/graphics/cg/PDFDocumentImage.cpp:
* platform/graphics/cg/PDFDocumentImage.h:
* platform/graphics/cg/PathCG.cpp:
* platform/graphics/cg/PatternCG.cpp:
* platform/graphics/cg/TransformationMatrixCG.cpp:
* platform/graphics/efl/IconEfl.cpp:
* platform/graphics/efl/ImageEfl.cpp:
* platform/graphics/filters/FilterOperation.cpp:
* platform/graphics/filters/FilterOperation.h:
* platform/graphics/filters/FilterOperations.cpp:
* platform/graphics/filters/FilterOperations.h:
* platform/graphics/freetype/FontPlatformDataFreeType.cpp:
* platform/graphics/freetype/GlyphPageTreeNodeFreeType.cpp:
* platform/graphics/freetype/SimpleFontDataFreeType.cpp:
* platform/graphics/gpu/mac/DrawingBufferMac.mm:
* platform/graphics/gtk/GdkCairoUtilities.cpp:
* platform/graphics/gtk/GdkCairoUtilities.h:
* platform/graphics/gtk/IconGtk.cpp:
* platform/graphics/gtk/ImageGtk.cpp:
* platform/graphics/ios/DisplayRefreshMonitorIOS.mm:
* platform/graphics/ios/FontCacheIOS.mm:
* platform/graphics/ios/GraphicsContext3DIOS.h:
* platform/graphics/ios/InbandTextTrackPrivateAVFIOS.h:
* platform/graphics/ios/InbandTextTrackPrivateAVFIOS.mm:
* platform/graphics/ios/MediaPlayerPrivateIOS.h:
* platform/graphics/ios/MediaPlayerPrivateIOS.mm:
* platform/graphics/mac/ColorMac.h:
* platform/graphics/mac/ColorMac.mm:
* platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
* platform/graphics/mac/FloatPointMac.mm:
* platform/graphics/mac/FloatRectMac.mm:
* platform/graphics/mac/FloatSizeMac.mm:
* platform/graphics/mac/FontCacheMac.mm:
* platform/graphics/mac/FontCustomPlatformData.h:
* platform/graphics/mac/GlyphPageTreeNodeMac.cpp:
* platform/graphics/mac/GraphicsContext3DMac.mm:
* platform/graphics/mac/GraphicsContextMac.mm:
* platform/graphics/mac/ImageMac.mm:
* platform/graphics/mac/IntPointMac.mm:
* platform/graphics/mac/IntRectMac.mm:
* platform/graphics/mac/IntSizeMac.mm:
* platform/graphics/mac/MediaPlayerPrivateQTKit.h:
* platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
* platform/graphics/mac/MediaPlayerProxy.h:
* platform/graphics/mac/WebCoreCALayerExtras.h:
* platform/graphics/mac/WebCoreCALayerExtras.mm:
* platform/graphics/mac/WebGLLayer.h:
* platform/graphics/mac/WebGLLayer.mm:
* platform/graphics/mac/WebLayer.h:
* platform/graphics/mac/WebLayer.mm:
* platform/graphics/mac/WebTiledLayer.h:
* platform/graphics/mac/WebTiledLayer.mm:
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
* platform/graphics/opentype/OpenTypeUtilities.cpp:
* platform/graphics/opentype/OpenTypeUtilities.h:
* platform/graphics/transforms/AffineTransform.cpp:
* platform/graphics/transforms/AffineTransform.h:
* platform/graphics/transforms/Matrix3DTransformOperation.cpp:
* platform/graphics/transforms/Matrix3DTransformOperation.h:
* platform/graphics/transforms/PerspectiveTransformOperation.cpp:
* platform/graphics/transforms/PerspectiveTransformOperation.h:
* platform/graphics/transforms/TransformState.cpp:
* platform/graphics/transforms/TransformState.h:
* platform/graphics/transforms/TransformationMatrix.cpp:
* platform/graphics/transforms/TransformationMatrix.h:
* platform/graphics/win/FontCGWin.cpp:
* platform/graphics/win/FontCacheWin.cpp:
* platform/graphics/win/FontCustomPlatformDataCairo.cpp:
* platform/graphics/win/FontWin.cpp:
* platform/graphics/win/FullScreenController.cpp:
* platform/graphics/win/FullScreenController.h:
* platform/graphics/win/FullScreenControllerClient.h:
* platform/graphics/win/GlyphPageTreeNodeCGWin.cpp:
* platform/graphics/win/GlyphPageTreeNodeCairoWin.cpp:
* platform/graphics/win/GraphicsContextCGWin.cpp:
* platform/graphics/win/GraphicsContextCairoWin.cpp:
* platform/graphics/win/GraphicsContextWin.cpp:
* platform/graphics/win/ImageCGWin.cpp:
* platform/graphics/win/ImageCairoWin.cpp:
* platform/graphics/win/ImageWin.cpp:
* platform/graphics/win/IntPointWin.cpp:
* platform/graphics/win/IntRectWin.cpp:
* platform/graphics/win/IntSizeWin.cpp:
* platform/graphics/win/LocalWindowsContext.h:
* platform/graphics/win/MediaPlayerPrivateTaskTimer.cpp:
* platform/graphics/win/MediaPlayerPrivateTaskTimer.h:
* platform/graphics/win/SimpleFontDataCGWin.cpp:
* platform/graphics/win/SimpleFontDataCairoWin.cpp:
* platform/graphics/win/SimpleFontDataWin.cpp:
* platform/graphics/win/TransformationMatrixWin.cpp:
* platform/graphics/wince/FontCacheWinCE.cpp:
* platform/graphics/wince/FontWinCE.cpp:
* platform/graphics/wince/MediaPlayerPrivateWinCE.h:
* platform/graphics/wince/SimpleFontDataWinCE.cpp:
* platform/gtk/CompositionResults.h:
* platform/gtk/CursorGtk.cpp:
* platform/gtk/GtkPluginWidget.cpp:
* platform/gtk/GtkPluginWidget.h:
* platform/gtk/LocalizedStringsGtk.cpp:
* platform/gtk/MIMETypeRegistryGtk.cpp:
* platform/gtk/PlatformKeyboardEventGtk.cpp:
* platform/gtk/PlatformMouseEventGtk.cpp:
* platform/gtk/PlatformScreenGtk.cpp:
* platform/gtk/PlatformWheelEventGtk.cpp:
* platform/gtk/RedirectedXCompositeWindow.cpp:
* platform/gtk/RedirectedXCompositeWindow.h:
* platform/gtk/RenderThemeGtk.h:
* platform/gtk/ScrollViewGtk.cpp:
* platform/gtk/SharedTimerGtk.cpp:
* platform/gtk/TemporaryLinkStubs.cpp:
* platform/gtk/UserAgentGtk.cpp:
* platform/gtk/UserAgentGtk.h:
* platform/gtk/WidgetGtk.cpp:
* platform/gtk/WidgetRenderingContext.cpp:
* platform/image-decoders/ImageDecoder.h:
* platform/image-decoders/cairo/ImageDecoderCairo.cpp:
* platform/image-decoders/gif/GIFImageDecoder.cpp:
* platform/image-decoders/gif/GIFImageDecoder.h:
* platform/image-decoders/gif/GIFImageReader.cpp:
* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
* platform/image-decoders/jpeg/JPEGImageDecoder.h:
* platform/image-decoders/png/PNGImageDecoder.cpp:
* platform/image-decoders/png/PNGImageDecoder.h:
* platform/image-decoders/webp/WEBPImageDecoder.cpp:
* platform/image-decoders/webp/WEBPImageDecoder.h:
* platform/ios/CursorIOS.cpp:
* platform/ios/DragImageIOS.mm:
* platform/ios/KeyEventCodesIOS.h:
* platform/ios/KeyEventIOS.mm:
* platform/ios/PlatformPasteboardIOS.mm:
* platform/ios/PlatformScreenIOS.mm:
* platform/ios/PlatformSpeechSynthesizerIOS.mm:
* platform/ios/RemoteCommandListenerIOS.h:
* platform/ios/RemoteCommandListenerIOS.mm:
* platform/ios/ScrollViewIOS.mm:
* platform/ios/SoundIOS.mm:
* platform/ios/SystemMemory.h:
* platform/ios/SystemMemoryIOS.cpp:
* platform/ios/WebCoreSystemInterfaceIOS.h:
* platform/ios/WebCoreSystemInterfaceIOS.mm:
* platform/ios/WidgetIOS.mm:
* platform/mac/BlockExceptions.h:
* platform/mac/BlockExceptions.mm:
* platform/mac/ContextMenuItemMac.mm:
* platform/mac/ContextMenuMac.mm:
* platform/mac/CursorMac.mm:
* platform/mac/DragDataMac.mm:
* platform/mac/DragImageMac.mm:
* platform/mac/FileSystemMac.mm:
* platform/mac/KeyEventMac.mm:
* platform/mac/LocalCurrentGraphicsContext.h:
* platform/mac/LocalCurrentGraphicsContext.mm:
* platform/mac/LoggingMac.mm:
* platform/mac/MIMETypeRegistryMac.mm:
* platform/mac/MediaTimeMac.cpp:
* platform/mac/MediaTimeMac.h:
* platform/mac/PasteboardMac.mm:
* platform/mac/PlatformClockCA.cpp:
* platform/mac/PlatformClockCA.h:
* platform/mac/PlatformClockCM.h:
* platform/mac/PlatformClockCM.mm:
* platform/mac/PlatformPasteboardMac.mm:
* platform/mac/PlatformScreenMac.mm:
* platform/mac/PlatformSpeechSynthesisMac.mm:
* platform/mac/PlatformSpeechSynthesizerMac.mm:
* platform/mac/ScrollViewMac.mm:
* platform/mac/SharedBufferMac.mm:
* platform/mac/SharedTimerMac.mm:
* platform/mac/SoftLinking.h:
* platform/mac/SoundMac.mm:
* platform/mac/ThreadCheck.mm:
* platform/mac/URLMac.mm:
* platform/mac/WebCoreNSStringExtras.h:
* platform/mac/WebCoreNSStringExtras.mm:
* platform/mac/WebCoreNSURLExtras.h:
* platform/mac/WebCoreNSURLExtras.mm:
* platform/mac/WebCoreObjCExtras.h:
* platform/mac/WebCoreObjCExtras.mm:
* platform/mac/WebCoreSystemInterface.h:
* platform/mac/WebCoreSystemInterface.mm:
* platform/mac/WebCoreView.h:
* platform/mac/WebCoreView.m:
* platform/mac/WebFontCache.h:
* platform/mac/WebFontCache.mm:
* platform/mac/WebWindowAnimation.h:
* platform/mac/WebWindowAnimation.mm:
* platform/mac/WidgetMac.mm:
* platform/mediastream/MediaStreamConstraintsValidationClient.h:
* platform/mediastream/MediaStreamCreationClient.h:
* platform/mediastream/MediaStreamSourceCapabilities.h:
* platform/mediastream/MediaStreamSourceStates.h:
* platform/mediastream/MediaStreamTrackSourcesRequestClient.h:
* platform/mediastream/RTCIceServer.h:
* platform/mediastream/mac/AVAudioCaptureSource.h:
* platform/mediastream/mac/AVAudioCaptureSource.mm:
* platform/mediastream/mac/AVCaptureDeviceManager.h:
* platform/mediastream/mac/AVCaptureDeviceManager.mm:
* platform/mediastream/mac/AVMediaCaptureSource.h:
* platform/mediastream/mac/AVMediaCaptureSource.mm:
* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
* platform/mock/MockMediaStreamCenter.cpp:
* platform/mock/MockMediaStreamCenter.h:
* platform/mock/PlatformSpeechSynthesizerMock.cpp:
* platform/mock/PlatformSpeechSynthesizerMock.h:
* platform/mock/mediasource/MockBox.cpp:
* platform/mock/mediasource/MockBox.h:
* platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
* platform/mock/mediasource/MockMediaPlayerMediaSource.h:
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
* platform/mock/mediasource/MockMediaSourcePrivate.h:
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
* platform/mock/mediasource/MockSourceBufferPrivate.h:
* platform/mock/mediasource/MockTracks.cpp:
* platform/mock/mediasource/MockTracks.h:
* platform/network/AuthenticationChallengeBase.cpp:
* platform/network/AuthenticationChallengeBase.h:
* platform/network/Credential.cpp:
* platform/network/Credential.h:
* platform/network/DNS.h:
* platform/network/DNSResolveQueue.cpp:
* platform/network/DNSResolveQueue.h:
* platform/network/DataURL.cpp:
* platform/network/DataURL.h:
* platform/network/HTTPHeaderMap.h:
* platform/network/HTTPParsers.cpp:
* platform/network/HTTPParsers.h:
* platform/network/PlatformCookieJar.h:
* platform/network/ProtectionSpace.cpp:
* platform/network/ProtectionSpace.h:
* platform/network/ResourceErrorBase.cpp:
* platform/network/ResourceErrorBase.h:
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleClient.h:
* platform/network/ResourceHandleInternal.h:
* platform/network/ResourceRequestBase.cpp:
* platform/network/ResourceRequestBase.h:
* platform/network/ResourceResponseBase.cpp:
* platform/network/ResourceResponseBase.h:
* platform/network/cf/AuthenticationCF.cpp:
* platform/network/cf/AuthenticationCF.h:
* platform/network/cf/AuthenticationChallenge.h:
* platform/network/cf/CookieJarCFNet.cpp:
* platform/network/cf/CookieStorageCFNet.cpp:
* platform/network/cf/DNSCFNet.cpp:
* platform/network/cf/DownloadBundle.h:
* platform/network/cf/FormDataStreamCFNet.cpp:
* platform/network/cf/FormDataStreamCFNet.h:
* platform/network/cf/ResourceError.h:
* platform/network/cf/ResourceErrorCF.cpp:
* platform/network/cf/ResourceHandleCFNet.cpp:
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp:
* platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:
* platform/network/cf/ResourceRequest.h:
* platform/network/cf/ResourceRequestCFNet.cpp:
* platform/network/cf/ResourceRequestCFNet.h:
* platform/network/cf/ResourceResponse.h:
* platform/network/cf/ResourceResponseCFNet.cpp:
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:
* platform/network/curl/AuthenticationChallenge.h:
* platform/network/curl/CurlDownload.cpp:
* platform/network/curl/CurlDownload.h:
* platform/network/curl/DNSCurl.cpp:
* platform/network/curl/DownloadBundle.h:
* platform/network/curl/FormDataStreamCurl.cpp:
* platform/network/curl/FormDataStreamCurl.h:
* platform/network/curl/ResourceError.h:
* platform/network/curl/ResourceHandleCurl.cpp:
* platform/network/curl/ResourceHandleManager.cpp:
* platform/network/curl/ResourceHandleManager.h:
* platform/network/curl/ResourceRequest.h:
* platform/network/curl/ResourceResponse.h:
* platform/network/curl/SSLHandle.cpp:
* platform/network/curl/SSLHandle.h:
* platform/network/gtk/CredentialBackingStore.cpp:
* platform/network/gtk/CredentialBackingStore.h:
* platform/network/ios/WebCoreURLResponseIOS.h:
* platform/network/ios/WebCoreURLResponseIOS.mm:
* platform/network/mac/AuthenticationMac.h:
* platform/network/mac/AuthenticationMac.mm:
* platform/network/mac/CookieJarMac.mm:
* platform/network/mac/CookieStorageMac.mm:
* platform/network/mac/FormDataStreamMac.h:
* platform/network/mac/FormDataStreamMac.mm:
* platform/network/mac/ResourceErrorMac.mm:
* platform/network/mac/ResourceHandleMac.mm:
* platform/network/mac/ResourceRequestMac.mm:
* platform/network/mac/ResourceResponseMac.mm:
* platform/network/mac/WebCoreURLResponse.h:
* platform/network/mac/WebCoreURLResponse.mm:
* platform/network/soup/AuthenticationChallenge.h:
* platform/network/soup/AuthenticationChallengeSoup.cpp:
* platform/network/soup/CookieJarSoup.h:
* platform/network/soup/DNSSoup.cpp:
* platform/network/soup/ResourceError.h:
* platform/network/soup/ResourceErrorSoup.cpp:
* platform/network/soup/ResourceRequest.h:
* platform/network/soup/ResourceResponse.h:
* platform/network/soup/SoupNetworkSession.cpp:
* platform/network/soup/SoupNetworkSession.h:
* platform/network/win/CookieJarWin.cpp:
* platform/network/win/DownloadBundleWin.cpp:
* platform/network/win/ResourceError.h:
* platform/network/win/ResourceHandleWin.cpp:
* platform/network/win/ResourceRequest.h:
* platform/network/win/ResourceResponse.h:
* platform/posix/FileSystemPOSIX.cpp:
* platform/posix/SharedBufferPOSIX.cpp:
* platform/soup/URLSoup.cpp:
* platform/sql/SQLValue.cpp:
* platform/sql/SQLValue.h:
* platform/sql/SQLiteAuthorizer.cpp:
* platform/sql/SQLiteDatabase.cpp:
* platform/sql/SQLiteDatabase.h:
* platform/sql/SQLiteStatement.cpp:
* platform/sql/SQLiteStatement.h:
* platform/sql/SQLiteTransaction.cpp:
* platform/sql/SQLiteTransaction.h:
* platform/text/SuffixTree.h:
* platform/text/TextAllInOne.cpp:
* platform/text/TextBoundaries.cpp:
* platform/text/TextBoundaries.h:
* platform/text/TextCodec.cpp:
* platform/text/TextCodec.h:
* platform/text/TextCodecASCIIFastPath.h:
* platform/text/TextCodecICU.cpp:
* platform/text/TextCodecICU.h:
* platform/text/TextCodecLatin1.cpp:
* platform/text/TextCodecLatin1.h:
* platform/text/TextCodecUTF16.cpp:
* platform/text/TextCodecUTF16.h:
* platform/text/TextCodecUTF8.cpp:
* platform/text/TextCodecUTF8.h:
* platform/text/TextCodecUserDefined.cpp:
* platform/text/TextCodecUserDefined.h:
* platform/text/TextDirection.h:
* platform/text/TextEncoding.cpp:
* platform/text/TextEncoding.h:
* platform/text/TextEncodingRegistry.cpp:
* platform/text/TextEncodingRegistry.h:
* platform/text/TextStream.cpp:
* platform/text/TextStream.h:
* platform/text/UnicodeBidi.h:
* platform/text/mac/CharsetData.h:
* platform/text/mac/TextBoundaries.mm:
* platform/text/mac/TextCodecMac.cpp:
* platform/text/mac/TextCodecMac.h:
* platform/text/mac/character-sets.txt:
* platform/text/mac/make-charset-table.pl:
* platform/text/win/TextCodecWin.h:
* platform/win/BString.cpp:
* platform/win/BString.h:
* platform/win/COMPtr.h:
* platform/win/ClipboardUtilitiesWin.cpp:
* platform/win/ClipboardUtilitiesWin.h:
* platform/win/ContextMenuItemWin.cpp:
* platform/win/ContextMenuWin.cpp:
* platform/win/CursorWin.cpp:
* platform/win/DragDataWin.cpp:
* platform/win/DragImageCGWin.cpp:
* platform/win/DragImageCairoWin.cpp:
* platform/win/DragImageWin.cpp:
* platform/win/FileSystemWin.cpp:
* platform/win/GDIObjectCounter.cpp:
* platform/win/GDIObjectCounter.h:
* platform/win/HWndDC.h:
* platform/win/KeyEventWin.cpp:
* platform/win/LanguageWin.cpp:
* platform/win/MIMETypeRegistryWin.cpp:
* platform/win/PasteboardWin.cpp:
* platform/win/PlatformMouseEventWin.cpp:
* platform/win/PlatformScreenWin.cpp:
* platform/win/SharedBufferWin.cpp:
* platform/win/SharedTimerWin.cpp:
* platform/win/SoftLinking.h:
* platform/win/SoundWin.cpp:
* platform/win/StructuredExceptionHandlerSuppressor.cpp:
* platform/win/TemporaryLinkStubs.cpp:
* platform/win/WCDataObject.cpp:
* platform/win/WCDataObject.h:
* platform/win/WebCoreTextRenderer.cpp:
* platform/win/WebCoreTextRenderer.h:
* platform/win/WheelEventWin.cpp:
* platform/win/WidgetWin.cpp:
* platform/win/WindowMessageBroadcaster.cpp:
* platform/win/WindowMessageBroadcaster.h:
* platform/win/WindowMessageListener.h:
* platform/win/WindowsTouch.h:
* platform/win/makesafeseh.asm:
* plugins/PluginDatabase.cpp:
* plugins/PluginDatabase.h:
* plugins/PluginDebug.cpp:
* plugins/PluginDebug.h:
* plugins/PluginPackage.cpp:
* plugins/PluginPackage.h:
* plugins/PluginQuirkSet.h:
* plugins/PluginStream.cpp:
* plugins/PluginStream.h:
* plugins/PluginView.cpp:
* plugins/PluginView.h:
* plugins/efl/PluginPackageEfl.cpp:
* plugins/efl/PluginViewEfl.cpp:
* plugins/gtk/PluginPackageGtk.cpp:
* plugins/gtk/PluginViewGtk.cpp:
* plugins/mac/PluginPackageMac.cpp:
* plugins/mac/PluginViewMac.mm:
* plugins/npapi.cpp:
* plugins/npfunctions.h:
* plugins/npruntime.h:
* plugins/win/PluginDatabaseWin.cpp:
* plugins/win/PluginPackageWin.cpp:
* plugins/win/PluginViewWin.cpp:
* plugins/x11/PluginViewX11.cpp:
* rendering/EllipsisBox.cpp:
* rendering/EllipsisBox.h:
* rendering/FilterEffectRenderer.cpp:
* rendering/FilterEffectRenderer.h:
* rendering/HitTestLocation.h:
* rendering/HitTestRequest.h:
* rendering/HitTestResult.h:
* rendering/HitTestingTransformState.cpp:
* rendering/HitTestingTransformState.h:
* rendering/RenderBoxRegionInfo.h:
* rendering/RenderButton.cpp:
* rendering/RenderButton.h:
* rendering/RenderDeprecatedFlexibleBox.cpp:
* rendering/RenderDeprecatedFlexibleBox.h:
* rendering/RenderFieldset.cpp:
* rendering/RenderFrameBase.cpp:
* rendering/RenderFrameBase.h:
* rendering/RenderFrameSet.cpp:
* rendering/RenderGeometryMap.cpp:
* rendering/RenderGeometryMap.h:
* rendering/RenderGrid.cpp:
* rendering/RenderGrid.h:
* rendering/RenderHTMLCanvas.cpp:
* rendering/RenderHTMLCanvas.h:
* rendering/RenderIFrame.cpp:
* rendering/RenderIFrame.h:
* rendering/RenderLayerBacking.cpp:
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
* rendering/RenderLayerCompositor.h:
* rendering/RenderLineBoxList.cpp:
* rendering/RenderLineBoxList.h:
* rendering/RenderListBox.cpp:
* rendering/RenderListBox.h:
* rendering/RenderMarquee.h:
* rendering/RenderMedia.cpp:
* rendering/RenderMedia.h:
* rendering/RenderMultiColumnFlowThread.cpp:
* rendering/RenderMultiColumnFlowThread.h:
* rendering/RenderMultiColumnSet.cpp:
* rendering/RenderMultiColumnSet.h:
* rendering/RenderNamedFlowThread.cpp:
* rendering/RenderNamedFlowThread.h:
* rendering/RenderRegionSet.cpp:
* rendering/RenderRegionSet.h:
* rendering/RenderReplica.cpp:
* rendering/RenderReplica.h:
* rendering/RenderTheme.cpp:
* rendering/RenderTheme.h:
* rendering/RenderThemeMac.h:
* rendering/RenderThemeWin.h:
* rendering/RenderThemeWinCE.cpp:
* rendering/RenderThemeWinCE.h:
* rendering/RenderTreeAsText.cpp:
* rendering/RenderTreeAsText.h:
* rendering/RenderVTTCue.cpp:
* rendering/RenderVTTCue.h:
* rendering/RenderVideo.cpp:
* rendering/RenderVideo.h:
* rendering/RenderView.h:
* rendering/style/SVGRenderStyle.cpp:
* rendering/style/SVGRenderStyle.h:
* rendering/style/SVGRenderStyleDefs.cpp:
* rendering/style/SVGRenderStyleDefs.h:
* rendering/style/StyleFilterData.cpp:
* rendering/style/StyleFilterData.h:
* rendering/style/StylePendingImage.h:
* rendering/svg/RenderSVGBlock.cpp:
* rendering/svg/RenderSVGBlock.h:
* rendering/svg/RenderSVGForeignObject.cpp:
* rendering/svg/RenderSVGForeignObject.h:
* rendering/svg/RenderSVGImage.cpp:
* rendering/svg/RenderSVGInline.h:
* rendering/svg/RenderSVGInlineText.cpp:
* rendering/svg/RenderSVGPath.h:
* rendering/svg/RenderSVGShape.h:
* rendering/svg/RenderSVGTSpan.h:
* rendering/svg/RenderSVGText.cpp:
* rendering/svg/RenderSVGText.h:
* rendering/svg/SVGInlineFlowBox.cpp:
* rendering/svg/SVGInlineFlowBox.h:
* rendering/svg/SVGRenderTreeAsText.cpp:
* rendering/svg/SVGRenderTreeAsText.h:
* rendering/svg/SVGRootInlineBox.cpp:
* rendering/svg/SVGRootInlineBox.h:
* storage/StorageEventDispatcher.h:
* svg/SVGException.cpp:
* svg/graphics/SVGImageChromeClient.h:
* workers/Worker.cpp:
* workers/Worker.h:
* workers/Worker.idl:
* workers/WorkerEventQueue.cpp:
* workers/WorkerEventQueue.h:
* workers/WorkerGlobalScope.cpp:
* workers/WorkerGlobalScope.h:
* workers/WorkerGlobalScope.idl:
* workers/WorkerLocation.cpp:
* workers/WorkerLocation.h:
* workers/WorkerLocation.idl:
* workers/WorkerMessagingProxy.cpp:
* workers/WorkerMessagingProxy.h:
* workers/WorkerScriptLoader.cpp:
* workers/WorkerScriptLoader.h:
* workers/WorkerScriptLoaderClient.h:
* workers/WorkerThread.cpp:
* workers/WorkerThread.h:
* xml/DOMParser.h:
* xml/DOMParser.idl:
* xml/NativeXPathNSResolver.cpp:
* xml/NativeXPathNSResolver.h:
* xml/XMLHttpRequest.idl:
* xml/XMLHttpRequestException.cpp:
* xml/XMLHttpRequestException.h:
* xml/XMLHttpRequestException.idl:
* xml/XMLHttpRequestProgressEvent.h:
* xml/XMLHttpRequestProgressEvent.idl:
* xml/XMLHttpRequestUpload.idl:
* xml/XMLSerializer.h:
* xml/XMLSerializer.idl:
* xml/XPathEvaluator.cpp:
* xml/XPathEvaluator.h:
* xml/XPathEvaluator.idl:
* xml/XPathException.cpp:
* xml/XPathException.h:
* xml/XPathException.idl:
* xml/XPathExpression.idl:
* xml/XPathExpressionNode.cpp:
* xml/XPathNSResolver.cpp:
* xml/XPathNSResolver.h:
* xml/XPathNSResolver.idl:
* xml/XPathNodeSet.h:
* xml/XPathResult.idl:
* xml/XPathUtil.h:
* xml/XPathVariableReference.cpp:
* xml/XSLTProcessor.idl:
* xml/XSLTUnicodeSort.cpp:
* xml/XSLTUnicodeSort.h:
Source/WebInspectorUI: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* APPLE_IMAGES_LICENSE.rtf:
* UserInterface/Base/DOMUtilities.js:
* UserInterface/Models/Color.js:
* UserInterface/Views/ConsoleCommand.js:
* UserInterface/Views/ConsoleCommandResult.js:
* UserInterface/Views/ConsoleGroup.js:
* UserInterface/Views/ConsoleMessage.js:
* UserInterface/Views/ConsoleMessageImpl.js:
* UserInterface/Views/DOMTreeElement.js:
* UserInterface/Views/DOMTreeOutline.js:
* UserInterface/Views/DOMTreeUpdater.js:
* UserInterface/Views/GradientSlider.css:
* UserInterface/Views/GradientSlider.js:
* UserInterface/Views/TreeOutline.js:
Source/WebKit: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* scripts/generate-webkitversion.pl:
(printLicenseHeader):
Source/WebKit/efl: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* WebCoreSupport/ChromeClientEfl.cpp:
* WebCoreSupport/ContextMenuClientEfl.cpp:
* WebCoreSupport/ContextMenuClientEfl.h:
* WebCoreSupport/DeviceMotionClientEfl.cpp:
* WebCoreSupport/DeviceOrientationClientEfl.cpp:
* WebCoreSupport/DragClientEfl.cpp:
* WebCoreSupport/EditorClientEfl.h:
* WebCoreSupport/FrameLoaderClientEfl.cpp:
* WebCoreSupport/FrameLoaderClientEfl.h:
* WebCoreSupport/FrameNetworkingContextEfl.cpp:
* WebCoreSupport/FrameNetworkingContextEfl.h:
* WebCoreSupport/InspectorClientEfl.h:
* WebCoreSupport/NavigatorContentUtilsClientEfl.cpp:
* WebCoreSupport/NavigatorContentUtilsClientEfl.h:
* WebCoreSupport/NetworkInfoClientEfl.cpp:
Source/WebKit/gtk: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* WebCoreSupport/ContextMenuClientGtk.h:
* WebCoreSupport/DocumentLoaderGtk.cpp:
* WebCoreSupport/DocumentLoaderGtk.h:
* WebCoreSupport/EditorClientGtk.h:
* WebCoreSupport/FrameLoaderClientGtk.h:
* WebCoreSupport/InspectorClientGtk.h:
* WebCoreSupport/TextCheckerClientGtk.h:
Source/WebKit/ios: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* WebCoreSupport/WebCaretChangeListener.h:
* WebCoreSupport/WebInspectorClientIOS.mm:
* WebView/WebPlainWhiteView.h:
* WebView/WebPlainWhiteView.mm:
Source/WebKit/mac: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* Carbon/CarbonUtils.h:
* Carbon/CarbonUtils.m:
* Carbon/CarbonWindowAdapter.h:
* Carbon/CarbonWindowAdapter.mm:
* Carbon/CarbonWindowContentView.h:
* Carbon/CarbonWindowContentView.m:
* Carbon/CarbonWindowFrame.h:
* Carbon/CarbonWindowFrame.m:
* Carbon/HIViewAdapter.h:
* Carbon/HIViewAdapter.m:
* Carbon/HIWebView.h:
* Carbon/HIWebView.mm:
* DOM/WebDOMOperations.h:
* DOM/WebDOMOperations.mm:
* DOM/WebDOMOperationsInternal.h:
* DOM/WebDOMOperationsPrivate.h:
* DefaultDelegates/WebDefaultContextMenuDelegate.h:
* DefaultDelegates/WebDefaultContextMenuDelegate.mm:
* DefaultDelegates/WebDefaultEditingDelegate.h:
* DefaultDelegates/WebDefaultEditingDelegate.m:
* DefaultDelegates/WebDefaultPolicyDelegate.h:
* DefaultDelegates/WebDefaultPolicyDelegate.m:
* DefaultDelegates/WebDefaultUIDelegate.h:
* DefaultDelegates/WebDefaultUIDelegate.m:
* History/WebBackForwardList.h:
* History/WebBackForwardList.mm:
* History/WebBackForwardListInternal.h:
* History/WebBackForwardListPrivate.h:
* History/WebHistory.h:
* History/WebHistory.mm:
* History/WebHistoryInternal.h:
* History/WebHistoryItem.h:
* History/WebHistoryItem.mm:
* History/WebHistoryItemInternal.h:
* History/WebHistoryItemPrivate.h:
* History/WebHistoryPrivate.h:
* History/WebURLsWithTitles.h:
* History/WebURLsWithTitles.m:
* MigrateHeaders.make:
* Misc/OldWebAssertions.c:
* Misc/WebCache.h:
* Misc/WebCache.mm:
* Misc/WebCoreStatistics.h:
* Misc/WebCoreStatistics.mm:
* Misc/WebDownload.h:
* Misc/WebDownload.mm:
* Misc/WebDownloadInternal.h:
* Misc/WebElementDictionary.h:
* Misc/WebElementDictionary.mm:
* Misc/WebIconDatabase.h:
* Misc/WebIconDatabase.mm:
* Misc/WebIconDatabaseDelegate.h:
* Misc/WebIconDatabaseInternal.h:
* Misc/WebIconDatabasePrivate.h:
* Misc/WebKit.h:
* Misc/WebKitErrors.h:
* Misc/WebKitErrors.m:
* Misc/WebKitErrorsPrivate.h:
* Misc/WebKitLogging.h:
* Misc/WebKitLogging.m:
* Misc/WebKitNSStringExtras.h:
* Misc/WebKitNSStringExtras.mm:
* Misc/WebKitStatistics.h:
* Misc/WebKitStatistics.m:
* Misc/WebKitStatisticsPrivate.h:
* Misc/WebKitSystemBits.h:
* Misc/WebKitSystemBits.m:
* Misc/WebKitVersionChecks.h:
* Misc/WebKitVersionChecks.m:
* Misc/WebLocalizableStrings.h:
* Misc/WebLocalizableStrings.mm:
* Misc/WebNSArrayExtras.h:
* Misc/WebNSArrayExtras.m:
* Misc/WebNSControlExtras.h:
* Misc/WebNSControlExtras.m:
* Misc/WebNSDataExtras.h:
* Misc/WebNSDataExtras.m:
* Misc/WebNSDataExtrasPrivate.h:
* Misc/WebNSDictionaryExtras.h:
* Misc/WebNSDictionaryExtras.m:
* Misc/WebNSEventExtras.h:
* Misc/WebNSEventExtras.m:
* Misc/WebNSFileManagerExtras.h:
* Misc/WebNSFileManagerExtras.mm:
* Misc/WebNSImageExtras.h:
* Misc/WebNSImageExtras.m:
* Misc/WebNSObjectExtras.h:
* Misc/WebNSObjectExtras.mm:
* Misc/WebNSPasteboardExtras.h:
* Misc/WebNSPasteboardExtras.mm:
* Misc/WebNSPrintOperationExtras.h:
* Misc/WebNSPrintOperationExtras.m:
* Misc/WebNSURLExtras.h:
* Misc/WebNSURLExtras.mm:
* Misc/WebNSURLRequestExtras.h:
* Misc/WebNSURLRequestExtras.m:
* Misc/WebNSUserDefaultsExtras.h:
* Misc/WebNSUserDefaultsExtras.mm:
* Misc/WebNSViewExtras.h:
* Misc/WebNSViewExtras.m:
* Misc/WebNSWindowExtras.h:
* Misc/WebNSWindowExtras.m:
* Misc/WebStringTruncator.h:
* Misc/WebStringTruncator.mm:
* Misc/WebTypesInternal.h:
* Panels/WebAuthenticationPanel.h:
* Panels/WebAuthenticationPanel.m:
* Panels/WebPanelAuthenticationHandler.h:
* Panels/WebPanelAuthenticationHandler.m:
* Plugins/Hosted/ProxyRuntimeObject.h:
* Plugins/Hosted/ProxyRuntimeObject.mm:
* Plugins/WebBaseNetscapePluginView.h:
* Plugins/WebBaseNetscapePluginView.mm:
* Plugins/WebBasePluginPackage.h:
* Plugins/WebBasePluginPackage.mm:
* Plugins/WebJavaPlugIn.h:
* Plugins/WebNetscapeContainerCheckContextInfo.h:
* Plugins/WebNetscapeContainerCheckPrivate.h:
* Plugins/WebNetscapeContainerCheckPrivate.mm:
* Plugins/WebNetscapePluginPackage.h:
* Plugins/WebNetscapePluginPackage.mm:
* Plugins/WebNetscapePluginStream.h:
* Plugins/WebNetscapePluginStream.mm:
* Plugins/WebNetscapePluginView.h:
* Plugins/WebNetscapePluginView.mm:
* Plugins/WebPlugin.h:
* Plugins/WebPluginContainer.h:
* Plugins/WebPluginContainerCheck.h:
* Plugins/WebPluginContainerCheck.mm:
* Plugins/WebPluginContainerPrivate.h:
* Plugins/WebPluginController.h:
* Plugins/WebPluginController.mm:
* Plugins/WebPluginDatabase.h:
* Plugins/WebPluginDatabase.mm:
* Plugins/WebPluginPackage.h:
* Plugins/WebPluginPackage.mm:
* Plugins/WebPluginRequest.h:
* Plugins/WebPluginRequest.m:
* Plugins/WebPluginViewFactory.h:
* Plugins/WebPluginViewFactoryPrivate.h:
* Plugins/WebPluginsPrivate.h:
* Plugins/WebPluginsPrivate.m:
* Plugins/npapi.mm:
* Storage/WebDatabaseManager.mm:
* Storage/WebDatabaseManagerInternal.h:
* Storage/WebDatabaseManagerPrivate.h:
* WebCoreSupport/SearchPopupMenuMac.mm:
* WebCoreSupport/WebAlternativeTextClient.h:
* WebCoreSupport/WebAlternativeTextClient.mm:
* WebCoreSupport/WebCachedFramePlatformData.h:
* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
* WebCoreSupport/WebContextMenuClient.h:
* WebCoreSupport/WebContextMenuClient.mm:
* WebCoreSupport/WebDragClient.h:
* WebCoreSupport/WebDragClient.mm:
* WebCoreSupport/WebEditorClient.h:
* WebCoreSupport/WebEditorClient.mm:
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
* WebCoreSupport/WebIconDatabaseClient.h:
* WebCoreSupport/WebIconDatabaseClient.mm:
* WebCoreSupport/WebInspectorClient.h:
* WebCoreSupport/WebInspectorClient.mm:
* WebCoreSupport/WebJavaScriptTextInputPanel.h:
* WebCoreSupport/WebJavaScriptTextInputPanel.m:
* WebCoreSupport/WebSecurityOrigin.mm:
* WebCoreSupport/WebSecurityOriginInternal.h:
* WebCoreSupport/WebSecurityOriginPrivate.h:
* WebCoreSupport/WebSystemInterface.h:
* WebCoreSupport/WebSystemInterface.mm:
* WebInspector/WebInspector.h:
* WebInspector/WebInspector.mm:
* WebInspector/WebInspectorPrivate.h:
* WebInspector/WebNodeHighlight.h:
* WebInspector/WebNodeHighlight.mm:
* WebInspector/WebNodeHighlightView.h:
* WebInspector/WebNodeHighlightView.mm:
* WebInspector/WebNodeHighlighter.h:
* WebInspector/WebNodeHighlighter.mm:
* WebKitLegacy/MigrateHeadersToLegacy.make:
* WebKitPrefix.h:
* WebView/WebArchive.h:
* WebView/WebArchive.mm:
* WebView/WebArchiveInternal.h:
* WebView/WebClipView.h:
* WebView/WebClipView.mm:
* WebView/WebDashboardRegion.h:
* WebView/WebDashboardRegion.mm:
* WebView/WebDataSource.h:
* WebView/WebDataSource.mm:
* WebView/WebDataSourceInternal.h:
* WebView/WebDataSourcePrivate.h:
* WebView/WebDelegateImplementationCaching.h:
* WebView/WebDelegateImplementationCaching.mm:
* WebView/WebDocument.h:
* WebView/WebDocumentInternal.h:
* WebView/WebDocumentLoaderMac.h:
* WebView/WebDocumentLoaderMac.mm:
* WebView/WebDocumentPrivate.h:
* WebView/WebDynamicScrollBarsViewInternal.h:
* WebView/WebEditingDelegate.h:
* WebView/WebEditingDelegatePrivate.h:
* WebView/WebFormDelegate.h:
* WebView/WebFormDelegate.m:
* WebView/WebFormDelegatePrivate.h:
* WebView/WebFrame.h:
* WebView/WebFrame.mm:
* WebView/WebFrameInternal.h:
* WebView/WebFrameLoadDelegate.h:
* WebView/WebFrameLoadDelegatePrivate.h:
* WebView/WebFramePrivate.h:
* WebView/WebFrameView.h:
* WebView/WebFrameView.mm:
* WebView/WebFrameViewInternal.h:
* WebView/WebFrameViewPrivate.h:
* WebView/WebHTMLRepresentation.h:
* WebView/WebHTMLRepresentation.mm:
* WebView/WebHTMLRepresentationPrivate.h:
* WebView/WebHTMLView.h:
* WebView/WebHTMLView.mm:
* WebView/WebHTMLViewInternal.h:
* WebView/WebHTMLViewPrivate.h:
* WebView/WebNotification.h:
* WebView/WebNotification.mm:
* WebView/WebNotificationInternal.h:
* WebView/WebPDFRepresentation.h:
* WebView/WebPDFRepresentation.mm:
* WebView/WebPDFView.h:
* WebView/WebPDFView.mm:
* WebView/WebPolicyDelegate.h:
* WebView/WebPolicyDelegate.mm:
* WebView/WebPolicyDelegatePrivate.h:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.h:
* WebView/WebPreferences.mm:
* WebView/WebPreferencesPrivate.h:
* WebView/WebRenderLayer.h:
* WebView/WebRenderLayer.mm:
* WebView/WebRenderNode.h:
* WebView/WebRenderNode.mm:
* WebView/WebResource.h:
* WebView/WebResource.mm:
* WebView/WebResourceInternal.h:
* WebView/WebResourceLoadDelegate.h:
* WebView/WebResourceLoadDelegatePrivate.h:
* WebView/WebResourcePrivate.h:
* WebView/WebScriptDebugDelegate.h:
* WebView/WebScriptDebugDelegate.mm:
* WebView/WebScriptDebugger.h:
* WebView/WebScriptDebugger.mm:
* WebView/WebTextCompletionController.mm:
* WebView/WebUIDelegate.h:
* WebView/WebUIDelegatePrivate.h:
* WebView/WebView.h:
* WebView/WebView.mm:
* WebView/WebViewData.h:
* WebView/WebViewData.mm:
* WebView/WebViewInternal.h:
* WebView/WebViewPrivate.h:
Source/WebKit/win: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* CFDictionaryPropertyBag.cpp:
* CFDictionaryPropertyBag.h:
* CodeAnalysisConfig.h:
* DOMCSSClasses.cpp:
* DOMCSSClasses.h:
* DOMCoreClasses.cpp:
* DOMCoreClasses.h:
* DOMEventsClasses.cpp:
* DOMEventsClasses.h:
* DOMHTMLClasses.cpp:
* DOMHTMLClasses.h:
* DefaultDownloadDelegate.cpp:
* DefaultDownloadDelegate.h:
* DefaultPolicyDelegate.cpp:
* DefaultPolicyDelegate.h:
* ForEachCoClass.cpp:
* ForEachCoClass.h:
* FullscreenVideoController.cpp:
* FullscreenVideoController.h:
* Interfaces/AccessibilityDelegate.idl:
* Interfaces/DOMCSS.idl:
* Interfaces/DOMCore.idl:
* Interfaces/DOMEvents.idl:
* Interfaces/DOMExtensions.idl:
* Interfaces/DOMHTML.idl:
* Interfaces/DOMPrivate.idl:
* Interfaces/DOMRange.idl:
* Interfaces/DOMWindow.idl:
* Interfaces/IGEN_DOMObject.idl:
* Interfaces/IWebArchive.idl:
* Interfaces/IWebBackForwardList.idl:
* Interfaces/IWebBackForwardListPrivate.idl:
* Interfaces/IWebCache.idl:
* Interfaces/IWebDataSource.idl:
* Interfaces/IWebDatabaseManager.idl:
* Interfaces/IWebDocument.idl:
* Interfaces/IWebDownload.idl:
* Interfaces/IWebEditingDelegate.idl:
* Interfaces/IWebError.idl:
* Interfaces/IWebErrorPrivate.idl:
* Interfaces/IWebFormDelegate.idl:
* Interfaces/IWebFrame.idl:
* Interfaces/IWebFrameLoadDelegate.idl:
* Interfaces/IWebFrameLoadDelegatePrivate.idl:
* Interfaces/IWebFrameLoadDelegatePrivate2.idl:
* Interfaces/IWebFramePrivate.idl:
* Interfaces/IWebFrameView.idl:
* Interfaces/IWebHTMLRepresentation.idl:
* Interfaces/IWebHTTPURLResponse.idl:
* Interfaces/IWebHistory.idl:
* Interfaces/IWebHistoryDelegate.idl:
* Interfaces/IWebHistoryItem.idl:
* Interfaces/IWebHistoryItemPrivate.idl:
* Interfaces/IWebHistoryPrivate.idl:
* Interfaces/IWebIconDatabase.idl:
* Interfaces/IWebInspector.idl:
* Interfaces/IWebInspectorPrivate.idl:
* Interfaces/IWebJavaScriptCollector.idl:
* Interfaces/IWebKitStatistics.idl:
* Interfaces/IWebMutableURLRequest.idl:
* Interfaces/IWebMutableURLRequestPrivate.idl:
* Interfaces/IWebNavigationData.idl:
* Interfaces/IWebNotification.idl:
* Interfaces/IWebNotificationCenter.idl:
* Interfaces/IWebNotificationObserver.idl:
* Interfaces/IWebPolicyDelegate.idl:
* Interfaces/IWebPolicyDelegatePrivate.idl:
* Interfaces/IWebPreferences.idl:
* Interfaces/IWebPreferencesPrivate.idl:
* Interfaces/IWebResource.idl:
* Interfaces/IWebResourceLoadDelegate.idl:
* Interfaces/IWebResourceLoadDelegatePrivate.idl:
* Interfaces/IWebResourceLoadDelegatePrivate2.idl:
* Interfaces/IWebScriptObject.idl:
* Interfaces/IWebSecurityOrigin.idl:
* Interfaces/IWebSerializedJSValuePrivate.idl:
* Interfaces/IWebTextRenderer.idl:
* Interfaces/IWebUIDelegate.idl:
* Interfaces/IWebUIDelegatePrivate.idl:
* Interfaces/IWebURLAuthenticationChallenge.idl:
* Interfaces/IWebURLRequest.idl:
* Interfaces/IWebURLResponse.idl:
* Interfaces/IWebURLResponsePrivate.idl:
* Interfaces/IWebUndoManager.idl:
* Interfaces/IWebUndoTarget.idl:
* Interfaces/IWebView.idl:
* Interfaces/IWebViewPrivate.idl:
* Interfaces/WebKit.idl:
* Interfaces/WebScrollbarTypes.idl:
* MarshallingHelpers.cpp:
* MarshallingHelpers.h:
* MemoryStream.cpp:
* MemoryStream.h:
* ProgIDMacros.h:
* WebActionPropertyBag.cpp:
* WebActionPropertyBag.h:
* WebBackForwardList.cpp:
* WebBackForwardList.h:
* WebCache.cpp:
* WebCache.h:
* WebCachedFramePlatformData.h:
* WebCoreSupport/WebChromeClient.cpp:
* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebContextMenuClient.cpp:
* WebCoreSupport/WebContextMenuClient.h:
* WebCoreSupport/WebDragClient.cpp:
* WebCoreSupport/WebDragClient.h:
* WebCoreSupport/WebEditorClient.cpp:
* WebCoreSupport/WebEditorClient.h:
* WebCoreSupport/WebFrameLoaderClient.cpp:
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebInspectorClient.cpp:
* WebCoreSupport/WebInspectorClient.h:
* WebCoreSupport/WebInspectorDelegate.cpp:
* WebCoreSupport/WebInspectorDelegate.h:
* WebDataSource.cpp:
* WebDataSource.h:
* WebDatabaseManager.cpp:
* WebDatabaseManager.h:
* WebDocumentLoader.cpp:
* WebDocumentLoader.h:
* WebDownload.cpp:
* WebDownload.h:
* WebDownloadCFNet.cpp:
* WebDownloadCurl.cpp:
* WebDropSource.cpp:
* WebDropSource.h:
* WebElementPropertyBag.cpp:
* WebElementPropertyBag.h:
* WebError.cpp:
* WebError.h:
* WebFrame.cpp:
* WebFrame.h:
* WebFramePolicyListener.cpp:
* WebFramePolicyListener.h:
* WebHTMLRepresentation.cpp:
* WebHTMLRepresentation.h:
* WebHistory.cpp:
* WebHistory.h:
* WebHistoryItem.cpp:
* WebHistoryItem.h:
* WebIconDatabase.cpp:
* WebIconDatabase.h:
* WebInspector.cpp:
* WebInspector.h:
* WebJavaScriptCollector.cpp:
* WebJavaScriptCollector.h:
* WebKitCOMAPI.cpp:
* WebKitCOMAPI.h:
* WebKitClassFactory.cpp:
* WebKitClassFactory.h:
* WebKitDLL.cpp:
* WebKitDLL.h:
* WebKitGraphics.cpp:
* WebKitGraphics.h:
* WebKitLogging.cpp:
* WebKitLogging.h:
* WebKitPrefix.cpp:
* WebKitPrefix.h:
* WebKitStatistics.cpp:
* WebKitStatistics.h:
* WebKitStatisticsPrivate.h:
* WebKitSystemBits.cpp:
* WebKitSystemBits.h:
* WebLocalizableStrings.cpp:
* WebLocalizableStrings.h:
* WebMutableURLRequest.cpp:
* WebMutableURLRequest.h:
* WebNavigationData.cpp:
* WebNavigationData.h:
* WebNodeHighlight.cpp:
* WebNodeHighlight.h:
* WebNotification.cpp:
* WebNotification.h:
* WebNotificationCenter.cpp:
* WebNotificationCenter.h:
* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
* WebPreferences.h:
* WebResource.cpp:
* WebResource.h:
* WebScriptObject.cpp:
* WebScriptObject.h:
* WebSecurityOrigin.cpp:
* WebSecurityOrigin.h:
* WebTextRenderer.cpp:
* WebTextRenderer.h:
* WebURLAuthenticationChallenge.cpp:
* WebURLAuthenticationChallenge.h:
* WebURLAuthenticationChallengeSender.cpp:
* WebURLAuthenticationChallengeSender.h:
* WebURLAuthenticationChallengeSenderCFNet.cpp:
* WebURLAuthenticationChallengeSenderCurl.cpp:
* WebURLCredential.cpp:
* WebURLCredential.h:
* WebURLProtectionSpace.cpp:
* WebURLProtectionSpace.h:
* WebURLResponse.cpp:
* WebURLResponse.h:
* WebView.cpp:
* WebView.h:
Source/WebKit2: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* Shared/AsyncRequest.cpp:
* Shared/AsyncRequest.h:
* Shared/ContextMenuContextData.cpp:
* Shared/ContextMenuContextData.h:
* Shared/Databases/DatabaseProcessCreationParameters.h:
* Shared/Databases/IndexedDB/IDBUtilities.cpp:
* Shared/Databases/IndexedDB/IDBUtilities.h:
* Shared/mac/RemoteLayerBackingStore.h:
* Shared/mac/RemoteLayerBackingStore.mm:
* UIProcess/API/Cocoa/WKBackForwardList.h:
* UIProcess/API/Cocoa/WKBackForwardListItem.h: Removed.
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigationAction.h: Removed.
* UIProcess/API/Cocoa/WKNavigationDelegate.h:
* UIProcess/API/Cocoa/WKNavigationResponse.h: Removed.
* UIProcess/API/Cocoa/WKNavigationTrigger.h: Added.
(NS_ENUM):
* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.cpp:
* UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.h:
* UIProcess/CoordinatedGraphics/WKCoordinatedSceneAPICast.h:
* WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
* WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
* WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
* WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
* WebProcess/Databases/WebToDatabaseProcessConnection.h:
* WebProcess/WebCoreSupport/WebAlternativeTextClient.h:
* WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:
* WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
* WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
* WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
* WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
* WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
* WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:
* WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:
Source/WTF: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* wtf/ASCIICType.h:
* wtf/AVLTree.h:
* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Atomics.cpp:
* wtf/Atomics.h:
* wtf/AutodrainedPool.h:
* wtf/AutodrainedPoolMac.mm:
* wtf/BoundsCheckedPointer.h:
* wtf/CryptographicUtilities.cpp:
* wtf/CryptographicallyRandomNumber.h:
* wtf/CurrentTime.h:
* wtf/Deque.h:
* wtf/DisallowCType.h:
* wtf/ExportMacros.h:
* wtf/FeatureDefines.h:
* wtf/GetPtr.h:
* wtf/HashIterators.h:
* wtf/Locker.h:
* wtf/MainThread.cpp:
* wtf/MainThread.h:
* wtf/MathExtras.h:
* wtf/MediaTime.cpp:
* wtf/MediaTime.h:
* wtf/MessageQueue.h:
* wtf/MetaAllocator.cpp:
* wtf/MetaAllocator.h:
* wtf/MetaAllocatorHandle.h:
* wtf/OSRandomSource.cpp:
* wtf/OSRandomSource.h:
* wtf/Platform.h:
* wtf/RandomNumber.cpp:
* wtf/RandomNumber.h:
* wtf/RandomNumberSeed.h:
* wtf/RedBlackTree.h:
* wtf/RunLoopTimer.h:
* wtf/RunLoopTimerCF.cpp:
* wtf/SchedulePair.h:
* wtf/SchedulePairCF.cpp:
* wtf/SchedulePairMac.mm:
* wtf/SegmentedVector.h:
* wtf/StackBounds.h:
* wtf/StaticConstructors.h:
* wtf/StringExtras.h:
* wtf/ThreadFunctionInvocation.h:
* wtf/ThreadSafeRefCounted.h:
* wtf/ThreadSpecific.h:
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
* wtf/ThreadingWin.cpp:
* wtf/WTFThreadData.cpp:
* wtf/WTFThreadData.h:
* wtf/efl/OwnPtrEfl.cpp:
* wtf/mac/MainThreadMac.mm:
* wtf/text/AtomicStringHash.h:
* wtf/text/AtomicStringImpl.h:
* wtf/text/Base64.h:
* wtf/text/CString.cpp:
* wtf/text/CString.h:
* wtf/text/LChar.h:
* wtf/text/cf/StringCF.cpp:
* wtf/text/mac/StringMac.mm:
* wtf/unicode/CharacterNames.h:
* wtf/unicode/Collator.h:
* wtf/unicode/CollatorDefault.cpp:
* wtf/unicode/UTF8.cpp:
* wtf/unicode/UTF8.h:
* wtf/unicode/icu/CollatorICU.cpp:
* wtf/win/MainThreadWin.cpp:
Tools: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* BuildSlaveSupport/build-launcher-app:
* BuildSlaveSupport/build-launcher-dmg:
* DumpRenderTree/DumpRenderTree.h:
* DumpRenderTree/DumpRenderTreePrefix.h:
* DumpRenderTree/GCController.cpp:
* DumpRenderTree/GCController.h:
* DumpRenderTree/JavaScriptThreading.cpp:
* DumpRenderTree/JavaScriptThreading.h:
* DumpRenderTree/PixelDumpSupport.cpp:
* DumpRenderTree/PixelDumpSupport.h:
* DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm:
* DumpRenderTree/TestRunner.cpp:
* DumpRenderTree/TestRunner.h:
* DumpRenderTree/WorkQueue.cpp:
* DumpRenderTree/WorkQueue.h:
* DumpRenderTree/WorkQueueItem.h:
* DumpRenderTree/atk/AccessibilityCallbacks.h:
* DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp:
* DumpRenderTree/cairo/PixelDumpSupportCairo.cpp:
* DumpRenderTree/cairo/PixelDumpSupportCairo.h:
* DumpRenderTree/cg/PixelDumpSupportCG.cpp:
* DumpRenderTree/cg/PixelDumpSupportCG.h:
* DumpRenderTree/efl/EditingCallbacks.cpp:
* DumpRenderTree/efl/EditingCallbacks.h:
* DumpRenderTree/efl/EventSender.cpp:
* DumpRenderTree/efl/EventSender.h:
* DumpRenderTree/efl/GCControllerEfl.cpp:
* DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
* DumpRenderTree/efl/TestRunnerEfl.cpp:
* DumpRenderTree/gtk/DumpRenderTree.cpp:
* DumpRenderTree/gtk/DumpRenderTreeGtk.h:
* DumpRenderTree/gtk/EditingCallbacks.cpp:
* DumpRenderTree/gtk/EditingCallbacks.h:
* DumpRenderTree/gtk/EventSender.cpp:
* DumpRenderTree/gtk/EventSender.h:
* DumpRenderTree/gtk/GCControllerGtk.cpp:
* DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
* DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp:
* DumpRenderTree/gtk/SelfScrollingWebKitWebView.h:
* DumpRenderTree/gtk/TestRunnerGtk.cpp:
* DumpRenderTree/gtk/TextInputController.cpp:
* DumpRenderTree/gtk/TextInputController.h:
* DumpRenderTree/ios/PerlSupport/IPhoneSimulatorNotification/Makefile.PL:
* DumpRenderTree/ios/PerlSupport/IPhoneSimulatorNotification/lib/IPhoneSimulatorNotification.pm:
* DumpRenderTree/ios/PixelDumpSupportIOS.mm:
* DumpRenderTree/mac/AppleScriptController.h:
* DumpRenderTree/mac/AppleScriptController.m:
* DumpRenderTree/mac/CheckedMalloc.cpp:
* DumpRenderTree/mac/CheckedMalloc.h:
* DumpRenderTree/mac/DumpRenderTree.mm:
* DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h:
* DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm:
* DumpRenderTree/mac/DumpRenderTreeMac.h:
* DumpRenderTree/mac/DumpRenderTreePasteboard.h:
* DumpRenderTree/mac/DumpRenderTreePasteboard.m:
* DumpRenderTree/mac/DumpRenderTreeWindow.h:
* DumpRenderTree/mac/DumpRenderTreeWindow.mm:
* DumpRenderTree/mac/EditingDelegate.h:
* DumpRenderTree/mac/EditingDelegate.mm:
* DumpRenderTree/mac/EventSendingController.h:
* DumpRenderTree/mac/EventSendingController.mm:
* DumpRenderTree/mac/FrameLoadDelegate.h:
* DumpRenderTree/mac/FrameLoadDelegate.mm:
* DumpRenderTree/mac/GCControllerMac.mm:
* DumpRenderTree/mac/MockWebNotificationProvider.h:
* DumpRenderTree/mac/MockWebNotificationProvider.mm:
* DumpRenderTree/mac/NavigationController.h:
* DumpRenderTree/mac/NavigationController.m:
* DumpRenderTree/mac/ObjCController.h:
* DumpRenderTree/mac/ObjCController.m:
* DumpRenderTree/mac/ObjCPlugin.h:
* DumpRenderTree/mac/ObjCPlugin.m:
* DumpRenderTree/mac/ObjCPluginFunction.h:
* DumpRenderTree/mac/ObjCPluginFunction.m:
* DumpRenderTree/mac/PixelDumpSupportMac.mm:
* DumpRenderTree/mac/PolicyDelegate.h:
* DumpRenderTree/mac/PolicyDelegate.mm:
* DumpRenderTree/mac/ResourceLoadDelegate.h:
* DumpRenderTree/mac/ResourceLoadDelegate.mm:
* DumpRenderTree/mac/TestRunnerMac.mm:
* DumpRenderTree/mac/TextInputController.h:
* DumpRenderTree/mac/TextInputController.m:
* DumpRenderTree/mac/UIDelegate.h:
* DumpRenderTree/mac/UIDelegate.mm:
* DumpRenderTree/mac/WorkQueueItemMac.mm:
* DumpRenderTree/win/DRTDataObject.cpp:
* DumpRenderTree/win/DRTDataObject.h:
* DumpRenderTree/win/DRTDesktopNotificationPresenter.h:
* DumpRenderTree/win/DRTDropSource.cpp:
* DumpRenderTree/win/DRTDropSource.h:
* DumpRenderTree/win/DraggingInfo.h:
* DumpRenderTree/win/DumpRenderTree.cpp:
* DumpRenderTree/win/DumpRenderTreeWin.h:
* DumpRenderTree/win/EditingDelegate.cpp:
* DumpRenderTree/win/EditingDelegate.h:
* DumpRenderTree/win/EventSender.cpp:
* DumpRenderTree/win/EventSender.h:
* DumpRenderTree/win/FrameLoadDelegate.cpp:
* DumpRenderTree/win/FrameLoadDelegate.h:
* DumpRenderTree/win/GCControllerWin.cpp:
* DumpRenderTree/win/HistoryDelegate.cpp:
* DumpRenderTree/win/HistoryDelegate.h:
* DumpRenderTree/win/MD5.cpp:
* DumpRenderTree/win/MD5.h:
* DumpRenderTree/win/PixelDumpSupportWin.cpp:
* DumpRenderTree/win/PolicyDelegate.cpp:
* DumpRenderTree/win/PolicyDelegate.h:
* DumpRenderTree/win/ResourceLoadDelegate.cpp:
* DumpRenderTree/win/ResourceLoadDelegate.h:
* DumpRenderTree/win/TestRunnerWin.cpp:
* DumpRenderTree/win/TextInputController.cpp:
* DumpRenderTree/win/TextInputController.h:
* DumpRenderTree/win/TextInputControllerWin.cpp:
* DumpRenderTree/win/UIDelegate.cpp:
* DumpRenderTree/win/UIDelegate.h:
* DumpRenderTree/win/WorkQueueItemWin.cpp:
* EWebLauncher/main.c:
* GtkLauncher/main.c:
* ImageDiff/efl/ImageDiff.cpp:
* ImageDiff/gtk/ImageDiff.cpp:
* MiniBrowser/gtk/main.c:
* Scripts/SpacingHeuristics.pm:
* Scripts/VCSUtils.pm:
* Scripts/bisect-builds:
* Scripts/build-dumprendertree:
* Scripts/build-jsc:
* Scripts/build-webkit:
* Scripts/check-dom-results:
* Scripts/check-for-exit-time-destructors:
* Scripts/check-for-global-initializers:
* Scripts/commit-log-editor:
* Scripts/compare-timing-files:
* Scripts/debug-minibrowser:
* Scripts/debug-safari:
* Scripts/do-file-rename:
* Scripts/find-extra-includes:
* Scripts/generate-coverage-data:
* Scripts/make-script-test-wrappers:
* Scripts/malloc-tree:
* Scripts/old-run-webkit-tests:
* Scripts/parse-malloc-history:
* Scripts/report-include-statistics:
* Scripts/resolve-ChangeLogs:
* Scripts/run-bindings-tests:
* Scripts/run-iexploder-tests:
* Scripts/run-javascriptcore-tests:
* Scripts/run-jsc:
* Scripts/run-launcher:
* Scripts/run-leaks:
* Scripts/run-mangleme-tests:
* Scripts/run-minibrowser:
* Scripts/run-pageloadtest:
* Scripts/run-regexp-tests:
* Scripts/run-safari:
* Scripts/run-sunspider:
* Scripts/run-webkit-app:
* Scripts/sampstat:
* Scripts/set-webkit-configuration:
* Scripts/sort-Xcode-project-file:
* Scripts/sort-export-file:
* Scripts/split-file-by-class:
* Scripts/sunspider-compare-results:
* Scripts/svn-apply:
* Scripts/svn-create-patch:
* Scripts/svn-unapply:
* Scripts/test-webkit-scripts:
* Scripts/update-javascriptcore-test-results:
* Scripts/update-webkit:
* Scripts/update-webkit-auxiliary-libs:
* Scripts/update-webkit-dependency:
* Scripts/update-webkit-localizable-strings:
* Scripts/update-webkit-support-libs:
* Scripts/update-webkit-wincairo-libs:
* Scripts/webkit-build-directory:
* Scripts/webkitdirs.pm:
(installedSafariPath):
* Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
* Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
* Scripts/webkitperl/features.pm:
* Scripts/webkitperl/httpd.pm:
* Scripts/webkitpy/bindings/main.py:
* Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py:
* TestWebKitAPI/Tests/WTF/MediaTime.cpp:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
* TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp:
* TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp:
* TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm:
* WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
* WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp:
* WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h:
* WebKitTestRunner/PixelDumpSupport.cpp:
* WebKitTestRunner/PixelDumpSupport.h:
* WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
* WinLauncher/WinLauncher.cpp:
* WinLauncher/WinLauncher.h:
* WinLauncher/stdafx.cpp:
* WinLauncher/stdafx.h:
WebKitLibraries: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* win/include/WebKitSystemInterface/WebKitSystemInterface.h:
* win/tools/scripts/auto-version.sh:
Websites/webkit.org: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* blog/wp-content/textfield_screenshot.jpg:
* misc/WebKitDetect.html:
* misc/WebKitDetect.js:
* perf/sunspider-0.9.1/sunspider-0.9.1/driver.html:
* perf/sunspider-0.9.1/sunspider-0.9.1/results.html:
* perf/sunspider-0.9.1/sunspider-0.9.1/sunspider-test-contents.js:
* perf/sunspider-0.9.1/sunspider-0.9/driver.html:
* perf/sunspider-0.9.1/sunspider-0.9/results.html:
* perf/sunspider-0.9.1/sunspider-0.9/sunspider-test-contents.js:
* perf/sunspider-0.9.1/sunspider-analyze-results.js:
* perf/sunspider-0.9.1/sunspider-compare-results.js:
* perf/sunspider-0.9/3d-cube.html:
* perf/sunspider-0.9/3d-morph.html:
* perf/sunspider-0.9/3d-raytrace.html:
* perf/sunspider-0.9/access-binary-trees.html:
* perf/sunspider-0.9/access-fannkuch.html:
* perf/sunspider-0.9/access-nbody.html:
* perf/sunspider-0.9/access-nsieve.html:
* perf/sunspider-0.9/bitops-3bit-bits-in-byte.html:
* perf/sunspider-0.9/bitops-bits-in-byte.html:
* perf/sunspider-0.9/bitops-bitwise-and.html:
* perf/sunspider-0.9/bitops-nsieve-bits.html:
* perf/sunspider-0.9/controlflow-recursive.html:
* perf/sunspider-0.9/crypto-aes.html:
* perf/sunspider-0.9/crypto-md5.html:
* perf/sunspider-0.9/crypto-sha1.html:
* perf/sunspider-0.9/date-format-tofte.html:
* perf/sunspider-0.9/date-format-xparb.html:
* perf/sunspider-0.9/math-cordic.html:
* perf/sunspider-0.9/math-partial-sums.html:
* perf/sunspider-0.9/math-spectral-norm.html:
* perf/sunspider-0.9/regexp-dna.html:
* perf/sunspider-0.9/string-base64.html:
* perf/sunspider-0.9/string-fasta.html:
* perf/sunspider-0.9/string-tagcloud.html:
* perf/sunspider-0.9/string-unpack-code.html:
* perf/sunspider-0.9/string-validate-input.html:
* perf/sunspider-0.9/sunspider-analyze-results.js:
* perf/sunspider-0.9/sunspider-compare-results.js:
* perf/sunspider-0.9/sunspider-driver.html:
* perf/sunspider-0.9/sunspider-record-result.js:
* perf/sunspider-0.9/sunspider-results.html:
* perf/sunspider-1.0.1/sunspider-1.0.1/driver.html:
* perf/sunspider-1.0.1/sunspider-1.0.1/results.html:
* perf/sunspider-1.0.1/sunspider-1.0.1/sunspider-test-contents.js:
* perf/sunspider-1.0.1/sunspider-analyze-results.js:
* perf/sunspider-1.0.1/sunspider-compare-results.js:
* perf/sunspider-1.0.1/sunspider.html:
* perf/sunspider-1.0.2/sunspider-1.0.2/driver.html:
* perf/sunspider-1.0.2/sunspider-1.0.2/results.html:
* perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js:
* perf/sunspider-1.0.2/sunspider-analyze-results.js:
* perf/sunspider-1.0.2/sunspider-compare-results.js:
* perf/sunspider-1.0.2/sunspider.html:
* perf/sunspider-1.0/sunspider-1.0/driver.html:
* perf/sunspider-1.0/sunspider-1.0/results.html:
* perf/sunspider-1.0/sunspider-1.0/sunspider-test-contents.js:
* perf/sunspider-1.0/sunspider-analyze-results.js:
* perf/sunspider-1.0/sunspider-compare-results.js:
* perf/sunspider-1.0/sunspider.html:
* perf/sunspider/sunspider.html:
* perf/sunspider/versions.html:
* quality/reporting.html:
LayoutTests: Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* editing/resources/TIFF-pasteboard-data.dat:
* fast/backgrounds/repeat/resources/gradient.gif:
* fast/forms/resources/apple.gif:
* http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag:
* http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wk2/TestExpectations:
* webgl/1.0.1/resources/webgl_test_files/conformance/attribs/gl-vertexattribpointer-offsets.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/context/context-attribute-preserve-drawing-buffer.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/context/incorrect-context-object-behaviour.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/misc/bad-arguments-test.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/misc/invalid-passed-params.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/misc/null-object-behaviour.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/misc/type-conversion-test.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/programs/get-active-test.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/rendering/draw-arrays-out-of-bounds.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/rendering/draw-elements-out-of-bounds.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/rendering/line-loop-tri-fan.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/rendering/triangle.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/resources/fragmentShader.frag:
* webgl/1.0.1/resources/webgl_test_files/conformance/resources/vertexShader.vert:
* webgl/1.0.1/resources/webgl_test_files/conformance/resources/webgl-test.js:
* webgl/1.0.1/resources/webgl_test_files/conformance/state/gl-get-calls.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/state/gl-object-get-calls.html:
* webgl/1.0.1/resources/webgl_test_files/conformance/typedarrays/array-unit-tests.html:
* webgl/1.0.1/resources/webgl_test_files/extra/canvas-compositing-test.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/resources/fragmentShader.frag:
* webgl/1.0.2/resources/webgl_test_files/conformance/resources/vertexShader.vert:
* webgl/resources/webgl_test_files/conformance/resources/fragmentShader.frag:
* webgl/resources/webgl_test_files/conformance/resources/vertexShader.vert:
Canonical link: https://commits.webkit.org/148261@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@165676 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-03-15 04:08:27 +00:00
|
|
|
* 3. Neither the name of Apple Inc. ("Apple") nor the names of
|
2011-09-11 05:49:36 +00:00
|
|
|
* its contributors may be used to endorse or promote products derived
|
|
|
|
* from this software without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
|
|
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
|
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "config.h"
|
2018-10-15 14:24:49 +00:00
|
|
|
#include <wtf/MetaAllocator.h>
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2021-01-27 00:32:32 +00:00
|
|
|
#include <wtf/NeverDestroyed.h>
|
2021-03-11 19:27:27 +00:00
|
|
|
#include <wtf/WTFConfig.h>
|
2021-01-27 00:32:32 +00:00
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
namespace WTF {
|
|
|
|
|
Experiment: create lots of different malloc zones for easier accounting of memory use
https://bugs.webkit.org/show_bug.cgi?id=186422
Patch by Yusuke Suzuki <ysuzuki@apple.com> and Simon Fraser <simon.fraser@apple.com> on 2020-01-02
Reviewed by Saam Barati.
Source/bmalloc:
* bmalloc/BPlatform.h:
* bmalloc/Environment.cpp:
(bmalloc::Environment::computeIsDebugHeapEnabled):
* bmalloc/IsoHeap.h:
(bmalloc::api::IsoHeap::IsoHeap):
* bmalloc/IsoHeapInlines.h:
(bmalloc::api::IsoHeap<Type>::IsoHeap):
* bmalloc/IsoTLSInlines.h:
(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateSlow):
Source/JavaScriptCore:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/AssemblerBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* assembler/AssemblerBuffer.h:
(JSC::AssemblerData::AssemblerData):
(JSC::AssemblerData::operator=):
(JSC::AssemblerData::~AssemblerData):
(JSC::AssemblerData::grow):
* bytecode/AccessCase.cpp:
* bytecode/AccessCase.h:
* bytecode/BytecodeBasicBlock.cpp:
* bytecode/BytecodeBasicBlock.h:
* bytecode/CodeBlock.cpp:
* bytecode/CodeBlock.h:
* bytecode/InstructionStream.cpp:
* bytecode/InstructionStream.h:
* bytecode/PolymorphicAccess.cpp:
* bytecode/PolymorphicAccess.h:
* bytecode/UnlinkedMetadataTable.cpp:
(JSC::UnlinkedMetadataTable::finalize):
* bytecode/UnlinkedMetadataTable.h:
* bytecode/UnlinkedMetadataTableInlines.h:
(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::~UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::link):
(JSC::UnlinkedMetadataTable::unlink):
* bytecode/ValueProfile.h:
(JSC::ValueProfileAndVirtualRegisterBuffer::ValueProfileAndVirtualRegisterBuffer):
* bytecode/Watchpoint.cpp:
* bytecode/Watchpoint.h:
* dfg/DFGBasicBlock.cpp:
* dfg/DFGBasicBlock.h:
* dfg/DFGNode.cpp:
* dfg/DFGNode.h:
* dfg/DFGSpeculativeJIT.cpp:
* dfg/DFGSpeculativeJIT.h:
* heap/BlockDirectory.cpp:
* heap/BlockDirectory.h:
* heap/FastMallocAlignedMemoryAllocator.cpp:
(JSC::FastMallocAlignedMemoryAllocator::FastMallocAlignedMemoryAllocator):
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeAlignedMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):
* heap/FastMallocAlignedMemoryAllocator.h:
* heap/GCSegmentedArray.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* heap/GCSegmentedArray.h:
* heap/GCSegmentedArrayInlines.h:
(JSC::GCArraySegment<T>::create):
(JSC::GCArraySegment<T>::destroy):
* heap/GigacageAlignedMemoryAllocator.cpp:
(JSC::GigacageAlignedMemoryAllocator::GigacageAlignedMemoryAllocator):
(JSC::GigacageAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::GigacageAlignedMemoryAllocator::freeAlignedMemory):
(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):
* heap/GigacageAlignedMemoryAllocator.h:
* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::~IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
* heap/IsoAlignedMemoryAllocator.h:
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::IsoSubspace):
* heap/MarkedBlock.cpp:
* heap/MarkedBlock.h:
* heap/WeakBlock.cpp:
(JSC::WeakBlock::create):
(JSC::WeakBlock::destroy):
* heap/WeakBlock.h:
* jit/JITCode.cpp:
* jit/JITCode.h:
* jit/RegisterAtOffsetList.cpp:
* jit/RegisterAtOffsetList.h:
* parser/Nodes.cpp:
* parser/Nodes.h:
* parser/ParserArena.cpp:
(JSC::ParserArena::deallocateObjects):
(JSC::ParserArena::allocateFreeablePool):
* parser/ParserArena.h:
* parser/SourceProvider.cpp:
* parser/SourceProvider.h:
* parser/SourceProviderCache.cpp:
* parser/SourceProviderCache.h:
* parser/SourceProviderCacheItem.h:
(JSC::SourceProviderCacheItem::create):
* runtime/CachePayload.cpp:
(JSC::CachePayload::makeMallocPayload):
* runtime/CachePayload.h:
* runtime/CachedBytecode.h:
(JSC::CachedBytecode::create):
* runtime/CachedTypes.cpp:
(JSC::Encoder::release):
(JSC::Encoder::Page::Page):
(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):
(JSC::CachedInstructionStream::decode const):
* runtime/PropertyMapHashTable.h:
(JSC::PropertyTable::rehash):
* runtime/PropertyTable.cpp:
(JSC::PropertyTable::PropertyTable):
(JSC::PropertyTable::~PropertyTable):
* runtime/SymbolTable.cpp:
* runtime/SymbolTable.h:
* runtime/VM.cpp:
(JSC::VM::~VM):
* runtime/VM.h:
(JSC::ScratchBuffer::create):
(JSC::VM::exceptionFuzzingBuffer):
* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):
* wasm/WasmInstance.h:
* wasm/WasmTable.cpp:
(JSC::Wasm::Table::Table):
(JSC::Wasm::FuncRefTable::FuncRefTable):
* wasm/WasmTable.h:
Source/WebCore:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/SerializedScriptValue.cpp:
* bindings/js/SerializedScriptValue.h:
* css/CSSFontFace.cpp:
* css/CSSFontFace.h:
* css/CSSSelector.cpp:
* css/CSSSelector.h:
* css/CSSValue.cpp:
* css/CSSValue.h:
* css/StyleProperties.cpp:
(WebCore::ImmutableStyleProperties::create):
* css/StyleProperties.h:
* css/StyleRule.cpp:
* css/StyleRule.h:
* dom/ElementData.cpp:
(WebCore::ShareableElementData::createWithAttributes):
(WebCore::UniqueElementData::makeShareableCopy const):
* dom/ElementData.h:
* dom/NodeRareData.cpp:
* dom/NodeRareData.h:
* dom/QualifiedName.cpp:
* dom/QualifiedName.h:
* html/parser/HTMLDocumentParser.cpp:
* html/parser/HTMLDocumentParser.h:
* loader/DocumentLoader.cpp:
* loader/DocumentLoader.h:
* loader/ResourceLoader.cpp:
* loader/ResourceLoader.h:
* loader/cache/CachedResource.cpp:
* loader/cache/CachedResource.h:
* page/PerformanceEntry.cpp:
* page/PerformanceEntry.h:
* platform/graphics/Font.cpp:
* platform/graphics/Font.h:
* platform/graphics/FontCascadeFonts.cpp:
* platform/graphics/FontCascadeFonts.h:
* platform/graphics/Region.cpp:
* platform/graphics/Region.h:
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::releaseUint8Vector):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/nicosia/NicosiaBuffer.cpp:
(Nicosia::Buffer::Buffer):
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandleInternal.h:
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::closeCurrentStream):
(WebCore::advanceCurrentStream):
* rendering/RenderLayer.cpp:
* rendering/RenderLayer.h:
* rendering/TableLayout.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* rendering/TableLayout.h:
* rendering/style/RenderStyle.cpp:
* rendering/style/RenderStyle.h:
* rendering/style/SVGRenderStyle.cpp:
* rendering/style/SVGRenderStyle.h:
* rendering/style/SVGRenderStyleDefs.cpp:
* rendering/style/SVGRenderStyleDefs.h:
* rendering/style/StyleBoxData.cpp:
* rendering/style/StyleBoxData.h:
* rendering/style/StyleInheritedData.cpp:
* rendering/style/StyleInheritedData.h:
* rendering/style/StyleRareInheritedData.cpp:
* rendering/style/StyleRareInheritedData.h:
* rendering/style/StyleRareNonInheritedData.cpp:
* rendering/style/StyleRareNonInheritedData.h:
* rendering/style/StyleSurroundData.cpp:
* rendering/style/StyleSurroundData.h:
* rendering/style/StyleTransformData.cpp:
* rendering/style/StyleTransformData.h:
* style/StyleTreeResolver.cpp:
* style/StyleTreeResolver.h:
* svg/animation/SMILTimeContainer.cpp:
* svg/animation/SMILTimeContainer.h:
Source/WebKit:
* Shared/ShareableBitmap.cpp:
(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::~ShareableBitmap):
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::HistoryEntryDataEncoder::HistoryEntryDataEncoder):
(WebKit::HistoryEntryDataEncoder::finishEncoding):
(WebKit::encodeSessionHistoryEntryData):
(WebKit::encodeLegacySessionState):
Source/WTF:
This patch introduces ENABLE(MALLOC_HEAP_BREAKDOWN). If this is enabled, we allocate malloc_zone per malloc kind.
This offers the way to investigate the usage of memory per kind by using vmmap, like the following.
VIRTUAL RESIDENT DIRTY SWAPPED ALLOCATION BYTES DIRTY+SWAP REGION
MALLOC ZONE SIZE SIZE SIZE SIZE COUNT ALLOCATED FRAG SIZE % FRAG COUNT
=========== ======= ========= ========= ========= ========= ========= ========= ====== ======
StringImpl_0x116efd000 188.0M 69.3M 30.9M 0K 139456 18.0M 12.9M 42% 34
DefaultMallocZone_0x10f487000 176.0M 53.9M 14.1M 0K 115956 9955K 4497K 32% 22
Vector_0x116eff000 162.0M 56.3M 55.3M 0K 140715 17.3M 37.9M 69% 36
MetadataTable_0x11843b000 152.0M 17.5M 17.5M 0K 14200 2353K 15.2M 87% 26
WebKit Using System Malloc_0x114cbe000 150.0M 31.6M 21.8M 0K 87422 16.7M 5278K 24% 23
InstructionStream_0x118469000 150.0M 5764K 5764K 0K 14470 4688K 1076K 19% 24
AssemblerData_0x117ee6000 150.0M 1928K 1928K 0K 1 16 1928K 100% 24
To achieve this goal without making very large change, we put a template type in various containers.
For example, Vector will take Malloc parameter (the default one is FastMalloc allocator). If ENABLE(MALLOC_HEAP_BREAKDOWN) is enabled, we change this to
specific VectorMalloc allocator, and vmmap can show memory usage of this allocator. This patch also supports malloc_zone per IsoHeap. So we can see memory
allocation per IsoHeap in vmmap.
To use this feature, we need to flip two compile time flags, ENABLE(MALLOC_HEAP_BREAKDOWN) in WTF and BENABLE_MALLOC_HEAP_BREAKDOWN in bmalloc.
And use `vmmap $PID` to dump malloc zones. To allocate objects of a class with a specific malloc-zone, use WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(HeapIdentifier) for the class,
and define allocator by DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a header and DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a cpp file.
This patch also introduce callstack collector for malloc. Vector, HashMap etc. are used to allocate various things, but the above malloc_zone feature only tells thing like "Vector
takes XXX MB memory". But what we want to know in this case is what Vector is consuming memory. We collect StackShot for each malloc call, and combine these information to tell
which callsite is consuming much memory, which tell us that what Vector is consuming memory.
* WTF.xcodeproj/project.pbxproj:
* wtf/Bag.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* wtf/Bag.h:
(WTF::Private::BagNode::BagNode): Deleted.
* wtf/BitVector.cpp:
(WTF::BitVector::OutOfLineBits::create):
(WTF::BitVector::OutOfLineBits::destroy):
* wtf/CMakeLists.txt:
* wtf/ConcurrentBuffer.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* wtf/ConcurrentBuffer.h:
* wtf/DebugHeap.cpp: Copied from Source/JavaScriptCore/runtime/CachePayload.cpp.
(WTF::DebugHeap::DebugHeap):
(WTF::DebugHeap::malloc):
(WTF::DebugHeap::calloc):
(WTF::DebugHeap::memalign):
(WTF::DebugHeap::realloc):
(WTF::DebugHeap::free):
* wtf/DebugHeap.h: Added.
* wtf/FastBitVector.cpp:
(WTF::FastBitVectorWordOwner::setEqualsSlow):
(WTF::FastBitVectorWordOwner::resizeSlow):
* wtf/FastBitVector.h:
(WTF::FastBitVectorWordOwner::~FastBitVectorWordOwner):
* wtf/FastMalloc.cpp:
(WTF::fastMallocDumpMallocStats):
(WTF::AvoidRecordingScope::AvoidRecordingScope):
(WTF::AvoidRecordingScope::~AvoidRecordingScope):
(WTF::MallocCallTracker::MallocSiteData::MallocSiteData):
(WTF::MallocCallTracker::singleton):
(WTF::MallocCallTracker::MallocCallTracker):
(WTF::MallocCallTracker::recordMalloc):
(WTF::MallocCallTracker::recordRealloc):
(WTF::MallocCallTracker::recordFree):
(WTF::MallocCallTracker::dumpStats):
(WTF::fastMalloc):
(WTF::fastRealloc):
(WTF::fastFree):
(WTF::fastAlignedMalloc):
(WTF::tryFastAlignedMalloc):
(WTF::fastAlignedFree):
* wtf/FastMalloc.h:
(WTF::FastMalloc::zeroedMalloc):
(WTF::FastMalloc::tryZeroedMalloc):
* wtf/Forward.h:
* wtf/HashTable.cpp:
* wtf/HashTable.h:
(WTF::KeyTraits>::allocateTable):
(WTF::KeyTraits>::deallocateTable):
(WTF::KeyTraits>::rehash):
* wtf/MallocPtr.h:
(WTF::MallocPtr::MallocPtr):
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::zeroedMalloc):
(WTF::MallocPtr::tryMalloc):
(WTF::MallocPtr::tryZeroedMalloc):
(WTF::adoptMallocPtr):
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocFreeSpaceNode):
(WTF::MetaAllocator::freeFreeSpaceNode):
* wtf/MetaAllocatorHandle.h:
* wtf/Platform.h:
* wtf/RefCountedArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::~RefCountedArray):
(WTF::RefCountedArray::assign):
* wtf/SegmentedVector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/SegmentedVector.h:
* wtf/SmallPtrSet.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/SmallPtrSet.h:
(WTF::SmallPtrSet::~SmallPtrSet):
(WTF::SmallPtrSet::grow):
* wtf/UniqueArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/UniqueArray.h:
(WTF::UniqueArrayFree::operator() const):
(WTF::UniqueArrayFree<T::operator() const):
* wtf/Vector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/Vector.h:
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::deallocateBuffer):
(WTF::VectorBufferBase::releaseBuffer):
(WTF::VectorBuffer::releaseBuffer):
(WTF::Vector::swap):
(WTF::Malloc>::Vector):
(WTF::=):
(WTF::Malloc>::contains const):
(WTF::Malloc>::findMatching const):
(WTF::Malloc>::find const):
(WTF::Malloc>::reverseFind const):
(WTF::Malloc>::appendIfNotContains):
(WTF::Malloc>::fill):
(WTF::Malloc>::appendRange):
(WTF::Malloc>::expandCapacity):
(WTF::Malloc>::tryExpandCapacity):
(WTF::Malloc>::resize):
(WTF::Malloc>::resizeToFit):
(WTF::Malloc>::shrink):
(WTF::Malloc>::grow):
(WTF::Malloc>::asanSetInitialBufferSizeTo):
(WTF::Malloc>::asanSetBufferSizeToFullCapacity):
(WTF::Malloc>::asanBufferSizeWillChangeTo):
(WTF::Malloc>::reserveCapacity):
(WTF::Malloc>::tryReserveCapacity):
(WTF::Malloc>::reserveInitialCapacity):
(WTF::Malloc>::shrinkCapacity):
(WTF::Malloc>::append):
(WTF::Malloc>::tryAppend):
(WTF::Malloc>::constructAndAppend):
(WTF::Malloc>::tryConstructAndAppend):
(WTF::Malloc>::appendSlowCase):
(WTF::Malloc>::constructAndAppendSlowCase):
(WTF::Malloc>::tryConstructAndAppendSlowCase):
(WTF::Malloc>::uncheckedAppend):
(WTF::Malloc>::uncheckedConstructAndAppend):
(WTF::Malloc>::appendVector):
(WTF::Malloc>::insert):
(WTF::Malloc>::insertVector):
(WTF::Malloc>::remove):
(WTF::Malloc>::removeFirst):
(WTF::Malloc>::removeFirstMatching):
(WTF::Malloc>::removeAll):
(WTF::Malloc>::removeAllMatching):
(WTF::Malloc>::reverse):
(WTF::Malloc>::map const):
(WTF::Malloc>::releaseBuffer):
(WTF::Malloc>::checkConsistency):
(WTF::swap):
(WTF::operator==):
(WTF::operator!=):
(WTF::Malloc>::isolatedCopy const):
(WTF::removeRepeatedElements):
(WTF::minCapacity>::Vector): Deleted.
(WTF::minCapacity>::contains const): Deleted.
(WTF::minCapacity>::findMatching const): Deleted.
(WTF::minCapacity>::find const): Deleted.
(WTF::minCapacity>::reverseFind const): Deleted.
(WTF::minCapacity>::appendIfNotContains): Deleted.
(WTF::minCapacity>::fill): Deleted.
(WTF::minCapacity>::appendRange): Deleted.
(WTF::minCapacity>::expandCapacity): Deleted.
(WTF::minCapacity>::tryExpandCapacity): Deleted.
(WTF::minCapacity>::resize): Deleted.
(WTF::minCapacity>::resizeToFit): Deleted.
(WTF::minCapacity>::shrink): Deleted.
(WTF::minCapacity>::grow): Deleted.
(WTF::minCapacity>::asanSetInitialBufferSizeTo): Deleted.
(WTF::minCapacity>::asanSetBufferSizeToFullCapacity): Deleted.
(WTF::minCapacity>::asanBufferSizeWillChangeTo): Deleted.
(WTF::minCapacity>::reserveCapacity): Deleted.
(WTF::minCapacity>::tryReserveCapacity): Deleted.
(WTF::minCapacity>::reserveInitialCapacity): Deleted.
(WTF::minCapacity>::shrinkCapacity): Deleted.
(WTF::minCapacity>::append): Deleted.
(WTF::minCapacity>::tryAppend): Deleted.
(WTF::minCapacity>::constructAndAppend): Deleted.
(WTF::minCapacity>::tryConstructAndAppend): Deleted.
(WTF::minCapacity>::appendSlowCase): Deleted.
(WTF::minCapacity>::constructAndAppendSlowCase): Deleted.
(WTF::minCapacity>::tryConstructAndAppendSlowCase): Deleted.
(WTF::minCapacity>::uncheckedAppend): Deleted.
(WTF::minCapacity>::uncheckedConstructAndAppend): Deleted.
(WTF::minCapacity>::appendVector): Deleted.
(WTF::minCapacity>::insert): Deleted.
(WTF::minCapacity>::insertVector): Deleted.
(WTF::minCapacity>::remove): Deleted.
(WTF::minCapacity>::removeFirst): Deleted.
(WTF::minCapacity>::removeFirstMatching): Deleted.
(WTF::minCapacity>::removeAll): Deleted.
(WTF::minCapacity>::removeAllMatching): Deleted.
(WTF::minCapacity>::reverse): Deleted.
(WTF::minCapacity>::map const): Deleted.
(WTF::minCapacity>::releaseBuffer): Deleted.
(WTF::minCapacity>::checkConsistency): Deleted.
(WTF::minCapacity>::isolatedCopy const): Deleted.
* wtf/text/CString.cpp:
(WTF::CStringBuffer::createUninitialized):
* wtf/text/CString.h:
* wtf/text/StringBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/text/StringBuffer.h:
(WTF::StringBuffer::StringBuffer):
(WTF::StringBuffer::~StringBuffer):
(WTF::StringBuffer::resize):
(WTF::StringBuffer::release):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::destroy):
(WTF::StringImpl::createUninitializedInternalNonEmpty):
(WTF::StringImpl::reallocateInternal):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSubstringSharingImpl):
(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::adopt):
* wtf/text/cf/StringImplCF.cpp:
(WTF::StringWrapperCFAllocator::allocate):
(WTF::StringWrapperCFAllocator::reallocate):
(WTF::StringWrapperCFAllocator::deallocate):
Canonical link: https://commits.webkit.org/218863@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-03 02:36:43 +00:00
|
|
|
DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(MetaAllocatorHandle);
|
|
|
|
|
|
|
|
DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(MetaAllocatorFreeSpace);
|
|
|
|
DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(MetaAllocatorFreeSpace);
|
|
|
|
|
2012-03-21 23:16:40 +00:00
|
|
|
MetaAllocator::~MetaAllocator()
|
|
|
|
{
|
|
|
|
for (FreeSpaceNode* node = m_freeSpaceSizeMap.first(); node;) {
|
|
|
|
FreeSpaceNode* next = node->successor();
|
|
|
|
m_freeSpaceSizeMap.remove(node);
|
|
|
|
freeFreeSpaceNode(node);
|
|
|
|
node = next;
|
|
|
|
}
|
|
|
|
#ifndef NDEBUG
|
|
|
|
ASSERT(!m_mallocBalance);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
void MetaAllocatorTracker::notify(MetaAllocatorHandle& handle)
|
2012-01-25 02:02:50 +00:00
|
|
|
{
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
m_allocations.insert(&handle);
|
2012-01-25 02:02:50 +00:00
|
|
|
}
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
void MetaAllocatorTracker::release(MetaAllocatorHandle& handle)
|
2012-01-25 02:02:50 +00:00
|
|
|
{
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
m_allocations.remove(&handle);
|
2012-01-25 02:02:50 +00:00
|
|
|
}
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
void MetaAllocator::release(const LockHolder&, MetaAllocatorHandle& handle)
|
2012-01-25 02:02:50 +00:00
|
|
|
{
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
if (handle.sizeInBytes()) {
|
2021-03-11 19:27:27 +00:00
|
|
|
MemoryPtr start = handle.start();
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
size_t sizeInBytes = handle.sizeInBytes();
|
2021-03-11 19:27:27 +00:00
|
|
|
decrementPageOccupancy(start.untaggedPtr(), sizeInBytes);
|
2018-04-30 22:29:21 +00:00
|
|
|
addFreeSpaceFromReleasedHandle(FreeSpacePtr(start), sizeInBytes);
|
2012-01-25 02:02:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (UNLIKELY(!!m_tracker))
|
|
|
|
m_tracker->release(handle);
|
|
|
|
}
|
|
|
|
|
2021-03-11 19:27:27 +00:00
|
|
|
MetaAllocatorHandle::MetaAllocatorHandle(MetaAllocator& allocator, MetaAllocatorHandle::MemoryPtr start, size_t sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
: m_allocator(allocator)
|
|
|
|
, m_start(start)
|
2021-03-11 19:27:27 +00:00
|
|
|
, m_end(start + sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
{
|
|
|
|
ASSERT(start);
|
|
|
|
ASSERT(sizeInBytes);
|
|
|
|
}
|
|
|
|
|
|
|
|
MetaAllocatorHandle::~MetaAllocatorHandle()
|
|
|
|
{
|
2021-05-22 00:11:37 +00:00
|
|
|
Locker locker { allocator().m_lock };
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
allocator().release(locker, *this);
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void MetaAllocatorHandle::shrink(size_t newSizeInBytes)
|
|
|
|
{
|
2018-04-30 22:29:21 +00:00
|
|
|
size_t sizeInBytes = this->sizeInBytes();
|
|
|
|
ASSERT(newSizeInBytes <= sizeInBytes);
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
MetaAllocator& allocator = this->allocator();
|
2021-05-22 16:49:42 +00:00
|
|
|
Locker locker { allocator.m_lock };
|
2011-09-11 05:49:36 +00:00
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
newSizeInBytes = allocator.roundUp(newSizeInBytes);
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
ASSERT(newSizeInBytes <= sizeInBytes);
|
|
|
|
|
|
|
|
if (newSizeInBytes == sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
return;
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2021-03-11 19:27:27 +00:00
|
|
|
MemoryPtr freeStart = m_start + newSizeInBytes;
|
2018-04-30 22:29:21 +00:00
|
|
|
size_t freeSize = sizeInBytes - newSizeInBytes;
|
2021-03-11 19:27:27 +00:00
|
|
|
uintptr_t freeStartValue = freeStart.untaggedPtr<uintptr_t>();
|
|
|
|
uintptr_t freeEnd = freeStartValue + freeSize;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2021-03-11 19:27:27 +00:00
|
|
|
uintptr_t firstCompletelyFreePage = roundUpToMultipleOf(allocator.m_pageSize, freeStartValue);
|
2011-09-11 05:49:36 +00:00
|
|
|
if (firstCompletelyFreePage < freeEnd)
|
2021-03-11 19:27:27 +00:00
|
|
|
allocator.decrementPageOccupancy(reinterpret_cast<void*>(firstCompletelyFreePage), freeSize - (firstCompletelyFreePage - freeStartValue));
|
2018-04-30 22:29:21 +00:00
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
allocator.addFreeSpaceFromReleasedHandle(MetaAllocator::FreeSpacePtr(freeStart), freeSize);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2021-03-11 19:27:27 +00:00
|
|
|
m_end = freeStart;
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
2015-07-28 16:58:08 +00:00
|
|
|
void MetaAllocatorHandle::dump(PrintStream& out) const
|
|
|
|
{
|
2018-04-30 22:29:21 +00:00
|
|
|
out.print(RawPointer(start().untaggedPtr()), "...", RawPointer(end().untaggedPtr()));
|
2015-07-28 16:58:08 +00:00
|
|
|
}
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
MetaAllocator::MetaAllocator(Lock& lock, size_t allocationGranule, size_t pageSize)
|
2011-09-11 05:49:36 +00:00
|
|
|
: m_allocationGranule(allocationGranule)
|
2013-04-01 15:23:49 +00:00
|
|
|
, m_pageSize(pageSize)
|
2011-09-11 05:49:36 +00:00
|
|
|
, m_bytesAllocated(0)
|
|
|
|
, m_bytesReserved(0)
|
|
|
|
, m_bytesCommitted(0)
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
, m_lock(lock)
|
2011-09-11 05:49:36 +00:00
|
|
|
#ifndef NDEBUG
|
|
|
|
, m_mallocBalance(0)
|
|
|
|
#endif
|
|
|
|
#if ENABLE(META_ALLOCATOR_PROFILE)
|
|
|
|
, m_numAllocations(0)
|
|
|
|
, m_numFrees(0)
|
|
|
|
#endif
|
|
|
|
{
|
|
|
|
for (m_logPageSize = 0; m_logPageSize < 32; ++m_logPageSize) {
|
|
|
|
if (static_cast<size_t>(1) << m_logPageSize == m_pageSize)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
ASSERT(static_cast<size_t>(1) << m_logPageSize == m_pageSize);
|
|
|
|
|
|
|
|
for (m_logAllocationGranule = 0; m_logAllocationGranule < 32; ++m_logAllocationGranule) {
|
|
|
|
if (static_cast<size_t>(1) << m_logAllocationGranule == m_allocationGranule)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
ASSERT(static_cast<size_t>(1) << m_logAllocationGranule == m_allocationGranule);
|
|
|
|
}
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
RefPtr<MetaAllocatorHandle> MetaAllocator::allocate(const LockHolder&, size_t sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
{
|
|
|
|
if (!sizeInBytes)
|
2016-06-08 01:31:17 +00:00
|
|
|
return nullptr;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
|
|
|
sizeInBytes = roundUp(sizeInBytes);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
|
|
|
FreeSpacePtr start = findAndRemoveFreeSpace(sizeInBytes);
|
2011-09-11 05:49:36 +00:00
|
|
|
if (!start) {
|
|
|
|
size_t requestedNumberOfPages = (sizeInBytes + m_pageSize - 1) >> m_logPageSize;
|
|
|
|
size_t numberOfPages = requestedNumberOfPages;
|
|
|
|
|
|
|
|
start = allocateNewSpace(numberOfPages);
|
|
|
|
if (!start)
|
2016-06-08 01:31:17 +00:00
|
|
|
return nullptr;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
|
|
|
ASSERT(numberOfPages >= requestedNumberOfPages);
|
|
|
|
|
|
|
|
size_t roundedUpSize = numberOfPages << m_logPageSize;
|
|
|
|
|
|
|
|
ASSERT(roundedUpSize >= sizeInBytes);
|
|
|
|
|
|
|
|
m_bytesReserved += roundedUpSize;
|
|
|
|
|
|
|
|
if (roundedUpSize > sizeInBytes) {
|
2018-04-30 22:29:21 +00:00
|
|
|
FreeSpacePtr freeSpaceStart = start + sizeInBytes;
|
2011-09-11 05:49:36 +00:00
|
|
|
size_t freeSpaceSize = roundedUpSize - sizeInBytes;
|
|
|
|
addFreeSpace(freeSpaceStart, freeSpaceSize);
|
|
|
|
}
|
|
|
|
}
|
2018-04-30 22:29:21 +00:00
|
|
|
incrementPageOccupancy(start.untaggedPtr(), sizeInBytes);
|
2011-09-11 05:49:36 +00:00
|
|
|
m_bytesAllocated += sizeInBytes;
|
|
|
|
#if ENABLE(META_ALLOCATOR_PROFILE)
|
|
|
|
m_numAllocations++;
|
|
|
|
#endif
|
2011-10-07 14:49:45 +00:00
|
|
|
|
2021-03-11 19:27:27 +00:00
|
|
|
auto handle = adoptRef(*new MetaAllocatorHandle(*this, MemoryPtr(start), sizeInBytes));
|
2011-10-07 14:49:45 +00:00
|
|
|
|
2012-01-25 02:02:50 +00:00
|
|
|
if (UNLIKELY(!!m_tracker))
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
m_tracker->notify(*handle.ptr());
|
2012-01-25 02:02:50 +00:00
|
|
|
|
2019-04-01 17:27:53 +00:00
|
|
|
return handle;
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
Implement 1GB of executable memory on arm64
https://bugs.webkit.org/show_bug.cgi?id=208490
<rdar://problem/60797127>
Reviewed by Keith Miller.
JSTests:
Run JetStream2 wasm tests.
* wasm.yaml:
* wasm/lowExecutableMemory/executable-memory-oom.js:
PerformanceTests:
* JetStream2/JetStreamDriver.js:
(Driver.prototype.dumpJSONResultsIfNeeded):
(DefaultBenchmark.prototype.updateUIAfterRun):
(DefaultBenchmark):
(WSLBenchmark.prototype.updateUIAfterRun):
(WSLBenchmark):
(WasmBenchmark.prototype.updateUIAfterRun):
(WasmBenchmark):
(Driver.async fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async fetchResources):
Source/JavaScriptCore:
This patch implements the 1GB executable memory space on arm64. To make this
work, we implement jumps larger than +/-128MB to use jump islands. Jump islands
work by splitting up the ~1GB region into 9 112MB chunks (1008 MB total). Each
chunk is split into two: 96MB of executable region, and 16MB of jump island region.
With this split, any jump inside a jump island region can get to the adjacent
island (forwards or backwards) in a single +/-128MB jump. When linking a jump
from A to B, where |A - B| > 128MB, we instead point the jump to an island,
where this island has a potential series of jumps that finally lands at B.
To allocate executable memory, use a MetaAllocator for each 96MB chunk. To
allocate islands, we have a bit vector we use to track used and freed islands.
We only grow this bit vector as islands are allocated, so it frequently
remains empty or very small.
The goal of this patch is to have minimal perf impact when not using islands,
so the data structures are designed to only incur overhead when actually using
islands. We expect the use of islands to be minimal. We use a red black tree
to track all island locations. This allows us to deallocate all islands when
an executable memory handle is freed. Typically, this red black tree is empty,
so freeing an executable memory handle incurs no extra overhead.
To make islands work for Wasm, we now have to link tier up code in two phases.
Previously, we would just patch jumps concurrently to Wasm threads running after
resetting the icache, knowing that we would be able to atomically update the jump
instruction to point to the new destination. However, now when repatching these
jumps in a world with jump islands, we might need to allocate islands depending
on the jump location and its target. So we now allocate and collect the set of islands,
then reset the icache, then atomically update the branch to point to the destination
(or an island that jumps to the destination). One important implementation detail
here is that for normal island repatching, if we have a jump from A to B, and it
allocates a set if islands X, we usually can deallocate X when repatching A to go to B'.
This is because the typical repatch scenario in JS happens when that code is not being
executed. For Wasm though, those islands X might be running while we want to repatch
A to go to B'. So instead of deallocating X, we just append to X in this scenario, and
we free the new set X' when the code itself is freed.
(This patch also fixes a bug in the Wasm LLInt to BBQ tier up that I spotted,
where we would publish a LLInt callee's BBQ replacement before we finished
linking the outgoing calls of the BBQ replacement.)
This patch also removes the old "CodeProfiling" code that has been unused for
a long time.
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::b):
(JSC::ARM64Assembler::bl):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::prepareForAtomicRelinkJumpConcurrently):
(JSC::ARM64Assembler::prepareForAtomicRelinkCallConcurrently):
(JSC::ARM64Assembler::computeJumpType):
(JSC::ARM64Assembler::canEmitJump):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
* assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::prepareForAtomicRepatchNearCallConcurrently):
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::allocate):
(JSC::LinkBuffer::performFinalization):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::setIsJumpIsland):
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
* jit/ExecutableAllocator.cpp:
(JSC::initializeJITPageReservation):
(JSC::ExecutableAllocator::initializeUnderlyingAllocator):
(JSC::ExecutableAllocator::isValid const):
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::getJumpIslandTo):
(JSC::ExecutableAllocator::getJumpIslandToConcurrently):
(JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator): Deleted.
* jit/ExecutableAllocator.h:
(JSC::ExecutableAllocatorBase::allocate):
* runtime/CommonSlowPaths.cpp:
* runtime/Completion.cpp:
(JSC::evaluate):
* runtime/JSModuleLoader.cpp:
(JSC::moduleLoaderParseModule):
* runtime/OptionsList.h:
* tools/CodeProfile.cpp:
(JSC::truncateTrace): Deleted.
(JSC::CodeProfile::sample): Deleted.
(JSC::CodeProfile::report): Deleted.
* tools/CodeProfile.h:
(JSC::CodeProfile::CodeProfile): Deleted.
(JSC::CodeProfile::parent): Deleted.
(JSC::CodeProfile::addChild): Deleted.
(): Deleted.
(JSC::CodeProfile::CodeRecord::CodeRecord): Deleted.
* tools/CodeProfiling.cpp:
(JSC::setProfileTimer): Deleted.
(JSC::profilingTimer): Deleted.
(JSC::CodeProfiling::sample): Deleted.
(JSC::CodeProfiling::notifyAllocator): Deleted.
(JSC::CodeProfiling::getOwnerUIDForPC): Deleted.
(JSC::CodeProfiling::begin): Deleted.
(JSC::CodeProfiling::end): Deleted.
* tools/CodeProfiling.h:
(): Deleted.
(JSC::CodeProfiling::CodeProfiling): Deleted.
(JSC::CodeProfiling::~CodeProfiling): Deleted.
(JSC::CodeProfiling::enabled): Deleted.
(JSC::CodeProfiling::beVerbose): Deleted.
(JSC::CodeProfiling::beVeryVerbose): Deleted.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* wasm/WasmCodeBlock.h:
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::updateCallSitesToCallUs):
* wasm/WasmPlan.h:
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorTracker::notify):
(WTF::MetaAllocatorTracker::release):
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::MetaAllocator):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
* wtf/MetaAllocator.h:
(WTF::MetaAllocatorTracker::find):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::getLock): Deleted.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::allocator):
(WTF::MetaAllocatorHandle::isManaged): Deleted.
(WTF::MetaAllocatorHandle::ownerUID): Deleted.
* wtf/PlatformEnable.h:
* wtf/RedBlackTree.h:
* wtf/StdLibExtras.h:
(WTF::constructFixedSizeArrayWithArgumentsImpl):
(WTF::constructFixedSizeArrayWithArguments):
Tools:
* Scripts/run-jsc-stress-tests:
* TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/222973@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259582 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-06 18:19:52 +00:00
|
|
|
MetaAllocator::Statistics MetaAllocator::currentStatistics(const LockHolder&)
|
2011-09-11 05:49:36 +00:00
|
|
|
{
|
|
|
|
Statistics result;
|
|
|
|
result.bytesAllocated = m_bytesAllocated;
|
|
|
|
result.bytesReserved = m_bytesReserved;
|
|
|
|
result.bytesCommitted = m_bytesCommitted;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
MetaAllocator::FreeSpacePtr MetaAllocator::findAndRemoveFreeSpace(size_t sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
{
|
|
|
|
FreeSpaceNode* node = m_freeSpaceSizeMap.findLeastGreaterThanOrEqual(sizeInBytes);
|
|
|
|
|
|
|
|
if (!node)
|
2020-05-08 17:31:54 +00:00
|
|
|
return nullptr;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
size_t nodeSizeInBytes = node->sizeInBytes();
|
2020-10-27 02:07:46 +00:00
|
|
|
RELEASE_ASSERT(nodeSizeInBytes >= sizeInBytes);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.remove(node);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
|
|
|
FreeSpacePtr result;
|
|
|
|
|
|
|
|
if (nodeSizeInBytes == sizeInBytes) {
|
2011-09-11 05:49:36 +00:00
|
|
|
// Easy case: perfect fit, so just remove the node entirely.
|
2012-01-23 23:30:57 +00:00
|
|
|
result = node->m_start;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2012-01-23 23:30:57 +00:00
|
|
|
m_freeSpaceStartAddressMap.remove(node->m_start);
|
2018-04-30 22:29:21 +00:00
|
|
|
m_freeSpaceEndAddressMap.remove(node->m_end);
|
2011-09-11 05:49:36 +00:00
|
|
|
freeFreeSpaceNode(node);
|
|
|
|
} else {
|
|
|
|
// Try to be a good citizen and ensure that the returned chunk of memory
|
|
|
|
// straddles as few pages as possible, but only insofar as doing so will
|
|
|
|
// not increase fragmentation. The intuition is that minimizing
|
|
|
|
// fragmentation is a strictly higher priority than minimizing the number
|
|
|
|
// of committed pages, since in the long run, smaller fragmentation means
|
|
|
|
// fewer committed pages and fewer failures in general.
|
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
uintptr_t nodeStartAsInt = node->m_start.untaggedPtr<uintptr_t>();
|
|
|
|
uintptr_t firstPage = nodeStartAsInt >> m_logPageSize;
|
|
|
|
uintptr_t lastPage = (nodeStartAsInt + nodeSizeInBytes - 1) >> m_logPageSize;
|
|
|
|
|
|
|
|
uintptr_t lastPageForLeftAllocation = (nodeStartAsInt + sizeInBytes - 1) >> m_logPageSize;
|
|
|
|
uintptr_t firstPageForRightAllocation = (nodeStartAsInt + nodeSizeInBytes - sizeInBytes) >> m_logPageSize;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
|
|
|
if (lastPageForLeftAllocation - firstPage + 1 <= lastPage - firstPageForRightAllocation + 1) {
|
|
|
|
// Allocate in the left side of the returned chunk, and slide the node to the right.
|
2012-01-23 23:30:57 +00:00
|
|
|
result = node->m_start;
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2012-01-23 23:30:57 +00:00
|
|
|
m_freeSpaceStartAddressMap.remove(node->m_start);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
|
|
|
node->m_start += sizeInBytes;
|
2020-10-27 02:07:46 +00:00
|
|
|
RELEASE_ASSERT(nodeStartAsInt < node->m_start.untaggedPtr<uintptr_t>() && node->m_start.untaggedPtr<uintptr_t>() < node->m_end.untaggedPtr<uintptr_t>());
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.insert(node);
|
2012-01-23 23:30:57 +00:00
|
|
|
m_freeSpaceStartAddressMap.add(node->m_start, node);
|
2011-09-11 05:49:36 +00:00
|
|
|
} else {
|
|
|
|
// Allocate in the right size of the returned chunk, and slide the node to the left;
|
2018-04-30 22:29:21 +00:00
|
|
|
|
|
|
|
result = node->m_end - sizeInBytes;
|
|
|
|
|
|
|
|
m_freeSpaceEndAddressMap.remove(node->m_end);
|
|
|
|
|
|
|
|
node->m_end = result;
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.insert(node);
|
|
|
|
m_freeSpaceEndAddressMap.add(result, node);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-05-10 00:19:55 +00:00
|
|
|
#if ENABLE(META_ALLOCATOR_PROFILE)
|
|
|
|
dumpProfile();
|
|
|
|
#endif
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
void MetaAllocator::addFreeSpaceFromReleasedHandle(FreeSpacePtr start, size_t sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
{
|
|
|
|
#if ENABLE(META_ALLOCATOR_PROFILE)
|
|
|
|
m_numFrees++;
|
|
|
|
#endif
|
|
|
|
m_bytesAllocated -= sizeInBytes;
|
|
|
|
addFreeSpace(start, sizeInBytes);
|
|
|
|
}
|
|
|
|
|
|
|
|
void MetaAllocator::addFreshFreeSpace(void* start, size_t sizeInBytes)
|
|
|
|
{
|
2021-03-11 19:27:27 +00:00
|
|
|
Config::AssertNotFrozenScope assertNotFrozenScope;
|
2021-05-22 16:49:42 +00:00
|
|
|
Locker locker { m_lock };
|
2011-09-11 05:49:36 +00:00
|
|
|
m_bytesReserved += sizeInBytes;
|
2021-03-11 19:27:27 +00:00
|
|
|
addFreeSpace(FreeSpacePtr::makeFromRawPointer(start), sizeInBytes);
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
size_t MetaAllocator::debugFreeSpaceSize()
|
|
|
|
{
|
|
|
|
#ifndef NDEBUG
|
2021-05-22 16:49:42 +00:00
|
|
|
Locker locker { m_lock };
|
2011-09-11 05:49:36 +00:00
|
|
|
size_t result = 0;
|
|
|
|
for (FreeSpaceNode* node = m_freeSpaceSizeMap.first(); node; node = node->successor())
|
2018-04-30 22:29:21 +00:00
|
|
|
result += node->sizeInBytes();
|
2011-09-11 05:49:36 +00:00
|
|
|
return result;
|
|
|
|
#else
|
|
|
|
CRASH();
|
|
|
|
return 0;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
void MetaAllocator::addFreeSpace(FreeSpacePtr start, size_t sizeInBytes)
|
2011-09-11 05:49:36 +00:00
|
|
|
{
|
2018-04-30 22:29:21 +00:00
|
|
|
FreeSpacePtr end = start + sizeInBytes;
|
|
|
|
|
2021-02-10 00:34:26 +00:00
|
|
|
HashMap<FreeSpacePtr, FreeSpaceNode*>::iterator leftNeighbor = m_freeSpaceEndAddressMap.find(start);
|
|
|
|
HashMap<FreeSpacePtr, FreeSpaceNode*>::iterator rightNeighbor = m_freeSpaceStartAddressMap.find(end);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
if (leftNeighbor != m_freeSpaceEndAddressMap.end()) {
|
|
|
|
// We have something we can coalesce with on the left. Remove it from the tree, and
|
|
|
|
// remove its end from the end address map.
|
|
|
|
|
2018-04-30 22:29:21 +00:00
|
|
|
ASSERT(leftNeighbor->value->m_end == leftNeighbor->key);
|
|
|
|
|
2012-10-07 23:12:07 +00:00
|
|
|
FreeSpaceNode* leftNode = leftNeighbor->value;
|
2018-04-30 22:29:21 +00:00
|
|
|
|
|
|
|
FreeSpacePtr leftEnd = leftNode->m_end;
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
ASSERT(leftEnd == start);
|
|
|
|
|
|
|
|
m_freeSpaceSizeMap.remove(leftNode);
|
|
|
|
m_freeSpaceEndAddressMap.remove(leftEnd);
|
|
|
|
|
|
|
|
// Now check if there is also something to coalesce with on the right.
|
|
|
|
if (rightNeighbor != m_freeSpaceStartAddressMap.end()) {
|
|
|
|
// Freeing something in the middle of free blocks. Coalesce both left and
|
|
|
|
// right, whilst removing the right neighbor from the maps.
|
|
|
|
|
2012-10-07 23:12:07 +00:00
|
|
|
ASSERT(rightNeighbor->value->m_start == rightNeighbor->key);
|
2011-09-11 05:49:36 +00:00
|
|
|
|
2012-10-07 23:12:07 +00:00
|
|
|
FreeSpaceNode* rightNode = rightNeighbor->value;
|
2018-04-30 22:29:21 +00:00
|
|
|
FreeSpacePtr rightStart = rightNeighbor->key;
|
|
|
|
size_t rightSize = rightNode->sizeInBytes();
|
|
|
|
FreeSpacePtr rightEnd = rightNode->m_end;
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
ASSERT(rightStart == end);
|
2018-04-30 22:29:21 +00:00
|
|
|
ASSERT(leftNode->m_start + (leftNode->sizeInBytes() + sizeInBytes + rightSize) == rightEnd);
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.remove(rightNode);
|
|
|
|
m_freeSpaceStartAddressMap.remove(rightStart);
|
|
|
|
m_freeSpaceEndAddressMap.remove(rightEnd);
|
|
|
|
|
|
|
|
freeFreeSpaceNode(rightNode);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
|
|
|
leftNode->m_end += (sizeInBytes + rightSize);
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.insert(leftNode);
|
|
|
|
m_freeSpaceEndAddressMap.add(rightEnd, leftNode);
|
|
|
|
} else {
|
2018-04-30 22:29:21 +00:00
|
|
|
leftNode->m_end += sizeInBytes;
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.insert(leftNode);
|
|
|
|
m_freeSpaceEndAddressMap.add(end, leftNode);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// Cannot coalesce with left; try to see if we can coalesce with right.
|
|
|
|
|
|
|
|
if (rightNeighbor != m_freeSpaceStartAddressMap.end()) {
|
2012-10-07 23:12:07 +00:00
|
|
|
FreeSpaceNode* rightNode = rightNeighbor->value;
|
2018-04-30 22:29:21 +00:00
|
|
|
FreeSpacePtr rightStart = rightNeighbor->key;
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
ASSERT(rightStart == end);
|
2018-04-30 22:29:21 +00:00
|
|
|
ASSERT(start + (sizeInBytes + rightNode->sizeInBytes()) == rightNode->m_end);
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.remove(rightNode);
|
|
|
|
m_freeSpaceStartAddressMap.remove(rightStart);
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2012-01-23 23:30:57 +00:00
|
|
|
rightNode->m_start = start;
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.insert(rightNode);
|
|
|
|
m_freeSpaceStartAddressMap.add(start, rightNode);
|
|
|
|
} else {
|
|
|
|
// Nothing to coalesce with, so create a new free space node and add it.
|
|
|
|
|
|
|
|
FreeSpaceNode* node = allocFreeSpaceNode();
|
2018-04-30 22:29:21 +00:00
|
|
|
|
2012-01-23 23:30:57 +00:00
|
|
|
node->m_start = start;
|
2018-04-30 22:29:21 +00:00
|
|
|
node->m_end = start + sizeInBytes;
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
m_freeSpaceSizeMap.insert(node);
|
|
|
|
m_freeSpaceStartAddressMap.add(start, node);
|
|
|
|
m_freeSpaceEndAddressMap.add(end, node);
|
|
|
|
}
|
|
|
|
}
|
2012-05-10 00:19:55 +00:00
|
|
|
|
|
|
|
#if ENABLE(META_ALLOCATOR_PROFILE)
|
|
|
|
dumpProfile();
|
|
|
|
#endif
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void MetaAllocator::incrementPageOccupancy(void* address, size_t sizeInBytes)
|
|
|
|
{
|
|
|
|
uintptr_t firstPage = reinterpret_cast<uintptr_t>(address) >> m_logPageSize;
|
|
|
|
uintptr_t lastPage = (reinterpret_cast<uintptr_t>(address) + sizeInBytes - 1) >> m_logPageSize;
|
2019-08-14 20:33:14 +00:00
|
|
|
|
|
|
|
uintptr_t currentPageStart = 0;
|
|
|
|
size_t count = 0;
|
|
|
|
auto flushNeedPages = [&] {
|
|
|
|
if (!currentPageStart)
|
|
|
|
return;
|
|
|
|
notifyNeedPage(reinterpret_cast<void*>(currentPageStart << m_logPageSize), count);
|
|
|
|
currentPageStart = 0;
|
|
|
|
count = 0;
|
|
|
|
};
|
2011-09-11 05:49:36 +00:00
|
|
|
|
|
|
|
for (uintptr_t page = firstPage; page <= lastPage; ++page) {
|
2019-08-14 20:33:14 +00:00
|
|
|
auto result = m_pageOccupancyMap.add(page, 1);
|
|
|
|
if (result.isNewEntry) {
|
2011-09-11 05:49:36 +00:00
|
|
|
m_bytesCommitted += m_pageSize;
|
2019-08-14 20:33:14 +00:00
|
|
|
if (!currentPageStart)
|
|
|
|
currentPageStart = page;
|
|
|
|
++count;
|
|
|
|
} else {
|
|
|
|
result.iterator->value++;
|
|
|
|
flushNeedPages();
|
|
|
|
}
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
2019-08-14 20:33:14 +00:00
|
|
|
flushNeedPages();
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void MetaAllocator::decrementPageOccupancy(void* address, size_t sizeInBytes)
|
|
|
|
{
|
|
|
|
uintptr_t firstPage = reinterpret_cast<uintptr_t>(address) >> m_logPageSize;
|
|
|
|
uintptr_t lastPage = (reinterpret_cast<uintptr_t>(address) + sizeInBytes - 1) >> m_logPageSize;
|
2019-08-14 20:33:14 +00:00
|
|
|
|
|
|
|
uintptr_t currentPageStart = 0;
|
|
|
|
size_t count = 0;
|
|
|
|
auto flushFreePages = [&] {
|
|
|
|
if (!currentPageStart)
|
|
|
|
return;
|
|
|
|
notifyPageIsFree(reinterpret_cast<void*>(currentPageStart << m_logPageSize), count);
|
|
|
|
currentPageStart = 0;
|
|
|
|
count = 0;
|
|
|
|
};
|
2011-09-11 05:49:36 +00:00
|
|
|
|
|
|
|
for (uintptr_t page = firstPage; page <= lastPage; ++page) {
|
|
|
|
HashMap<uintptr_t, size_t>::iterator iter = m_pageOccupancyMap.find(page);
|
|
|
|
ASSERT(iter != m_pageOccupancyMap.end());
|
2012-10-07 23:12:07 +00:00
|
|
|
if (!--(iter->value)) {
|
2011-09-11 05:49:36 +00:00
|
|
|
m_pageOccupancyMap.remove(iter);
|
|
|
|
m_bytesCommitted -= m_pageSize;
|
2019-08-14 20:33:14 +00:00
|
|
|
if (!currentPageStart)
|
|
|
|
currentPageStart = page;
|
|
|
|
++count;
|
|
|
|
} else
|
|
|
|
flushFreePages();
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
2019-08-14 20:33:14 +00:00
|
|
|
flushFreePages();
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
Make the VM Traps mechanism non-polling for the DFG and FTL.
https://bugs.webkit.org/show_bug.cgi?id=168920
<rdar://problem/30738588>
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
1. Added a ENABLE(SIGNAL_BASED_VM_TRAPS) configuration in Platform.h.
This is currently only enabled for OS(DARWIN) and ENABLE(JIT).
2. Added assembler functions for overwriting an instruction with a breakpoint.
3. Added a new JettisonDueToVMTraps jettison reason.
4. Added CodeBlock and DFG::CommonData utility functions for over-writing
invalidation points with breakpoint instructions.
5. The BytecodeGenerator now emits the op_check_traps bytecode unconditionally.
6. Remove the JSC_alwaysCheckTraps option because of (4) above.
For ports that don't ENABLE(SIGNAL_BASED_VM_TRAPS), we'll force
Options::usePollingTraps() to always be true. This makes the VMTraps
implementation fall back to using polling based traps only.
7. Make VMTraps support signal based traps.
Some design and implementation details of signal based VM traps:
- The implementation makes use of 2 signal handlers for SIGUSR1 and SIGTRAP.
- VMTraps::fireTrap() will set the flag for the requested trap and instantiate
a SignalSender. The SignalSender will send SIGUSR1 to the mutator thread that
we want to trap, and check for the occurence of one of the following events:
a. VMTraps::handleTraps() has been called for the requested trap, or
b. the VM is inactive and is no longer executing any JS code. We determine
this to be the case if the thread no longer owns the JSLock and the VM's
entryScope is null.
Note: the thread can relinquish the JSLock while the VM's entryScope is not
null. This happens when the thread calls JSLock::dropAllLocks() before
calling a host function that may block on IO (or whatever). For our purpose,
this counts as the VM still running JS code, and VM::fireTrap() will still
be waiting.
If the SignalSender does not see either of these events, it will sleep for a
while and then re-send SIGUSR1 and check for the events again. When it sees
one of these events, it will consider the mutator to have received the trap
request.
- The SIGUSR1 handler will try to insert breakpoints at the invalidation points
in the DFG/FTL codeBlock at the top of the stack. This allows the mutator
thread to break (with a SIGTRAP) exactly at an invalidation point, where it's
safe to jettison the codeBlock.
Note: we cannot have the requester thread (that called VMTraps::fireTrap())
insert the breakpoint instructions itself. This is because we need the
register state of the the mutator thread (that we want to trap in) in order to
find the codeBlocks that we wish to insert the breakpoints in. Currently,
we don't have a generic way for the requester thread to get the register state
of another thread.
- The SIGTRAP handler will check to see if it is trapping on a breakpoint at an
invalidation point. If so, it will jettison the codeBlock and adjust the PC
to re-execute the invalidation OSR exit off-ramp. After the OSR exit, the
baseline JIT code will eventually reach an op_check_traps and call
VMTraps::handleTraps().
If the handler is not trapping at an invalidation point, then it must be
observing an assertion failure (which also uses the breakpoint instruction).
In this case, the handler will defer to the default SIGTRAP handler and crash.
- The reason we need the SignalSender is because SignalSender::send() is called
from another thread in a loop, so that VMTraps::fireTrap() can return sooner.
send() needs to make use of the VM pointer, and it is not guaranteed that the
VM will outlive the thread. SignalSender provides the mechanism by which we
can nullify the VM pointer when the VM dies so that the thread does not
continue to use it.
* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::replaceWithBrk):
* assembler/ARMAssembler.h:
(JSC::ARMAssembler::replaceWithBrk):
* assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::replaceWithBkpt):
* assembler/MIPSAssembler.h:
(JSC::MIPSAssembler::replaceWithBkpt):
* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::replaceWithJump):
* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::replaceWithBreakpoint):
* assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::replaceWithBreakpoint):
* assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::replaceWithJump):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::replaceWithBreakpoint):
* assembler/X86Assembler.h:
(JSC::X86Assembler::replaceWithInt3):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::hasInstalledVMTrapBreakpoints):
(JSC::CodeBlock::installVMTrapBreakpoints):
* bytecode/CodeBlock.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitCheckTraps):
* dfg/DFGCommonData.cpp:
(JSC::DFG::CommonData::installVMTrapBreakpoints):
(JSC::DFG::CommonData::isVMTrapBreakpoint):
* dfg/DFGCommonData.h:
(JSC::DFG::CommonData::hasInstalledVMTrapsBreakpoints):
* dfg/DFGJumpReplacement.cpp:
(JSC::DFG::JumpReplacement::installVMTrapBreakpoint):
* dfg/DFGJumpReplacement.h:
(JSC::DFG::JumpReplacement::dataLocation):
* dfg/DFGNodeType.h:
* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::contains):
* heap/CodeBlockSet.h:
* heap/CodeBlockSetInlines.h:
(JSC::CodeBlockSet::iterate):
* heap/Heap.cpp:
(JSC::Heap::forEachCodeBlockIgnoringJITPlansImpl):
* heap/Heap.h:
* heap/HeapInlines.h:
(JSC::Heap::forEachCodeBlockIgnoringJITPlans):
* heap/MachineStackMarker.h:
(JSC::MachineThreads::threadsListHead):
* jit/ExecutableAllocator.cpp:
(JSC::ExecutableAllocator::isValidExecutableMemory):
* jit/ExecutableAllocator.h:
* profiler/ProfilerJettisonReason.cpp:
(WTF::printInternal):
* profiler/ProfilerJettisonReason.h:
* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
* runtime/Options.cpp:
(JSC::overrideDefaults):
* runtime/Options.h:
* runtime/PlatformThread.h:
(JSC::platformThreadSignal):
* runtime/VM.cpp:
(JSC::VM::~VM):
(JSC::VM::ensureWatchdog):
(JSC::VM::handleTraps): Deleted.
(JSC::VM::setNeedAsynchronousTerminationSupport): Deleted.
* runtime/VM.h:
(JSC::VM::ownerThread):
(JSC::VM::traps):
(JSC::VM::handleTraps):
(JSC::VM::needTrapHandling):
(JSC::VM::needAsynchronousTerminationSupport): Deleted.
* runtime/VMTraps.cpp:
(JSC::VMTraps::vm):
(JSC::SignalContext::SignalContext):
(JSC::SignalContext::adjustPCToPointToTrappingInstruction):
(JSC::vmIsInactive):
(JSC::findActiveVMAndStackBounds):
(JSC::handleSigusr1):
(JSC::handleSigtrap):
(JSC::installSignalHandlers):
(JSC::sanitizedTopCallFrame):
(JSC::isSaneFrame):
(JSC::VMTraps::tryInstallTrapBreakpoints):
(JSC::VMTraps::invalidateCodeBlocksOnStack):
(JSC::VMTraps::VMTraps):
(JSC::VMTraps::willDestroyVM):
(JSC::VMTraps::addSignalSender):
(JSC::VMTraps::removeSignalSender):
(JSC::VMTraps::SignalSender::willDestroyVM):
(JSC::VMTraps::SignalSender::send):
(JSC::VMTraps::fireTrap):
(JSC::VMTraps::handleTraps):
* runtime/VMTraps.h:
(JSC::VMTraps::~VMTraps):
(JSC::VMTraps::needTrapHandling):
(JSC::VMTraps::notifyGrabAllLocks):
(JSC::VMTraps::SignalSender::SignalSender):
(JSC::VMTraps::invalidateCodeBlocksOnStack):
* tools/VMInspector.cpp:
* tools/VMInspector.h:
(JSC::VMInspector::getLock):
(JSC::VMInspector::iterate):
Source/WebCore:
No new tests needed. This is covered by existing tests.
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::WorkerScriptController):
(WebCore::WorkerScriptController::scheduleExecutionTermination):
Source/WTF:
Make StackBounds more useful for checking if a pointer is within stack bounds.
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::isInAllocatedMemory):
* wtf/MetaAllocator.h:
* wtf/Platform.h:
* wtf/StackBounds.h:
(WTF::StackBounds::emptyBounds):
(WTF::StackBounds::StackBounds):
(WTF::StackBounds::isEmpty):
(WTF::StackBounds::contains):
Canonical link: https://commits.webkit.org/186409@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@213652 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-09 19:08:46 +00:00
|
|
|
bool MetaAllocator::isInAllocatedMemory(const AbstractLocker&, void* address)
|
Implement a sampling profiler
https://bugs.webkit.org/show_bug.cgi?id=151713
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
This patch implements a sampling profiler for JavaScriptCore
that will be used in the Inspector UI. The implementation works as follows:
We queue the sampling profiler to run a task on a background
thread every 1ms. When the queued task executes, the sampling profiler
will pause the JSC execution thread and attempt to take a stack trace.
The sampling profiler does everything it can to be very careful
while taking this stack trace. Because it's reading arbitrary memory,
the sampling profiler must validate every pointer it reads from.
The sampling profiler tries to get an ExecutableBase for every call frame
it reads. It first tries to read the CodeBlock slot. It does this because
it can be 100% certain that a pointer is a CodeBlock while it's taking a
stack trace. But, not every call frame will have a CodeBlock. So we must read
the call frame's callee. For these stack traces where we read the callee, we
must verify the callee pointer, and the pointer traversal to an ExecutableBase,
on the main JSC execution thread, and not on the thread taking the stack
trace. We do this verification either before we run the marking phase in
GC, or when somebody asks the SamplingProfiler to materialize its data.
The SamplingProfiler must also be careful to not grab any locks while the JSC execution
thread is paused (this means it can't do anything that mallocs) because
that could cause a deadlock. Therefore, the sampling profiler grabs
locks for all data structures it consults before it pauses the JSC
execution thread.
* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeBlock.h:
(JSC::CodeBlock::clearVisitWeaklyHasBeenCalled):
(JSC::CodeBlockSet::mark):
* dfg/DFGNodeType.h:
* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::promoteYoungCodeBlocks):
(JSC::CodeBlockSet::clearMarksForFullCollection):
(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):
(JSC::CodeBlockSet::contains):
(JSC::CodeBlockSet::writeBarrierCurrentlyExecutingCodeBlocks):
(JSC::CodeBlockSet::remove): Deleted.
* heap/CodeBlockSet.h:
(JSC::CodeBlockSet::getLock):
(JSC::CodeBlockSet::iterate):
The sampling pofiler uses the heap's CodeBlockSet to validate
CodeBlock pointers. This data structure must now be under a lock
because we must be certain we're not pausing the JSC execution thread
while it's manipulating this data structure.
* heap/ConservativeRoots.cpp:
(JSC::ConservativeRoots::ConservativeRoots):
(JSC::ConservativeRoots::grow):
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::genericAddSpan):
(JSC::ConservativeRoots::add):
(JSC::CompositeMarkHook::CompositeMarkHook):
(JSC::CompositeMarkHook::mark):
* heap/ConservativeRoots.h:
* heap/Heap.cpp:
(JSC::Heap::markRoots):
(JSC::Heap::visitHandleStack):
(JSC::Heap::visitSamplingProfiler):
(JSC::Heap::traceCodeBlocksAndJITStubRoutines):
(JSC::Heap::snapshotMarkedSpace):
* heap/Heap.h:
(JSC::Heap::structureIDTable):
(JSC::Heap::codeBlockSet):
* heap/MachineStackMarker.cpp:
(pthreadSignalHandlerSuspendResume):
(JSC::getCurrentPlatformThread):
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::Thread::createForCurrentThread):
(JSC::MachineThreads::Thread::operator==):
(JSC::isThreadInList):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::machineThreadForCurrentThread):
(JSC::MachineThreads::removeThread):
(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::Thread::Thread):
(JSC::MachineThreads::Thread::~Thread):
(JSC::MachineThreads::Thread::suspend):
(JSC::MachineThreads::Thread::resume):
(JSC::MachineThreads::Thread::getRegisters):
(JSC::MachineThreads::Thread::Registers::stackPointer):
(JSC::MachineThreads::Thread::Registers::framePointer):
(JSC::MachineThreads::Thread::Registers::instructionPointer):
(JSC::MachineThreads::Thread::freeRegisters):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::pthreadSignalHandlerSuspendResume): Deleted.
(JSC::MachineThreads::Thread::operator!=): Deleted.
* heap/MachineStackMarker.h:
(JSC::MachineThreads::Thread::operator!=):
(JSC::MachineThreads::getLock):
(JSC::MachineThreads::threadsListHead):
We can now ask a MachineThreads::Thread for its frame pointer
and program counter on darwin and windows platforms. efl
and gtk implementations will happen in another patch.
* heap/MarkedBlockSet.h:
(JSC::MarkedBlockSet::getLock):
(JSC::MarkedBlockSet::add):
(JSC::MarkedBlockSet::remove):
(JSC::MarkedBlockSet::recomputeFilter):
(JSC::MarkedBlockSet::filter):
(JSC::MarkedBlockSet::set):
* heap/MarkedSpace.cpp:
(JSC::Free::Free):
(JSC::Free::operator()):
(JSC::FreeOrShrink::FreeOrShrink):
(JSC::FreeOrShrink::operator()):
(JSC::MarkedSpace::~MarkedSpace):
(JSC::MarkedSpace::isPagedOut):
(JSC::MarkedSpace::freeBlock):
(JSC::MarkedSpace::freeOrShrinkBlock):
(JSC::MarkedSpace::shrink):
* heap/MarkedSpace.h:
(JSC::MarkedSpace::forEachLiveCell):
(JSC::MarkedSpace::forEachDeadCell):
* interpreter/CallFrame.h:
(JSC::ExecState::calleeAsValue):
(JSC::ExecState::callee):
(JSC::ExecState::unsafeCallee):
(JSC::ExecState::codeBlock):
(JSC::ExecState::scope):
* jit/ExecutableAllocator.cpp:
(JSC::ExecutableAllocator::dumpProfile):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::isValidExecutableMemory):
* jit/ExecutableAllocator.h:
* jit/ExecutableAllocatorFixedVMPool.cpp:
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::isValidExecutableMemory):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::committedByteCount):
The sampling profiler consults the ExecutableAllocator to check
if the frame pointer it reads is in executable allocated memory.
* jsc.cpp:
(GlobalObject::finishCreation):
(functionCheckModuleSyntax):
(functionStartSamplingProfiler):
(functionSamplingProfilerStackTraces):
* llint/LLIntPCRanges.h: Added.
(JSC::LLInt::isLLIntPC):
* offlineasm/asm.rb:
I added the ability to test whether the PC is executing
LLInt code because this code is not part of the memory
our executable allocator allocates.
* runtime/Executable.h:
(JSC::ExecutableBase::isModuleProgramExecutable):
(JSC::ExecutableBase::isExecutableType):
(JSC::ExecutableBase::isHostFunction):
* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
(JSC::JSLock::unlock):
* runtime/Options.h:
* runtime/SamplingProfiler.cpp: Added.
(JSC::reportStats):
(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::walk):
(JSC::FrameWalker::wasValidWalk):
(JSC::FrameWalker::advanceToParentFrame):
(JSC::FrameWalker::isAtTop):
(JSC::FrameWalker::resetAtMachineFrame):
(JSC::FrameWalker::isValidFramePointer):
(JSC::FrameWalker::isValidCodeBlock):
(JSC::FrameWalker::tryToGetExecutableFromCallee):
The FrameWalker class is used to walk the stack in a safe
manner. It doesn't do anything that would deadlock, and it
validates all pointers that it sees.
(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::~SamplingProfiler):
(JSC::SamplingProfiler::visit):
(JSC::SamplingProfiler::shutdown):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::stop):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::dispatchIfNecessary):
(JSC::SamplingProfiler::dispatchFunction):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::observeStackTrace):
(JSC::SamplingProfiler::clearData):
(JSC::displayName):
(JSC::startLine):
(JSC::startColumn):
(JSC::sourceID):
(JSC::url):
(JSC::SamplingProfiler::stacktracesAsJSON):
* runtime/SamplingProfiler.h: Added.
(JSC::SamplingProfiler::getLock):
(JSC::SamplingProfiler::setTimingInterval):
(JSC::SamplingProfiler::stackTraces):
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setLastStackTop):
(JSC::VM::createContextGroup):
(JSC::VM::ensureWatchdog):
(JSC::VM::ensureSamplingProfiler):
(JSC::thunkGeneratorForIntrinsic):
* runtime/VM.h:
(JSC::VM::watchdog):
(JSC::VM::isSafeToRecurse):
(JSC::VM::lastStackTop):
(JSC::VM::scratchBufferForSize):
(JSC::VM::samplingProfiler):
(JSC::VM::setShouldRewriteConstAsVar):
(JSC::VM::setLastStackTop): Deleted.
* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope):
* tests/stress/sampling-profiler: Added.
* tests/stress/sampling-profiler-anonymous-function.js: Added.
(foo):
(baz):
* tests/stress/sampling-profiler-basic.js: Added.
(bar):
(foo):
(nothing):
(top):
(jaz):
(kaz):
(checkInlining):
* tests/stress/sampling-profiler-deep-stack.js: Added.
(foo):
(hellaDeep):
(start):
* tests/stress/sampling-profiler-microtasks.js: Added.
(testResults):
(loop.jaz):
(loop):
* tests/stress/sampling-profiler/samplingProfiler.js: Added.
(assert):
(let.nodePrototype.makeChildIfNeeded):
(makeNode):
(updateCallingContextTree):
(doesTreeHaveStackTrace):
(makeTree):
(runTest):
(dumpTree):
* tools/JSDollarVMPrototype.cpp:
(JSC::JSDollarVMPrototype::isInObjectSpace):
(JSC::JSDollarVMPrototype::isInStorageSpace):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::jitCompile):
We now have a boolean that's set to true when
we're executing a RegExp, and to false otherwise.
The boolean lives off of VM.
* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeBlock.h:
(JSC::CodeBlock::clearVisitWeaklyHasBeenCalled):
(JSC::CodeBlockSet::mark):
* dfg/DFGNodeType.h:
* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::promoteYoungCodeBlocks):
(JSC::CodeBlockSet::clearMarksForFullCollection):
(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):
(JSC::CodeBlockSet::contains):
(JSC::CodeBlockSet::writeBarrierCurrentlyExecutingCodeBlocks):
(JSC::CodeBlockSet::remove): Deleted.
* heap/CodeBlockSet.h:
(JSC::CodeBlockSet::getLock):
(JSC::CodeBlockSet::iterate):
* heap/ConservativeRoots.cpp:
(JSC::ConservativeRoots::ConservativeRoots):
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::add):
(JSC::CompositeMarkHook::CompositeMarkHook):
(JSC::CompositeMarkHook::mark):
* heap/ConservativeRoots.h:
* heap/Heap.cpp:
(JSC::Heap::markRoots):
(JSC::Heap::visitHandleStack):
(JSC::Heap::visitSamplingProfiler):
(JSC::Heap::traceCodeBlocksAndJITStubRoutines):
* heap/Heap.h:
(JSC::Heap::structureIDTable):
(JSC::Heap::codeBlockSet):
* heap/HeapInlines.h:
(JSC::Heap::didFreeBlock):
(JSC::Heap::isPointerGCObject):
(JSC::Heap::isValueGCObject):
* heap/MachineStackMarker.cpp:
(pthreadSignalHandlerSuspendResume):
(JSC::getCurrentPlatformThread):
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::Thread::createForCurrentThread):
(JSC::MachineThreads::Thread::operator==):
(JSC::isThreadInList):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::machineThreadForCurrentThread):
(JSC::MachineThreads::removeThread):
(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::Thread::Thread):
(JSC::MachineThreads::Thread::~Thread):
(JSC::MachineThreads::Thread::suspend):
(JSC::MachineThreads::Thread::resume):
(JSC::MachineThreads::Thread::getRegisters):
(JSC::MachineThreads::Thread::Registers::stackPointer):
(JSC::MachineThreads::Thread::Registers::framePointer):
(JSC::MachineThreads::Thread::Registers::instructionPointer):
(JSC::MachineThreads::Thread::freeRegisters):
(JSC::pthreadSignalHandlerSuspendResume): Deleted.
(JSC::MachineThreads::Thread::operator!=): Deleted.
* heap/MachineStackMarker.h:
(JSC::MachineThreads::Thread::operator!=):
(JSC::MachineThreads::getLock):
(JSC::MachineThreads::threadsListHead):
* heap/MarkedBlockSet.h:
* heap/MarkedSpace.cpp:
(JSC::Free::Free):
(JSC::Free::operator()):
(JSC::FreeOrShrink::FreeOrShrink):
(JSC::FreeOrShrink::operator()):
* interpreter/CallFrame.h:
(JSC::ExecState::calleeAsValue):
(JSC::ExecState::callee):
(JSC::ExecState::unsafeCallee):
(JSC::ExecState::codeBlock):
(JSC::ExecState::scope):
* jit/ExecutableAllocator.cpp:
(JSC::ExecutableAllocator::dumpProfile):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::isValidExecutableMemory):
* jit/ExecutableAllocator.h:
* jit/ExecutableAllocatorFixedVMPool.cpp:
(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::isValidExecutableMemory):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::committedByteCount):
* jsc.cpp:
(GlobalObject::finishCreation):
(functionCheckModuleSyntax):
(functionPlatformSupportsSamplingProfiler):
(functionStartSamplingProfiler):
(functionSamplingProfilerStackTraces):
* llint/LLIntPCRanges.h: Added.
(JSC::LLInt::isLLIntPC):
* offlineasm/asm.rb:
* runtime/Executable.h:
(JSC::ExecutableBase::isModuleProgramExecutable):
(JSC::ExecutableBase::isExecutableType):
(JSC::ExecutableBase::isHostFunction):
* runtime/JSLock.cpp:
(JSC::JSLock::didAcquireLock):
(JSC::JSLock::unlock):
* runtime/Options.h:
* runtime/SamplingProfiler.cpp: Added.
(JSC::reportStats):
(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::walk):
(JSC::FrameWalker::wasValidWalk):
(JSC::FrameWalker::advanceToParentFrame):
(JSC::FrameWalker::isAtTop):
(JSC::FrameWalker::resetAtMachineFrame):
(JSC::FrameWalker::isValidFramePointer):
(JSC::FrameWalker::isValidCodeBlock):
(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::~SamplingProfiler):
(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::visit):
(JSC::SamplingProfiler::shutdown):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::stop):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::dispatchIfNecessary):
(JSC::SamplingProfiler::dispatchFunction):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::clearData):
(JSC::displayName):
(JSC::SamplingProfiler::stacktracesAsJSON):
(WTF::printInternal):
* runtime/SamplingProfiler.h: Added.
(JSC::SamplingProfiler::StackFrame::StackFrame):
(JSC::SamplingProfiler::getLock):
(JSC::SamplingProfiler::setTimingInterval):
(JSC::SamplingProfiler::stackTraces):
* runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setLastStackTop):
(JSC::VM::createContextGroup):
(JSC::VM::ensureWatchdog):
(JSC::VM::ensureSamplingProfiler):
(JSC::thunkGeneratorForIntrinsic):
* runtime/VM.h:
(JSC::VM::watchdog):
(JSC::VM::samplingProfiler):
(JSC::VM::isSafeToRecurse):
(JSC::VM::lastStackTop):
(JSC::VM::scratchBufferForSize):
(JSC::VM::setLastStackTop): Deleted.
* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope):
* tests/stress/sampling-profiler: Added.
* tests/stress/sampling-profiler-anonymous-function.js: Added.
(platformSupportsSamplingProfiler.foo):
(platformSupportsSamplingProfiler.baz):
(platformSupportsSamplingProfiler):
* tests/stress/sampling-profiler-basic.js: Added.
(platformSupportsSamplingProfiler.bar):
(platformSupportsSamplingProfiler.foo):
(platformSupportsSamplingProfiler.nothing):
(platformSupportsSamplingProfiler.top):
(platformSupportsSamplingProfiler.jaz):
(platformSupportsSamplingProfiler.kaz):
(platformSupportsSamplingProfiler.checkInlining):
(platformSupportsSamplingProfiler):
* tests/stress/sampling-profiler-deep-stack.js: Added.
(platformSupportsSamplingProfiler.foo):
(platformSupportsSamplingProfiler.let.hellaDeep):
(platformSupportsSamplingProfiler.let.start):
(platformSupportsSamplingProfiler):
* tests/stress/sampling-profiler-microtasks.js: Added.
(platformSupportsSamplingProfiler.testResults):
(platformSupportsSamplingProfiler):
(platformSupportsSamplingProfiler.loop.jaz):
(platformSupportsSamplingProfiler.loop):
* tests/stress/sampling-profiler/samplingProfiler.js: Added.
(assert):
(let.nodePrototype.makeChildIfNeeded):
(makeNode):
(updateCallingContextTree):
(doesTreeHaveStackTrace):
(makeTree):
(runTest):
(dumpTree):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::jitCompile):
Source/WTF:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::decrementPageOccupancy):
(WTF::MetaAllocator::isInAllocatedMemory):
(WTF::MetaAllocator::roundUp):
* wtf/MetaAllocator.h:
(WTF::MetaAllocator::getLock):
* wtf/Platform.h:
Tools:
* Scripts/run-jsc-stress-tests:
Canonical link: https://commits.webkit.org/171049@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194840 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-01-11 06:49:49 +00:00
|
|
|
{
|
|
|
|
ASSERT(m_lock.isLocked());
|
|
|
|
uintptr_t page = reinterpret_cast<uintptr_t>(address) >> m_logPageSize;
|
|
|
|
return m_pageOccupancyMap.contains(page);
|
|
|
|
}
|
|
|
|
|
2011-09-11 05:49:36 +00:00
|
|
|
size_t MetaAllocator::roundUp(size_t sizeInBytes)
|
|
|
|
{
|
|
|
|
if (std::numeric_limits<size_t>::max() - m_allocationGranule <= sizeInBytes)
|
|
|
|
CRASH();
|
|
|
|
return (sizeInBytes + m_allocationGranule - 1) & ~(m_allocationGranule - 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
MetaAllocator::FreeSpaceNode* MetaAllocator::allocFreeSpaceNode()
|
|
|
|
{
|
|
|
|
#ifndef NDEBUG
|
|
|
|
m_mallocBalance++;
|
|
|
|
#endif
|
Experiment: create lots of different malloc zones for easier accounting of memory use
https://bugs.webkit.org/show_bug.cgi?id=186422
Patch by Yusuke Suzuki <ysuzuki@apple.com> and Simon Fraser <simon.fraser@apple.com> on 2020-01-02
Reviewed by Saam Barati.
Source/bmalloc:
* bmalloc/BPlatform.h:
* bmalloc/Environment.cpp:
(bmalloc::Environment::computeIsDebugHeapEnabled):
* bmalloc/IsoHeap.h:
(bmalloc::api::IsoHeap::IsoHeap):
* bmalloc/IsoHeapInlines.h:
(bmalloc::api::IsoHeap<Type>::IsoHeap):
* bmalloc/IsoTLSInlines.h:
(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateSlow):
Source/JavaScriptCore:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/AssemblerBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* assembler/AssemblerBuffer.h:
(JSC::AssemblerData::AssemblerData):
(JSC::AssemblerData::operator=):
(JSC::AssemblerData::~AssemblerData):
(JSC::AssemblerData::grow):
* bytecode/AccessCase.cpp:
* bytecode/AccessCase.h:
* bytecode/BytecodeBasicBlock.cpp:
* bytecode/BytecodeBasicBlock.h:
* bytecode/CodeBlock.cpp:
* bytecode/CodeBlock.h:
* bytecode/InstructionStream.cpp:
* bytecode/InstructionStream.h:
* bytecode/PolymorphicAccess.cpp:
* bytecode/PolymorphicAccess.h:
* bytecode/UnlinkedMetadataTable.cpp:
(JSC::UnlinkedMetadataTable::finalize):
* bytecode/UnlinkedMetadataTable.h:
* bytecode/UnlinkedMetadataTableInlines.h:
(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::~UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::link):
(JSC::UnlinkedMetadataTable::unlink):
* bytecode/ValueProfile.h:
(JSC::ValueProfileAndVirtualRegisterBuffer::ValueProfileAndVirtualRegisterBuffer):
* bytecode/Watchpoint.cpp:
* bytecode/Watchpoint.h:
* dfg/DFGBasicBlock.cpp:
* dfg/DFGBasicBlock.h:
* dfg/DFGNode.cpp:
* dfg/DFGNode.h:
* dfg/DFGSpeculativeJIT.cpp:
* dfg/DFGSpeculativeJIT.h:
* heap/BlockDirectory.cpp:
* heap/BlockDirectory.h:
* heap/FastMallocAlignedMemoryAllocator.cpp:
(JSC::FastMallocAlignedMemoryAllocator::FastMallocAlignedMemoryAllocator):
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeAlignedMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):
* heap/FastMallocAlignedMemoryAllocator.h:
* heap/GCSegmentedArray.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* heap/GCSegmentedArray.h:
* heap/GCSegmentedArrayInlines.h:
(JSC::GCArraySegment<T>::create):
(JSC::GCArraySegment<T>::destroy):
* heap/GigacageAlignedMemoryAllocator.cpp:
(JSC::GigacageAlignedMemoryAllocator::GigacageAlignedMemoryAllocator):
(JSC::GigacageAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::GigacageAlignedMemoryAllocator::freeAlignedMemory):
(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):
* heap/GigacageAlignedMemoryAllocator.h:
* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::~IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
* heap/IsoAlignedMemoryAllocator.h:
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::IsoSubspace):
* heap/MarkedBlock.cpp:
* heap/MarkedBlock.h:
* heap/WeakBlock.cpp:
(JSC::WeakBlock::create):
(JSC::WeakBlock::destroy):
* heap/WeakBlock.h:
* jit/JITCode.cpp:
* jit/JITCode.h:
* jit/RegisterAtOffsetList.cpp:
* jit/RegisterAtOffsetList.h:
* parser/Nodes.cpp:
* parser/Nodes.h:
* parser/ParserArena.cpp:
(JSC::ParserArena::deallocateObjects):
(JSC::ParserArena::allocateFreeablePool):
* parser/ParserArena.h:
* parser/SourceProvider.cpp:
* parser/SourceProvider.h:
* parser/SourceProviderCache.cpp:
* parser/SourceProviderCache.h:
* parser/SourceProviderCacheItem.h:
(JSC::SourceProviderCacheItem::create):
* runtime/CachePayload.cpp:
(JSC::CachePayload::makeMallocPayload):
* runtime/CachePayload.h:
* runtime/CachedBytecode.h:
(JSC::CachedBytecode::create):
* runtime/CachedTypes.cpp:
(JSC::Encoder::release):
(JSC::Encoder::Page::Page):
(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):
(JSC::CachedInstructionStream::decode const):
* runtime/PropertyMapHashTable.h:
(JSC::PropertyTable::rehash):
* runtime/PropertyTable.cpp:
(JSC::PropertyTable::PropertyTable):
(JSC::PropertyTable::~PropertyTable):
* runtime/SymbolTable.cpp:
* runtime/SymbolTable.h:
* runtime/VM.cpp:
(JSC::VM::~VM):
* runtime/VM.h:
(JSC::ScratchBuffer::create):
(JSC::VM::exceptionFuzzingBuffer):
* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):
* wasm/WasmInstance.h:
* wasm/WasmTable.cpp:
(JSC::Wasm::Table::Table):
(JSC::Wasm::FuncRefTable::FuncRefTable):
* wasm/WasmTable.h:
Source/WebCore:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/SerializedScriptValue.cpp:
* bindings/js/SerializedScriptValue.h:
* css/CSSFontFace.cpp:
* css/CSSFontFace.h:
* css/CSSSelector.cpp:
* css/CSSSelector.h:
* css/CSSValue.cpp:
* css/CSSValue.h:
* css/StyleProperties.cpp:
(WebCore::ImmutableStyleProperties::create):
* css/StyleProperties.h:
* css/StyleRule.cpp:
* css/StyleRule.h:
* dom/ElementData.cpp:
(WebCore::ShareableElementData::createWithAttributes):
(WebCore::UniqueElementData::makeShareableCopy const):
* dom/ElementData.h:
* dom/NodeRareData.cpp:
* dom/NodeRareData.h:
* dom/QualifiedName.cpp:
* dom/QualifiedName.h:
* html/parser/HTMLDocumentParser.cpp:
* html/parser/HTMLDocumentParser.h:
* loader/DocumentLoader.cpp:
* loader/DocumentLoader.h:
* loader/ResourceLoader.cpp:
* loader/ResourceLoader.h:
* loader/cache/CachedResource.cpp:
* loader/cache/CachedResource.h:
* page/PerformanceEntry.cpp:
* page/PerformanceEntry.h:
* platform/graphics/Font.cpp:
* platform/graphics/Font.h:
* platform/graphics/FontCascadeFonts.cpp:
* platform/graphics/FontCascadeFonts.h:
* platform/graphics/Region.cpp:
* platform/graphics/Region.h:
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::releaseUint8Vector):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/nicosia/NicosiaBuffer.cpp:
(Nicosia::Buffer::Buffer):
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandleInternal.h:
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::closeCurrentStream):
(WebCore::advanceCurrentStream):
* rendering/RenderLayer.cpp:
* rendering/RenderLayer.h:
* rendering/TableLayout.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* rendering/TableLayout.h:
* rendering/style/RenderStyle.cpp:
* rendering/style/RenderStyle.h:
* rendering/style/SVGRenderStyle.cpp:
* rendering/style/SVGRenderStyle.h:
* rendering/style/SVGRenderStyleDefs.cpp:
* rendering/style/SVGRenderStyleDefs.h:
* rendering/style/StyleBoxData.cpp:
* rendering/style/StyleBoxData.h:
* rendering/style/StyleInheritedData.cpp:
* rendering/style/StyleInheritedData.h:
* rendering/style/StyleRareInheritedData.cpp:
* rendering/style/StyleRareInheritedData.h:
* rendering/style/StyleRareNonInheritedData.cpp:
* rendering/style/StyleRareNonInheritedData.h:
* rendering/style/StyleSurroundData.cpp:
* rendering/style/StyleSurroundData.h:
* rendering/style/StyleTransformData.cpp:
* rendering/style/StyleTransformData.h:
* style/StyleTreeResolver.cpp:
* style/StyleTreeResolver.h:
* svg/animation/SMILTimeContainer.cpp:
* svg/animation/SMILTimeContainer.h:
Source/WebKit:
* Shared/ShareableBitmap.cpp:
(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::~ShareableBitmap):
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::HistoryEntryDataEncoder::HistoryEntryDataEncoder):
(WebKit::HistoryEntryDataEncoder::finishEncoding):
(WebKit::encodeSessionHistoryEntryData):
(WebKit::encodeLegacySessionState):
Source/WTF:
This patch introduces ENABLE(MALLOC_HEAP_BREAKDOWN). If this is enabled, we allocate malloc_zone per malloc kind.
This offers the way to investigate the usage of memory per kind by using vmmap, like the following.
VIRTUAL RESIDENT DIRTY SWAPPED ALLOCATION BYTES DIRTY+SWAP REGION
MALLOC ZONE SIZE SIZE SIZE SIZE COUNT ALLOCATED FRAG SIZE % FRAG COUNT
=========== ======= ========= ========= ========= ========= ========= ========= ====== ======
StringImpl_0x116efd000 188.0M 69.3M 30.9M 0K 139456 18.0M 12.9M 42% 34
DefaultMallocZone_0x10f487000 176.0M 53.9M 14.1M 0K 115956 9955K 4497K 32% 22
Vector_0x116eff000 162.0M 56.3M 55.3M 0K 140715 17.3M 37.9M 69% 36
MetadataTable_0x11843b000 152.0M 17.5M 17.5M 0K 14200 2353K 15.2M 87% 26
WebKit Using System Malloc_0x114cbe000 150.0M 31.6M 21.8M 0K 87422 16.7M 5278K 24% 23
InstructionStream_0x118469000 150.0M 5764K 5764K 0K 14470 4688K 1076K 19% 24
AssemblerData_0x117ee6000 150.0M 1928K 1928K 0K 1 16 1928K 100% 24
To achieve this goal without making very large change, we put a template type in various containers.
For example, Vector will take Malloc parameter (the default one is FastMalloc allocator). If ENABLE(MALLOC_HEAP_BREAKDOWN) is enabled, we change this to
specific VectorMalloc allocator, and vmmap can show memory usage of this allocator. This patch also supports malloc_zone per IsoHeap. So we can see memory
allocation per IsoHeap in vmmap.
To use this feature, we need to flip two compile time flags, ENABLE(MALLOC_HEAP_BREAKDOWN) in WTF and BENABLE_MALLOC_HEAP_BREAKDOWN in bmalloc.
And use `vmmap $PID` to dump malloc zones. To allocate objects of a class with a specific malloc-zone, use WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(HeapIdentifier) for the class,
and define allocator by DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a header and DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a cpp file.
This patch also introduce callstack collector for malloc. Vector, HashMap etc. are used to allocate various things, but the above malloc_zone feature only tells thing like "Vector
takes XXX MB memory". But what we want to know in this case is what Vector is consuming memory. We collect StackShot for each malloc call, and combine these information to tell
which callsite is consuming much memory, which tell us that what Vector is consuming memory.
* WTF.xcodeproj/project.pbxproj:
* wtf/Bag.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* wtf/Bag.h:
(WTF::Private::BagNode::BagNode): Deleted.
* wtf/BitVector.cpp:
(WTF::BitVector::OutOfLineBits::create):
(WTF::BitVector::OutOfLineBits::destroy):
* wtf/CMakeLists.txt:
* wtf/ConcurrentBuffer.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* wtf/ConcurrentBuffer.h:
* wtf/DebugHeap.cpp: Copied from Source/JavaScriptCore/runtime/CachePayload.cpp.
(WTF::DebugHeap::DebugHeap):
(WTF::DebugHeap::malloc):
(WTF::DebugHeap::calloc):
(WTF::DebugHeap::memalign):
(WTF::DebugHeap::realloc):
(WTF::DebugHeap::free):
* wtf/DebugHeap.h: Added.
* wtf/FastBitVector.cpp:
(WTF::FastBitVectorWordOwner::setEqualsSlow):
(WTF::FastBitVectorWordOwner::resizeSlow):
* wtf/FastBitVector.h:
(WTF::FastBitVectorWordOwner::~FastBitVectorWordOwner):
* wtf/FastMalloc.cpp:
(WTF::fastMallocDumpMallocStats):
(WTF::AvoidRecordingScope::AvoidRecordingScope):
(WTF::AvoidRecordingScope::~AvoidRecordingScope):
(WTF::MallocCallTracker::MallocSiteData::MallocSiteData):
(WTF::MallocCallTracker::singleton):
(WTF::MallocCallTracker::MallocCallTracker):
(WTF::MallocCallTracker::recordMalloc):
(WTF::MallocCallTracker::recordRealloc):
(WTF::MallocCallTracker::recordFree):
(WTF::MallocCallTracker::dumpStats):
(WTF::fastMalloc):
(WTF::fastRealloc):
(WTF::fastFree):
(WTF::fastAlignedMalloc):
(WTF::tryFastAlignedMalloc):
(WTF::fastAlignedFree):
* wtf/FastMalloc.h:
(WTF::FastMalloc::zeroedMalloc):
(WTF::FastMalloc::tryZeroedMalloc):
* wtf/Forward.h:
* wtf/HashTable.cpp:
* wtf/HashTable.h:
(WTF::KeyTraits>::allocateTable):
(WTF::KeyTraits>::deallocateTable):
(WTF::KeyTraits>::rehash):
* wtf/MallocPtr.h:
(WTF::MallocPtr::MallocPtr):
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::zeroedMalloc):
(WTF::MallocPtr::tryMalloc):
(WTF::MallocPtr::tryZeroedMalloc):
(WTF::adoptMallocPtr):
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocFreeSpaceNode):
(WTF::MetaAllocator::freeFreeSpaceNode):
* wtf/MetaAllocatorHandle.h:
* wtf/Platform.h:
* wtf/RefCountedArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::~RefCountedArray):
(WTF::RefCountedArray::assign):
* wtf/SegmentedVector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/SegmentedVector.h:
* wtf/SmallPtrSet.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/SmallPtrSet.h:
(WTF::SmallPtrSet::~SmallPtrSet):
(WTF::SmallPtrSet::grow):
* wtf/UniqueArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/UniqueArray.h:
(WTF::UniqueArrayFree::operator() const):
(WTF::UniqueArrayFree<T::operator() const):
* wtf/Vector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/Vector.h:
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::deallocateBuffer):
(WTF::VectorBufferBase::releaseBuffer):
(WTF::VectorBuffer::releaseBuffer):
(WTF::Vector::swap):
(WTF::Malloc>::Vector):
(WTF::=):
(WTF::Malloc>::contains const):
(WTF::Malloc>::findMatching const):
(WTF::Malloc>::find const):
(WTF::Malloc>::reverseFind const):
(WTF::Malloc>::appendIfNotContains):
(WTF::Malloc>::fill):
(WTF::Malloc>::appendRange):
(WTF::Malloc>::expandCapacity):
(WTF::Malloc>::tryExpandCapacity):
(WTF::Malloc>::resize):
(WTF::Malloc>::resizeToFit):
(WTF::Malloc>::shrink):
(WTF::Malloc>::grow):
(WTF::Malloc>::asanSetInitialBufferSizeTo):
(WTF::Malloc>::asanSetBufferSizeToFullCapacity):
(WTF::Malloc>::asanBufferSizeWillChangeTo):
(WTF::Malloc>::reserveCapacity):
(WTF::Malloc>::tryReserveCapacity):
(WTF::Malloc>::reserveInitialCapacity):
(WTF::Malloc>::shrinkCapacity):
(WTF::Malloc>::append):
(WTF::Malloc>::tryAppend):
(WTF::Malloc>::constructAndAppend):
(WTF::Malloc>::tryConstructAndAppend):
(WTF::Malloc>::appendSlowCase):
(WTF::Malloc>::constructAndAppendSlowCase):
(WTF::Malloc>::tryConstructAndAppendSlowCase):
(WTF::Malloc>::uncheckedAppend):
(WTF::Malloc>::uncheckedConstructAndAppend):
(WTF::Malloc>::appendVector):
(WTF::Malloc>::insert):
(WTF::Malloc>::insertVector):
(WTF::Malloc>::remove):
(WTF::Malloc>::removeFirst):
(WTF::Malloc>::removeFirstMatching):
(WTF::Malloc>::removeAll):
(WTF::Malloc>::removeAllMatching):
(WTF::Malloc>::reverse):
(WTF::Malloc>::map const):
(WTF::Malloc>::releaseBuffer):
(WTF::Malloc>::checkConsistency):
(WTF::swap):
(WTF::operator==):
(WTF::operator!=):
(WTF::Malloc>::isolatedCopy const):
(WTF::removeRepeatedElements):
(WTF::minCapacity>::Vector): Deleted.
(WTF::minCapacity>::contains const): Deleted.
(WTF::minCapacity>::findMatching const): Deleted.
(WTF::minCapacity>::find const): Deleted.
(WTF::minCapacity>::reverseFind const): Deleted.
(WTF::minCapacity>::appendIfNotContains): Deleted.
(WTF::minCapacity>::fill): Deleted.
(WTF::minCapacity>::appendRange): Deleted.
(WTF::minCapacity>::expandCapacity): Deleted.
(WTF::minCapacity>::tryExpandCapacity): Deleted.
(WTF::minCapacity>::resize): Deleted.
(WTF::minCapacity>::resizeToFit): Deleted.
(WTF::minCapacity>::shrink): Deleted.
(WTF::minCapacity>::grow): Deleted.
(WTF::minCapacity>::asanSetInitialBufferSizeTo): Deleted.
(WTF::minCapacity>::asanSetBufferSizeToFullCapacity): Deleted.
(WTF::minCapacity>::asanBufferSizeWillChangeTo): Deleted.
(WTF::minCapacity>::reserveCapacity): Deleted.
(WTF::minCapacity>::tryReserveCapacity): Deleted.
(WTF::minCapacity>::reserveInitialCapacity): Deleted.
(WTF::minCapacity>::shrinkCapacity): Deleted.
(WTF::minCapacity>::append): Deleted.
(WTF::minCapacity>::tryAppend): Deleted.
(WTF::minCapacity>::constructAndAppend): Deleted.
(WTF::minCapacity>::tryConstructAndAppend): Deleted.
(WTF::minCapacity>::appendSlowCase): Deleted.
(WTF::minCapacity>::constructAndAppendSlowCase): Deleted.
(WTF::minCapacity>::tryConstructAndAppendSlowCase): Deleted.
(WTF::minCapacity>::uncheckedAppend): Deleted.
(WTF::minCapacity>::uncheckedConstructAndAppend): Deleted.
(WTF::minCapacity>::appendVector): Deleted.
(WTF::minCapacity>::insert): Deleted.
(WTF::minCapacity>::insertVector): Deleted.
(WTF::minCapacity>::remove): Deleted.
(WTF::minCapacity>::removeFirst): Deleted.
(WTF::minCapacity>::removeFirstMatching): Deleted.
(WTF::minCapacity>::removeAll): Deleted.
(WTF::minCapacity>::removeAllMatching): Deleted.
(WTF::minCapacity>::reverse): Deleted.
(WTF::minCapacity>::map const): Deleted.
(WTF::minCapacity>::releaseBuffer): Deleted.
(WTF::minCapacity>::checkConsistency): Deleted.
(WTF::minCapacity>::isolatedCopy const): Deleted.
* wtf/text/CString.cpp:
(WTF::CStringBuffer::createUninitialized):
* wtf/text/CString.h:
* wtf/text/StringBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/text/StringBuffer.h:
(WTF::StringBuffer::StringBuffer):
(WTF::StringBuffer::~StringBuffer):
(WTF::StringBuffer::resize):
(WTF::StringBuffer::release):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::destroy):
(WTF::StringImpl::createUninitializedInternalNonEmpty):
(WTF::StringImpl::reallocateInternal):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSubstringSharingImpl):
(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::adopt):
* wtf/text/cf/StringImplCF.cpp:
(WTF::StringWrapperCFAllocator::allocate):
(WTF::StringWrapperCFAllocator::reallocate):
(WTF::StringWrapperCFAllocator::deallocate):
Canonical link: https://commits.webkit.org/218863@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-03 02:36:43 +00:00
|
|
|
return new (NotNull, MetaAllocatorFreeSpaceMalloc::malloc(sizeof(FreeSpaceNode))) FreeSpaceNode();
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void MetaAllocator::freeFreeSpaceNode(FreeSpaceNode* node)
|
|
|
|
{
|
|
|
|
#ifndef NDEBUG
|
|
|
|
m_mallocBalance--;
|
|
|
|
#endif
|
Experiment: create lots of different malloc zones for easier accounting of memory use
https://bugs.webkit.org/show_bug.cgi?id=186422
Patch by Yusuke Suzuki <ysuzuki@apple.com> and Simon Fraser <simon.fraser@apple.com> on 2020-01-02
Reviewed by Saam Barati.
Source/bmalloc:
* bmalloc/BPlatform.h:
* bmalloc/Environment.cpp:
(bmalloc::Environment::computeIsDebugHeapEnabled):
* bmalloc/IsoHeap.h:
(bmalloc::api::IsoHeap::IsoHeap):
* bmalloc/IsoHeapInlines.h:
(bmalloc::api::IsoHeap<Type>::IsoHeap):
* bmalloc/IsoTLSInlines.h:
(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateSlow):
Source/JavaScriptCore:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/AssemblerBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* assembler/AssemblerBuffer.h:
(JSC::AssemblerData::AssemblerData):
(JSC::AssemblerData::operator=):
(JSC::AssemblerData::~AssemblerData):
(JSC::AssemblerData::grow):
* bytecode/AccessCase.cpp:
* bytecode/AccessCase.h:
* bytecode/BytecodeBasicBlock.cpp:
* bytecode/BytecodeBasicBlock.h:
* bytecode/CodeBlock.cpp:
* bytecode/CodeBlock.h:
* bytecode/InstructionStream.cpp:
* bytecode/InstructionStream.h:
* bytecode/PolymorphicAccess.cpp:
* bytecode/PolymorphicAccess.h:
* bytecode/UnlinkedMetadataTable.cpp:
(JSC::UnlinkedMetadataTable::finalize):
* bytecode/UnlinkedMetadataTable.h:
* bytecode/UnlinkedMetadataTableInlines.h:
(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::~UnlinkedMetadataTable):
(JSC::UnlinkedMetadataTable::link):
(JSC::UnlinkedMetadataTable::unlink):
* bytecode/ValueProfile.h:
(JSC::ValueProfileAndVirtualRegisterBuffer::ValueProfileAndVirtualRegisterBuffer):
* bytecode/Watchpoint.cpp:
* bytecode/Watchpoint.h:
* dfg/DFGBasicBlock.cpp:
* dfg/DFGBasicBlock.h:
* dfg/DFGNode.cpp:
* dfg/DFGNode.h:
* dfg/DFGSpeculativeJIT.cpp:
* dfg/DFGSpeculativeJIT.h:
* heap/BlockDirectory.cpp:
* heap/BlockDirectory.h:
* heap/FastMallocAlignedMemoryAllocator.cpp:
(JSC::FastMallocAlignedMemoryAllocator::FastMallocAlignedMemoryAllocator):
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeAlignedMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):
* heap/FastMallocAlignedMemoryAllocator.h:
* heap/GCSegmentedArray.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* heap/GCSegmentedArray.h:
* heap/GCSegmentedArrayInlines.h:
(JSC::GCArraySegment<T>::create):
(JSC::GCArraySegment<T>::destroy):
* heap/GigacageAlignedMemoryAllocator.cpp:
(JSC::GigacageAlignedMemoryAllocator::GigacageAlignedMemoryAllocator):
(JSC::GigacageAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::GigacageAlignedMemoryAllocator::freeAlignedMemory):
(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):
* heap/GigacageAlignedMemoryAllocator.h:
* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::~IsoAlignedMemoryAllocator):
(JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
* heap/IsoAlignedMemoryAllocator.h:
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::IsoSubspace):
* heap/MarkedBlock.cpp:
* heap/MarkedBlock.h:
* heap/WeakBlock.cpp:
(JSC::WeakBlock::create):
(JSC::WeakBlock::destroy):
* heap/WeakBlock.h:
* jit/JITCode.cpp:
* jit/JITCode.h:
* jit/RegisterAtOffsetList.cpp:
* jit/RegisterAtOffsetList.h:
* parser/Nodes.cpp:
* parser/Nodes.h:
* parser/ParserArena.cpp:
(JSC::ParserArena::deallocateObjects):
(JSC::ParserArena::allocateFreeablePool):
* parser/ParserArena.h:
* parser/SourceProvider.cpp:
* parser/SourceProvider.h:
* parser/SourceProviderCache.cpp:
* parser/SourceProviderCache.h:
* parser/SourceProviderCacheItem.h:
(JSC::SourceProviderCacheItem::create):
* runtime/CachePayload.cpp:
(JSC::CachePayload::makeMallocPayload):
* runtime/CachePayload.h:
* runtime/CachedBytecode.h:
(JSC::CachedBytecode::create):
* runtime/CachedTypes.cpp:
(JSC::Encoder::release):
(JSC::Encoder::Page::Page):
(JSC::CachedVector::encode):
(JSC::CachedVector::decode const):
(JSC::CachedInstructionStream::decode const):
* runtime/PropertyMapHashTable.h:
(JSC::PropertyTable::rehash):
* runtime/PropertyTable.cpp:
(JSC::PropertyTable::PropertyTable):
(JSC::PropertyTable::~PropertyTable):
* runtime/SymbolTable.cpp:
* runtime/SymbolTable.h:
* runtime/VM.cpp:
(JSC::VM::~VM):
* runtime/VM.h:
(JSC::ScratchBuffer::create):
(JSC::VM::exceptionFuzzingBuffer):
* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):
* wasm/WasmInstance.h:
* wasm/WasmTable.cpp:
(JSC::Wasm::Table::Table):
(JSC::Wasm::FuncRefTable::FuncRefTable):
* wasm/WasmTable.h:
Source/WebCore:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/SerializedScriptValue.cpp:
* bindings/js/SerializedScriptValue.h:
* css/CSSFontFace.cpp:
* css/CSSFontFace.h:
* css/CSSSelector.cpp:
* css/CSSSelector.h:
* css/CSSValue.cpp:
* css/CSSValue.h:
* css/StyleProperties.cpp:
(WebCore::ImmutableStyleProperties::create):
* css/StyleProperties.h:
* css/StyleRule.cpp:
* css/StyleRule.h:
* dom/ElementData.cpp:
(WebCore::ShareableElementData::createWithAttributes):
(WebCore::UniqueElementData::makeShareableCopy const):
* dom/ElementData.h:
* dom/NodeRareData.cpp:
* dom/NodeRareData.h:
* dom/QualifiedName.cpp:
* dom/QualifiedName.h:
* html/parser/HTMLDocumentParser.cpp:
* html/parser/HTMLDocumentParser.h:
* loader/DocumentLoader.cpp:
* loader/DocumentLoader.h:
* loader/ResourceLoader.cpp:
* loader/ResourceLoader.h:
* loader/cache/CachedResource.cpp:
* loader/cache/CachedResource.h:
* page/PerformanceEntry.cpp:
* page/PerformanceEntry.h:
* platform/graphics/Font.cpp:
* platform/graphics/Font.h:
* platform/graphics/FontCascadeFonts.cpp:
* platform/graphics/FontCascadeFonts.h:
* platform/graphics/Region.cpp:
* platform/graphics/Region.h:
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
(WebCore::releaseUint8Vector):
* platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::ImageBuffer):
* platform/graphics/nicosia/NicosiaBuffer.cpp:
(Nicosia::Buffer::Buffer):
* platform/network/ResourceHandle.cpp:
* platform/network/ResourceHandleInternal.h:
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::closeCurrentStream):
(WebCore::advanceCurrentStream):
* rendering/RenderLayer.cpp:
* rendering/RenderLayer.h:
* rendering/TableLayout.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* rendering/TableLayout.h:
* rendering/style/RenderStyle.cpp:
* rendering/style/RenderStyle.h:
* rendering/style/SVGRenderStyle.cpp:
* rendering/style/SVGRenderStyle.h:
* rendering/style/SVGRenderStyleDefs.cpp:
* rendering/style/SVGRenderStyleDefs.h:
* rendering/style/StyleBoxData.cpp:
* rendering/style/StyleBoxData.h:
* rendering/style/StyleInheritedData.cpp:
* rendering/style/StyleInheritedData.h:
* rendering/style/StyleRareInheritedData.cpp:
* rendering/style/StyleRareInheritedData.h:
* rendering/style/StyleRareNonInheritedData.cpp:
* rendering/style/StyleRareNonInheritedData.h:
* rendering/style/StyleSurroundData.cpp:
* rendering/style/StyleSurroundData.h:
* rendering/style/StyleTransformData.cpp:
* rendering/style/StyleTransformData.h:
* style/StyleTreeResolver.cpp:
* style/StyleTreeResolver.h:
* svg/animation/SMILTimeContainer.cpp:
* svg/animation/SMILTimeContainer.h:
Source/WebKit:
* Shared/ShareableBitmap.cpp:
(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::~ShareableBitmap):
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::HistoryEntryDataEncoder::HistoryEntryDataEncoder):
(WebKit::HistoryEntryDataEncoder::finishEncoding):
(WebKit::encodeSessionHistoryEntryData):
(WebKit::encodeLegacySessionState):
Source/WTF:
This patch introduces ENABLE(MALLOC_HEAP_BREAKDOWN). If this is enabled, we allocate malloc_zone per malloc kind.
This offers the way to investigate the usage of memory per kind by using vmmap, like the following.
VIRTUAL RESIDENT DIRTY SWAPPED ALLOCATION BYTES DIRTY+SWAP REGION
MALLOC ZONE SIZE SIZE SIZE SIZE COUNT ALLOCATED FRAG SIZE % FRAG COUNT
=========== ======= ========= ========= ========= ========= ========= ========= ====== ======
StringImpl_0x116efd000 188.0M 69.3M 30.9M 0K 139456 18.0M 12.9M 42% 34
DefaultMallocZone_0x10f487000 176.0M 53.9M 14.1M 0K 115956 9955K 4497K 32% 22
Vector_0x116eff000 162.0M 56.3M 55.3M 0K 140715 17.3M 37.9M 69% 36
MetadataTable_0x11843b000 152.0M 17.5M 17.5M 0K 14200 2353K 15.2M 87% 26
WebKit Using System Malloc_0x114cbe000 150.0M 31.6M 21.8M 0K 87422 16.7M 5278K 24% 23
InstructionStream_0x118469000 150.0M 5764K 5764K 0K 14470 4688K 1076K 19% 24
AssemblerData_0x117ee6000 150.0M 1928K 1928K 0K 1 16 1928K 100% 24
To achieve this goal without making very large change, we put a template type in various containers.
For example, Vector will take Malloc parameter (the default one is FastMalloc allocator). If ENABLE(MALLOC_HEAP_BREAKDOWN) is enabled, we change this to
specific VectorMalloc allocator, and vmmap can show memory usage of this allocator. This patch also supports malloc_zone per IsoHeap. So we can see memory
allocation per IsoHeap in vmmap.
To use this feature, we need to flip two compile time flags, ENABLE(MALLOC_HEAP_BREAKDOWN) in WTF and BENABLE_MALLOC_HEAP_BREAKDOWN in bmalloc.
And use `vmmap $PID` to dump malloc zones. To allocate objects of a class with a specific malloc-zone, use WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(HeapIdentifier) for the class,
and define allocator by DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a header and DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a cpp file.
This patch also introduce callstack collector for malloc. Vector, HashMap etc. are used to allocate various things, but the above malloc_zone feature only tells thing like "Vector
takes XXX MB memory". But what we want to know in this case is what Vector is consuming memory. We collect StackShot for each malloc call, and combine these information to tell
which callsite is consuming much memory, which tell us that what Vector is consuming memory.
* WTF.xcodeproj/project.pbxproj:
* wtf/Bag.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* wtf/Bag.h:
(WTF::Private::BagNode::BagNode): Deleted.
* wtf/BitVector.cpp:
(WTF::BitVector::OutOfLineBits::create):
(WTF::BitVector::OutOfLineBits::destroy):
* wtf/CMakeLists.txt:
* wtf/ConcurrentBuffer.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
* wtf/ConcurrentBuffer.h:
* wtf/DebugHeap.cpp: Copied from Source/JavaScriptCore/runtime/CachePayload.cpp.
(WTF::DebugHeap::DebugHeap):
(WTF::DebugHeap::malloc):
(WTF::DebugHeap::calloc):
(WTF::DebugHeap::memalign):
(WTF::DebugHeap::realloc):
(WTF::DebugHeap::free):
* wtf/DebugHeap.h: Added.
* wtf/FastBitVector.cpp:
(WTF::FastBitVectorWordOwner::setEqualsSlow):
(WTF::FastBitVectorWordOwner::resizeSlow):
* wtf/FastBitVector.h:
(WTF::FastBitVectorWordOwner::~FastBitVectorWordOwner):
* wtf/FastMalloc.cpp:
(WTF::fastMallocDumpMallocStats):
(WTF::AvoidRecordingScope::AvoidRecordingScope):
(WTF::AvoidRecordingScope::~AvoidRecordingScope):
(WTF::MallocCallTracker::MallocSiteData::MallocSiteData):
(WTF::MallocCallTracker::singleton):
(WTF::MallocCallTracker::MallocCallTracker):
(WTF::MallocCallTracker::recordMalloc):
(WTF::MallocCallTracker::recordRealloc):
(WTF::MallocCallTracker::recordFree):
(WTF::MallocCallTracker::dumpStats):
(WTF::fastMalloc):
(WTF::fastRealloc):
(WTF::fastFree):
(WTF::fastAlignedMalloc):
(WTF::tryFastAlignedMalloc):
(WTF::fastAlignedFree):
* wtf/FastMalloc.h:
(WTF::FastMalloc::zeroedMalloc):
(WTF::FastMalloc::tryZeroedMalloc):
* wtf/Forward.h:
* wtf/HashTable.cpp:
* wtf/HashTable.h:
(WTF::KeyTraits>::allocateTable):
(WTF::KeyTraits>::deallocateTable):
(WTF::KeyTraits>::rehash):
* wtf/MallocPtr.h:
(WTF::MallocPtr::MallocPtr):
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::zeroedMalloc):
(WTF::MallocPtr::tryMalloc):
(WTF::MallocPtr::tryZeroedMalloc):
(WTF::adoptMallocPtr):
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocFreeSpaceNode):
(WTF::MetaAllocator::freeFreeSpaceNode):
* wtf/MetaAllocatorHandle.h:
* wtf/Platform.h:
* wtf/RefCountedArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::~RefCountedArray):
(WTF::RefCountedArray::assign):
* wtf/SegmentedVector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/SegmentedVector.h:
* wtf/SmallPtrSet.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/SmallPtrSet.h:
(WTF::SmallPtrSet::~SmallPtrSet):
(WTF::SmallPtrSet::grow):
* wtf/UniqueArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/UniqueArray.h:
(WTF::UniqueArrayFree::operator() const):
(WTF::UniqueArrayFree<T::operator() const):
* wtf/Vector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/Vector.h:
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::deallocateBuffer):
(WTF::VectorBufferBase::releaseBuffer):
(WTF::VectorBuffer::releaseBuffer):
(WTF::Vector::swap):
(WTF::Malloc>::Vector):
(WTF::=):
(WTF::Malloc>::contains const):
(WTF::Malloc>::findMatching const):
(WTF::Malloc>::find const):
(WTF::Malloc>::reverseFind const):
(WTF::Malloc>::appendIfNotContains):
(WTF::Malloc>::fill):
(WTF::Malloc>::appendRange):
(WTF::Malloc>::expandCapacity):
(WTF::Malloc>::tryExpandCapacity):
(WTF::Malloc>::resize):
(WTF::Malloc>::resizeToFit):
(WTF::Malloc>::shrink):
(WTF::Malloc>::grow):
(WTF::Malloc>::asanSetInitialBufferSizeTo):
(WTF::Malloc>::asanSetBufferSizeToFullCapacity):
(WTF::Malloc>::asanBufferSizeWillChangeTo):
(WTF::Malloc>::reserveCapacity):
(WTF::Malloc>::tryReserveCapacity):
(WTF::Malloc>::reserveInitialCapacity):
(WTF::Malloc>::shrinkCapacity):
(WTF::Malloc>::append):
(WTF::Malloc>::tryAppend):
(WTF::Malloc>::constructAndAppend):
(WTF::Malloc>::tryConstructAndAppend):
(WTF::Malloc>::appendSlowCase):
(WTF::Malloc>::constructAndAppendSlowCase):
(WTF::Malloc>::tryConstructAndAppendSlowCase):
(WTF::Malloc>::uncheckedAppend):
(WTF::Malloc>::uncheckedConstructAndAppend):
(WTF::Malloc>::appendVector):
(WTF::Malloc>::insert):
(WTF::Malloc>::insertVector):
(WTF::Malloc>::remove):
(WTF::Malloc>::removeFirst):
(WTF::Malloc>::removeFirstMatching):
(WTF::Malloc>::removeAll):
(WTF::Malloc>::removeAllMatching):
(WTF::Malloc>::reverse):
(WTF::Malloc>::map const):
(WTF::Malloc>::releaseBuffer):
(WTF::Malloc>::checkConsistency):
(WTF::swap):
(WTF::operator==):
(WTF::operator!=):
(WTF::Malloc>::isolatedCopy const):
(WTF::removeRepeatedElements):
(WTF::minCapacity>::Vector): Deleted.
(WTF::minCapacity>::contains const): Deleted.
(WTF::minCapacity>::findMatching const): Deleted.
(WTF::minCapacity>::find const): Deleted.
(WTF::minCapacity>::reverseFind const): Deleted.
(WTF::minCapacity>::appendIfNotContains): Deleted.
(WTF::minCapacity>::fill): Deleted.
(WTF::minCapacity>::appendRange): Deleted.
(WTF::minCapacity>::expandCapacity): Deleted.
(WTF::minCapacity>::tryExpandCapacity): Deleted.
(WTF::minCapacity>::resize): Deleted.
(WTF::minCapacity>::resizeToFit): Deleted.
(WTF::minCapacity>::shrink): Deleted.
(WTF::minCapacity>::grow): Deleted.
(WTF::minCapacity>::asanSetInitialBufferSizeTo): Deleted.
(WTF::minCapacity>::asanSetBufferSizeToFullCapacity): Deleted.
(WTF::minCapacity>::asanBufferSizeWillChangeTo): Deleted.
(WTF::minCapacity>::reserveCapacity): Deleted.
(WTF::minCapacity>::tryReserveCapacity): Deleted.
(WTF::minCapacity>::reserveInitialCapacity): Deleted.
(WTF::minCapacity>::shrinkCapacity): Deleted.
(WTF::minCapacity>::append): Deleted.
(WTF::minCapacity>::tryAppend): Deleted.
(WTF::minCapacity>::constructAndAppend): Deleted.
(WTF::minCapacity>::tryConstructAndAppend): Deleted.
(WTF::minCapacity>::appendSlowCase): Deleted.
(WTF::minCapacity>::constructAndAppendSlowCase): Deleted.
(WTF::minCapacity>::tryConstructAndAppendSlowCase): Deleted.
(WTF::minCapacity>::uncheckedAppend): Deleted.
(WTF::minCapacity>::uncheckedConstructAndAppend): Deleted.
(WTF::minCapacity>::appendVector): Deleted.
(WTF::minCapacity>::insert): Deleted.
(WTF::minCapacity>::insertVector): Deleted.
(WTF::minCapacity>::remove): Deleted.
(WTF::minCapacity>::removeFirst): Deleted.
(WTF::minCapacity>::removeFirstMatching): Deleted.
(WTF::minCapacity>::removeAll): Deleted.
(WTF::minCapacity>::removeAllMatching): Deleted.
(WTF::minCapacity>::reverse): Deleted.
(WTF::minCapacity>::map const): Deleted.
(WTF::minCapacity>::releaseBuffer): Deleted.
(WTF::minCapacity>::checkConsistency): Deleted.
(WTF::minCapacity>::isolatedCopy const): Deleted.
* wtf/text/CString.cpp:
(WTF::CStringBuffer::createUninitialized):
* wtf/text/CString.h:
* wtf/text/StringBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
* wtf/text/StringBuffer.h:
(WTF::StringBuffer::StringBuffer):
(WTF::StringBuffer::~StringBuffer):
(WTF::StringBuffer::resize):
(WTF::StringBuffer::release):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::destroy):
(WTF::StringImpl::createUninitializedInternalNonEmpty):
(WTF::StringImpl::reallocateInternal):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSubstringSharingImpl):
(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::adopt):
* wtf/text/cf/StringImplCF.cpp:
(WTF::StringWrapperCFAllocator::allocate):
(WTF::StringWrapperCFAllocator::reallocate):
(WTF::StringWrapperCFAllocator::deallocate):
Canonical link: https://commits.webkit.org/218863@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-01-03 02:36:43 +00:00
|
|
|
MetaAllocatorFreeSpaceMalloc::free(node);
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#if ENABLE(META_ALLOCATOR_PROFILE)
|
|
|
|
void MetaAllocator::dumpProfile()
|
|
|
|
{
|
2013-03-26 21:43:27 +00:00
|
|
|
dataLogF(
|
|
|
|
"%d: MetaAllocator(%p): num allocations = %u, num frees = %u, allocated = %lu, reserved = %lu, committed = %lu\n",
|
|
|
|
getCurrentProcessID(), this, m_numAllocations, m_numFrees, m_bytesAllocated, m_bytesReserved, m_bytesCommitted);
|
2011-09-11 05:49:36 +00:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
} // namespace WTF
|
|
|
|
|
|
|
|
|