Test clang-format-fixes
authorTristan Bourvon <tbourvon@mozilla.com>
Sun, 26 Nov 2017 19:37:27 +0100
changeset 1361606 db33121e2edc07c57d5d0298bad8cf879e16c3e4
parent 1361574 52f101155bacb9eb1a50284b54c773721a6891fa
child 1361607 ff604ee32a76adfcaf9307446f82284f777c834e
push id237842
push usertristanbourvon@gmail.com
push dateSun, 26 Nov 2017 18:42:50 +0000
treeherdertry@ff604ee32a76 [default view] [failures only]
milestone59.0a1
Test clang-format-fixes
devtools/shared/heapsnapshot/AutoMemMap.h
devtools/shared/heapsnapshot/CoreDump.pb.h
devtools/shared/heapsnapshot/HeapSnapshot.cpp
docshell/base/SerializedLoadContext.cpp
docshell/base/nsDocShell.cpp
dom/animation/ComputedTimingFunction.h
dom/asmjscache/AsmJSCache.cpp
dom/base/EventSource.cpp
dom/base/NodeIterator.h
dom/base/PartialSHistory.cpp
dom/base/TextInputProcessor.cpp
dom/base/nsContentPermissionHelper.cpp
dom/base/nsDocument.cpp
dom/base/nsDocumentEncoder.cpp
dom/base/nsFrameLoader.cpp
dom/base/nsGlobalWindowOuter.cpp
dom/base/nsJSEnvironment.cpp
dom/base/nsPlainTextSerializer.cpp
dom/base/nsQueryContentEventResult.cpp
dom/base/nsSyncLoadService.cpp
dom/base/nsXHTMLContentSerializer.cpp
dom/bindings/BindingUtils.cpp
dom/bindings/ErrorResult.h
dom/bindings/TypedArray.h
dom/cache/SavedTypes.h
dom/canvas/CanvasRenderingContext2D.cpp
dom/canvas/WebGLContext.cpp
dom/canvas/WebGLStrongTypes.h
dom/canvas/WebGLTexture.cpp
dom/canvas/WebGLVertexAttribData.h
dom/commandhandler/nsCommandParams.h
dom/crypto/WebCryptoTask.cpp
dom/events/EventStateManager.cpp
dom/events/IMEContentObserver.cpp
dom/events/TextComposition.h
dom/events/XULCommandEvent.cpp
dom/fetch/InternalRequest.cpp
dom/filesystem/FileSystemTaskBase.h
dom/filesystem/GetFilesHelper.h
dom/gamepad/GamepadHapticActuator.h
dom/gamepad/cocoa/CocoaGamepad.cpp
dom/ipc/ContentBridgeParent.cpp
dom/ipc/ContentChild.cpp
dom/ipc/FilePickerParent.h
dom/ipc/TabChild.cpp
dom/ipc/TabParent.cpp
dom/media/BufferReader.h
dom/media/DOMMediaStream.cpp
dom/media/GetUserMediaRequest.cpp
dom/media/MediaCache.cpp
dom/media/MediaCache.h
dom/media/MediaDecoderStateMachine.cpp
dom/media/MediaRecorder.cpp
dom/media/MediaStreamGraph.cpp
dom/media/StreamTracks.h
dom/media/VideoUtils.h
dom/media/eme/MediaKeyMessageEvent.cpp
dom/media/encoder/TrackEncoder.h
dom/media/gmp/GMPContentParent.cpp
dom/media/gmp/GMPTimerParent.h
dom/media/ipc/RemoteVideoDecoder.cpp
dom/media/mp4/Box.cpp
dom/media/mp4/MP4Demuxer.cpp
dom/media/mp4/MP4Metadata.cpp
dom/media/mp4/MoofParser.cpp
dom/media/ogg/OggWriter.cpp
dom/media/ogg/OpusParser.cpp
dom/media/platforms/agnostic/TheoraDecoder.cpp
dom/media/platforms/apple/AppleATDecoder.cpp
dom/media/systemservices/CamerasChild.cpp
dom/media/systemservices/CamerasParent.cpp
dom/media/systemservices/MediaSystemResourceManagerChild.cpp
dom/media/systemservices/VideoEngine.cpp
dom/media/systemservices/VideoEngine.h
dom/media/wave/WaveDemuxer.cpp
dom/media/webaudio/AudioBufferSourceNode.cpp
dom/media/webaudio/AudioEventTimeline.cpp
dom/media/webaudio/AudioProcessingEvent.cpp
dom/media/webaudio/DelayBuffer.h
dom/media/webaudio/blink/HRTFPanner.cpp
dom/media/webaudio/blink/PeriodicWave.cpp
dom/media/webm/EbmlComposer.cpp
dom/media/webm/NesteggPacketHolder.h
dom/media/webrtc/MediaEngineDefault.cpp
dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h
dom/media/webspeech/synth/nsSpeechTask.cpp
dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp
dom/messagechannel/MessagePort.cpp
dom/payments/PaymentActionResponse.cpp
dom/plugins/base/nsPluginHost.cpp
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/plugins/base/nsPluginManifestLineReader.h
dom/plugins/base/nsPluginStreamListenerPeer.cpp
dom/plugins/base/nsPluginTags.cpp
dom/plugins/base/nsPluginsDirDarwin.cpp
dom/plugins/ipc/PluginInstanceChild.cpp
dom/plugins/ipc/PluginModuleParent.cpp
dom/security/SRICheck.cpp
dom/smil/nsSMILKeySpline.h
dom/smil/nsSMILValue.cpp
dom/storage/StorageIPC.cpp
dom/svg/DOMSVGPathSegList.h
dom/svg/SVGAnimatedNumberList.h
dom/svg/SVGGeometryElement.h
dom/svg/SVGLength.h
dom/svg/SVGLengthList.h
dom/svg/SVGMotionSMILType.cpp
dom/svg/nsSVGViewBox.h
dom/vr/VRDisplay.cpp
dom/websocket/WebSocket.cpp
dom/workers/ServiceWorker.cpp
dom/workers/WorkerScope.cpp
dom/xbl/nsXBLBinding.cpp
dom/xbl/nsXBLProtoImplField.cpp
dom/xbl/nsXBLPrototypeBinding.cpp
dom/xbl/nsXBLPrototypeHandler.cpp
dom/xbl/nsXBLResourceLoader.cpp
dom/xhr/XMLHttpRequestMainThread.cpp
dom/xml/nsXMLContentSink.cpp
dom/xslt/xpath/txExprLexer.cpp
dom/xslt/xslt/txExecutionState.cpp
dom/xslt/xslt/txStylesheetCompiler.cpp
dom/xul/nsXULContentSink.h
dom/xul/templates/nsRuleNetwork.h
editor/libeditor/SelectionState.cpp
editor/txtsvc/nsFilteredContentIterator.h
extensions/auth/nsAuthSambaNTLM.cpp
extensions/auth/nsHttpNegotiateAuth.cpp
extensions/pref/autoconfig/src/nsAutoConfig.cpp
extensions/spellcheck/src/mozInlineSpellChecker.cpp
extensions/spellcheck/src/mozSpellChecker.cpp
extensions/universalchardet/src/base/CharDistribution.h
extensions/universalchardet/src/base/nsCodingStateMachine.h
extensions/universalchardet/src/base/nsUniversalDetector.cpp
extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp
gfx/2d/2D.h
gfx/2d/Blur.cpp
gfx/2d/DrawTargetCairo.cpp
gfx/2d/DrawTargetSkia.cpp
gfx/2d/FilterNodeSoftware.cpp
gfx/2d/ImageScaling.h
gfx/2d/JobScheduler_posix.cpp
gfx/2d/JobScheduler_posix.h
gfx/2d/Logging.h
gfx/2d/RecordedEventImpl.h
gfx/2d/SVGTurbulenceRenderer-inl.h
gfx/2d/SourceSurfaceSkia.cpp
gfx/2d/Tools.h
gfx/gl/ForceDiscreteGPUHelperCGL.h
gfx/gl/GLLibraryEGL.cpp
gfx/gl/GLTextureImage.cpp
gfx/gl/ScopedGLHelpers.cpp
gfx/layers/AnimationHelper.h
gfx/layers/AtomicRefCountedWithFinalize.h
gfx/layers/LayerTreeInvalidation.cpp
gfx/layers/Layers.h
gfx/layers/SourceSurfaceSharedData.h
gfx/layers/apz/src/KeyboardMap.cpp
gfx/layers/basic/BasicLayerManager.cpp
gfx/layers/client/ClientLayerManager.cpp
gfx/layers/composite/TextureHost.h
gfx/layers/ipc/CompositorBridgeParent.cpp
gfx/layers/ipc/LayerTransactionParent.cpp
gfx/layers/ipc/ShadowLayers.cpp
gfx/layers/mlgpu/ContainerLayerMLGPU.cpp
gfx/layers/mlgpu/LayerMLGPU.cpp
gfx/layers/mlgpu/MLGDevice.cpp
gfx/layers/mlgpu/RenderPassMLGPU.cpp
gfx/layers/mlgpu/SharedBufferMLGPU.cpp
gfx/layers/mlgpu/TexturedLayerMLGPU.cpp
gfx/layers/opengl/CompositingRenderTargetOGL.h
gfx/layers/opengl/CompositorOGL.cpp
gfx/layers/opengl/TextureHostOGL.h
gfx/layers/protobuf/LayerScopePacket.pb.cc
gfx/src/nsDeviceContext.cpp
gfx/src/nsRegion.h
gfx/thebes/PrintTargetSkPDF.cpp
gfx/thebes/gfxContext.h
gfx/thebes/gfxFont.cpp
gfx/thebes/gfxFontEntry.cpp
gfx/thebes/gfxFontFamilyList.h
gfx/thebes/gfxFontInfoLoader.h
gfx/thebes/gfxGlyphExtents.h
gfx/thebes/gfxGraphiteShaper.cpp
gfx/thebes/gfxHarfBuzzShaper.cpp
gfx/thebes/gfxImageSurface.cpp
gfx/thebes/gfxMacPlatformFontList.mm
gfx/thebes/gfxMathTable.cpp
gfx/thebes/gfxSkipChars.h
gfx/thebes/gfxUserFontSet.cpp
gfx/vr/gfxVR.h
gfx/vr/gfxVROpenVR.cpp
gfx/webrender_bindings/RenderBufferTextureHost.cpp
gfx/webrender_bindings/RenderSharedSurfaceTextureHost.cpp
image/CopyOnWrite.h
image/Downscaler.cpp
image/RasterImage.cpp
image/VectorImage.cpp
image/decoders/nsGIFDecoder2.cpp
image/decoders/nsJPEGDecoder.cpp
image/encoders/bmp/nsBMPEncoder.cpp
image/encoders/ico/nsICOEncoder.cpp
image/imgFrame.cpp
image/imgFrame.h
intl/chardet/nsCyrillicDetector.cpp
intl/icu/source/common/unicode/bytestrie.h
intl/icu/source/common/unicode/stringtriebuilder.h
intl/icu/source/common/unicode/ucharstrie.h
intl/icu/source/common/unicode/unistr.h
ipc/glue/ProtocolUtils.cpp
ipc/glue/ProtocolUtils.h
js/public/Proxy.h
js/public/RootingAPI.h
js/src/ds/OrderedHashTable.h
js/src/frontend/BytecodeEmitter.cpp
js/src/frontend/NameCollections.h
js/src/frontend/TokenStream.h
js/src/gc/Heap.h
js/src/gc/Nursery.cpp
js/src/gc/Rooting.h
js/src/gc/Statistics.cpp
js/src/gc/Statistics.h
js/src/irregexp/RegExpEngine.cpp
js/src/irregexp/RegExpEngine.h
js/src/jit/BacktrackingAllocator.h
js/src/jit/BaselineFrameInfo.h
js/src/jit/BaselineJIT.cpp
js/src/jit/BytecodeAnalysis.cpp
js/src/jit/CodeGenerator.cpp
js/src/jit/CompileInfo.h
js/src/jit/Ion.cpp
js/src/jit/IonBuilder.cpp
js/src/jit/IonCode.h
js/src/jit/IonControlFlow.cpp
js/src/jit/IonOptimizationLevels.h
js/src/jit/JitCompartment.h
js/src/jit/JitFrames.cpp
js/src/jit/JitFrames.h
js/src/jit/JitcodeMap.h
js/src/jit/LIR.h
js/src/jit/MIRGraph.cpp
js/src/jit/MacroAssembler.cpp
js/src/jit/MacroAssembler.h
js/src/jit/MoveResolver.cpp
js/src/jit/MoveResolver.h
js/src/jit/OptimizationTracking.h
js/src/jit/RangeAnalysis.cpp
js/src/jit/RegisterSets.h
js/src/jit/RematerializedFrame.cpp
js/src/jit/Safepoints.cpp
js/src/jit/ScalarReplacement.cpp
js/src/jit/StupidAllocator.h
js/src/jit/TypedObjectPrediction.h
js/src/jit/shared/IonAssemblerBufferWithConstantPools.h
js/src/jit/shared/Lowering-shared.h
js/src/jit/x64/Assembler-x64.cpp
js/src/jit/x64/Bailouts-x64.cpp
js/src/jsapi-tests/testPrivateGCThingValue.cpp
js/src/jsapi.cpp
js/src/jscompartment.cpp
js/src/jscompartment.h
js/src/jsfriendapi.h
js/src/jsopcode.h
js/src/jsscript.cpp
js/src/jsscript.h
js/src/vm/ArrayBufferObject.h
js/src/vm/Caches.h
js/src/vm/Compression.cpp
js/src/vm/Debugger.cpp
js/src/vm/ObjectGroup.h
js/src/vm/RegExpShared.h
js/src/vm/Shape.h
js/src/vm/StructuredClone.cpp
js/src/vm/Symbol.h
js/src/vm/TraceLoggingGraph.h
js/src/vm/TraceLoggingTypes.h
js/src/wasm/AsmJS.cpp
js/src/wasm/WasmBaselineCompile.cpp
js/src/wasm/WasmBinaryIterator.h
js/src/wasm/WasmFrameIter.cpp
js/src/wasm/WasmFrameIter.h
js/src/wasm/WasmJS.cpp
js/src/wasm/WasmTextToBinary.cpp
js/src/wasm/WasmTypes.h
js/xpconnect/loader/ChromeScriptLoader.cpp
js/xpconnect/src/BackstagePass.h
js/xpconnect/src/XPCCallContext.cpp
js/xpconnect/src/XPCJSRuntime.cpp
js/xpconnect/src/xpcprivate.h
layout/base/GeckoRestyleManager.cpp
layout/base/PresShell.cpp
layout/base/RestyleTracker.h
layout/base/nsBidiPresUtils.cpp
layout/base/nsLayoutUtils.cpp
layout/base/nsPresContext.cpp
layout/forms/nsButtonFrameRenderer.cpp
layout/forms/nsListControlFrame.cpp
layout/generic/BlockReflowInput.h
layout/generic/ReflowInput.cpp
layout/generic/TextOverflow.cpp
layout/generic/TextOverflow.h
layout/generic/nsBlockReflowContext.cpp
layout/generic/nsBulletFrame.cpp
layout/generic/nsFirstLetterFrame.h
layout/generic/nsFlexContainerFrame.cpp
layout/generic/nsFloatManager.cpp
layout/generic/nsFloatManager.h
layout/generic/nsFrameSetFrame.cpp
layout/generic/nsGfxScrollFrame.cpp
layout/generic/nsGridContainerFrame.cpp
layout/generic/nsLineLayout.cpp
layout/generic/nsPageContentFrame.h
layout/generic/nsPageFrame.cpp
layout/generic/nsRubyBaseContainerFrame.h
layout/generic/nsSimplePageSequenceFrame.cpp
layout/generic/nsTextFrame.cpp
layout/generic/nsTextFrameUtils.h
layout/inspector/inDOMView.cpp
layout/inspector/inDeepTreeWalker.cpp
layout/mathml/nsMathMLChar.cpp
layout/mathml/nsMathMLChar.h
layout/mathml/nsMathMLContainerFrame.cpp
layout/mathml/nsMathMLmactionFrame.h
layout/painting/DisplayItemClipChain.h
layout/painting/DottedCornerFinder.cpp
layout/painting/FrameLayerBuilder.cpp
layout/painting/nsCSSRendering.cpp
layout/painting/nsCSSRenderingGradients.h
layout/painting/nsDisplayList.cpp
layout/painting/nsDisplayList.h
layout/painting/nsImageRenderer.h
layout/printing/nsPrintObject.cpp
layout/style/CSSVariableResolver.cpp
layout/style/CSSVariableResolver.h
layout/style/MediaQueryList.cpp
layout/style/StyleAnimationValue.h
layout/style/nsCSSRuleProcessor.cpp
layout/style/nsCSSRules.h
layout/style/nsCSSScanner.h
layout/style/nsCSSValue.cpp
layout/style/nsCSSValue.h
layout/style/nsFontFaceLoader.cpp
layout/style/nsRuleData.cpp
layout/style/nsRuleNode.h
layout/style/nsRuleWalker.h
layout/style/nsStyleCoord.h
layout/style/nsStyleStruct.cpp
layout/style/nsStyleStruct.h
layout/style/nsStyleTransformMatrix.h
layout/svg/SVGContextPaint.h
layout/svg/SVGTextFrame.cpp
layout/tables/SpanningCellSorter.cpp
layout/tables/nsCellMap.h
layout/tables/nsTableColGroupFrame.h
layout/tables/nsTableFrame.cpp
layout/tables/nsTableFrame.h
layout/tables/nsTableRowGroupFrame.cpp
layout/xul/nsImageBoxFrame.cpp
layout/xul/nsScrollBoxFrame.cpp
layout/xul/nsSplitterFrame.cpp
layout/xul/tree/nsTreeBodyFrame.h
layout/xul/tree/nsTreeColumns.cpp
media/gmp-clearkey/0.1/RefCounted.h
media/mtransport/nricectx.h
media/mtransport/nriceresolverfake.h
media/mtransport/test/buffered_stun_socket_unittest.cpp
media/mtransport/test/dummysocket.h
media/mtransport/test/gtest_utils.h
media/mtransport/test/proxy_tunnel_socket_unittest.cpp
media/mtransport/test/test_nr_socket_ice_unittest.cpp
media/mtransport/test_nr_socket.cpp
media/webrtc/signaling/gtest/sdp_unittests.cpp
media/webrtc/signaling/src/jsep/JsepCodecDescription.h
media/webrtc/signaling/src/media-conduit/RunningStat.h
media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp
media/webrtc/signaling/src/media-conduit/WebrtcMediaDataDecoderCodec.cpp
media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp
media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp
media/webrtc/signaling/src/sdp/SipccSdpMediaSection.h
memory/build/mozjemalloc.cpp
mfbt/SegmentedVector.h
mfbt/SmallPointerArray.h
mfbt/tests/TestPair.cpp
modules/libjar/nsZipArchive.cpp
modules/libjar/zipwriter/nsDeflateConverter.h
modules/libpref/Preferences.cpp
netwerk/base/Dashboard.cpp
netwerk/base/MemoryDownloader.cpp
netwerk/base/Predictor.cpp
netwerk/base/RequestContextService.cpp
netwerk/base/TCPFastOpenLayer.cpp
netwerk/base/nsAsyncStreamCopier.cpp
netwerk/base/nsBaseChannel.cpp
netwerk/base/nsBufferedStreams.cpp
netwerk/base/nsInputStreamPump.cpp
netwerk/base/nsPACMan.cpp
netwerk/base/nsProtocolProxyService.h
netwerk/base/nsServerSocket.cpp
netwerk/base/nsSocketTransport2.cpp
netwerk/base/nsUDPSocket.cpp
netwerk/cache/nsCacheEntry.cpp
netwerk/cache/nsCacheEntryDescriptor.h
netwerk/cache/nsCacheService.cpp
netwerk/cache/nsDiskCacheStreams.h
netwerk/cache2/CacheFileIOManager.cpp
netwerk/cache2/CacheIndex.h
netwerk/cache2/CacheStorageService.cpp
netwerk/cookie/nsCookieService.h
netwerk/dns/DNS.cpp
netwerk/dns/nsDNSService2.cpp
netwerk/dns/nsHostResolver.cpp
netwerk/dns/nsIDNService.cpp
netwerk/ipc/NeckoMessageUtils.h
netwerk/protocol/file/nsFileChannel.cpp
netwerk/protocol/ftp/nsFtpConnectionThread.cpp
netwerk/protocol/ftp/nsFtpControlConnection.cpp
netwerk/protocol/http/Http2Compression.h
netwerk/protocol/http/Http2Session.cpp
netwerk/protocol/http/HttpBaseChannel.cpp
netwerk/protocol/http/NullHttpChannel.cpp
netwerk/protocol/http/TunnelUtils.cpp
netwerk/protocol/http/nsHttpAuthCache.h
netwerk/protocol/http/nsHttpAuthManager.cpp
netwerk/protocol/http/nsHttpChannel.cpp
netwerk/protocol/http/nsHttpConnection.cpp
netwerk/protocol/http/nsHttpConnectionMgr.cpp
netwerk/protocol/http/nsHttpNTLMAuth.h
netwerk/protocol/http/nsHttpTransaction.cpp
netwerk/protocol/viewsource/nsViewSourceChannel.h
netwerk/protocol/websocket/WebSocketChannel.cpp
netwerk/sctp/datachannel/DataChannel.cpp
netwerk/sctp/datachannel/DataChannel.h
netwerk/socket/nsSOCKSIOLayer.cpp
netwerk/streamconv/converters/nsDirIndexParser.cpp
netwerk/streamconv/converters/nsHTTPCompressConv.cpp
netwerk/streamconv/converters/nsHTTPCompressConv.h
netwerk/streamconv/converters/nsIndexedToHTML.cpp
netwerk/streamconv/converters/nsMultiMixedConv.cpp
netwerk/test/TestUDPSocket.cpp
parser/html/nsHtml5SpeculativeLoad.cpp
parser/html/nsHtml5StackNode.cpp
parser/html/nsHtml5Tokenizer.cpp
parser/html/nsHtml5TreeBuilderCppSupplement.h
parser/html/nsHtml5TreeOperation.cpp
parser/htmlparser/CParserContext.cpp
parser/htmlparser/nsParser.cpp
parser/htmlparser/nsScannerString.h
rdf/base/nsRDFXMLSerializer.cpp
security/certverifier/CertVerifier.h
security/manager/ssl/DataStorage.cpp
security/manager/ssl/SharedSSLState.cpp
security/manager/ssl/nsCertOverrideService.cpp
security/manager/ssl/nsCertOverrideService.h
security/manager/ssl/nsCertTree.cpp
security/manager/ssl/nsNSSCallbacks.cpp
security/manager/ssl/nsNSSCertValidity.cpp
security/manager/ssl/nsNTLMAuthModule.h
security/manager/ssl/nsSecurityHeaderParser.cpp
security/manager/ssl/nsSiteSecurityService.cpp
security/pkix/include/pkix/Time.h
security/pkix/lib/pkixbuild.cpp
security/pkix/lib/pkixutil.h
security/sandbox/mac/Sandbox.h
storage/StorageBaseStatementInternal.cpp
storage/mozStorageStatement.cpp
testing/gtest/gtest/include/gtest/internal/gtest-internal.h
testing/gtest/gtest/include/gtest/internal/gtest-linked_ptr.h
testing/gtest/gtest/include/gtest/internal/gtest-port.h
toolkit/components/alerts/AlertNotification.cpp
toolkit/components/backgroundhangmonitor/HangStack.h
toolkit/components/backgroundhangmonitor/ThreadStackHelper.cpp
toolkit/components/extensions/webrequest/StreamFilterChild.h
toolkit/components/perfmonitoring/nsPerformanceStats.cpp
toolkit/components/places/nsFaviconService.h
toolkit/components/places/nsNavHistory.cpp
toolkit/components/places/nsNavHistory.h
toolkit/components/places/nsNavHistoryResult.cpp
toolkit/components/printingui/ipc/PrintSettingsDialogChild.cpp
toolkit/components/protobuf/src/google/protobuf/arena.h
toolkit/components/protobuf/src/google/protobuf/extension_set.h
toolkit/components/protobuf/src/google/protobuf/io/coded_stream.cc
toolkit/components/protobuf/src/google/protobuf/io/gzip_stream.cc
toolkit/components/protobuf/src/google/protobuf/map.h
toolkit/components/protobuf/src/google/protobuf/map_entry_lite.h
toolkit/components/reputationservice/chromium/chrome/common/safe_browsing/csd.pb.cc
toolkit/components/url-classifier/Classifier.cpp
toolkit/components/url-classifier/HashStore.cpp
toolkit/components/url-classifier/ProtocolParser.cpp
toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
toolkit/crashreporter/breakpad-client/mac/crash_generation/crash_generation_server.cc
toolkit/crashreporter/breakpad-client/mac/handler/exception_handler.cc
toolkit/mozapps/update/updater/updater.cpp
tools/power/rapl.cpp
tools/profiler/core/platform-macos.cpp
uriloader/base/nsDocLoader.h
uriloader/base/nsURILoader.cpp
uriloader/exthandler/ExternalHelperAppParent.cpp
uriloader/exthandler/HandlerServiceParent.cpp
uriloader/exthandler/nsExternalHelperAppService.cpp
widget/ContentCache.cpp
widget/IMEData.h
widget/InputData.cpp
widget/MiscEvents.h
widget/MouseEvents.h
widget/PuppetBidiKeyboard.cpp
widget/PuppetWidget.cpp
widget/TextEvents.h
widget/cocoa/TextInputHandler.mm
widget/cocoa/nsCocoaWindow.mm
widget/cocoa/nsLookAndFeel.mm
widget/cocoa/nsMacDockSupport.mm
widget/nsBaseAppShell.cpp
widget/nsPrintSettingsImpl.cpp
xpcom/base/nsCycleCollector.cpp
xpcom/base/nsGZFileWriter.cpp
xpcom/base/nsTraceRefcnt.cpp
xpcom/ds/nsArrayEnumerator.cpp
xpcom/ds/nsAtomTable.cpp
xpcom/ds/nsCheapSets.h
xpcom/ds/nsExpirationTracker.h
xpcom/ds/nsPersistentProperties.cpp
xpcom/ds/nsTArray.h
xpcom/ds/nsVariant.h
xpcom/io/nsInputStreamTee.cpp
xpcom/io/nsLocalFileUnix.cpp
xpcom/io/nsStorageStream.cpp
xpcom/io/nsStringStream.cpp
xpcom/reflect/xptinfo/xptiWorkingSet.cpp
xpcom/string/nsStringIterator.h
xpcom/tests/TestHarness.h
xpcom/threads/CPUUsageWatcher.h
xpcom/threads/MozPromise.h
xpcom/threads/PrioritizedEventQueue.cpp
xpcom/threads/Queue.h
xpcom/threads/RWLock.cpp
xpcom/threads/RecursiveMutex.cpp
xpcom/threads/Scheduler.cpp
xpcom/threads/ThreadEventQueue.cpp
xpcom/threads/nsTimerImpl.cpp
xpfe/appshell/nsAppShellWindowEnumerator.cpp
--- a/devtools/shared/heapsnapshot/AutoMemMap.h
+++ b/devtools/shared/heapsnapshot/AutoMemMap.h
@@ -40,17 +40,17 @@ class MOZ_RAII AutoMemMap
   PRFileMap*   fileMap;
   void*        addr;
 
   AutoMemMap(const AutoMemMap& aOther) = delete;
   void operator=(const AutoMemMap& aOther) = delete;
 
 public:
   explicit AutoMemMap(MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM)
-      : fd(nullptr)
+      : fileInfo{}, fd(nullptr)
       , fileMap(nullptr)
       , addr(nullptr)
   {
       MOZ_GUARD_OBJECT_NOTIFIER_INIT;
   };
   ~AutoMemMap();
 
   // Initialize this AutoMemMap.
--- a/devtools/shared/heapsnapshot/CoreDump.pb.h
+++ b/devtools/shared/heapsnapshot/CoreDump.pb.h
@@ -398,22 +398,22 @@ class StackFrame_Data : public ::google:
   mutable int _cached_size_;
   ::mozilla::devtools::protobuf::StackFrame* parent_;
   ::google::protobuf::uint64 id_;
   ::google::protobuf::uint32 line_;
   ::google::protobuf::uint32 column_;
   bool issystem_;
   bool isselfhosted_;
   union SourceOrRefUnion {
-    SourceOrRefUnion() {}
+    SourceOrRefUnion()  : sourceref_{} {}
     ::google::protobuf::internal::ArenaStringPtr source_;
     ::google::protobuf::uint64 sourceref_;
   } SourceOrRef_;
   union FunctionDisplayNameOrRefUnion {
-    FunctionDisplayNameOrRefUnion() {}
+    FunctionDisplayNameOrRefUnion()  : functiondisplaynameref_{} {}
     ::google::protobuf::internal::ArenaStringPtr functiondisplayname_;
     ::google::protobuf::uint64 functiondisplaynameref_;
   } FunctionDisplayNameOrRef_;
   ::google::protobuf::uint32 _oneof_case_[2];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
@@ -537,17 +537,17 @@ class StackFrame : public ::google::prot
   inline bool has_StackFrameType() const;
   void clear_StackFrameType();
   inline void clear_has_StackFrameType();
 
   ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   union StackFrameTypeUnion {
-    StackFrameTypeUnion() {}
+    StackFrameTypeUnion()  : data_{nullptr} {}
     ::mozilla::devtools::protobuf::StackFrame_Data* data_;
     ::google::protobuf::uint64 ref_;
   } StackFrameType_;
   ::google::protobuf::uint32 _oneof_case_[1];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
@@ -800,27 +800,27 @@ class Node : public ::google::protobuf::
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::mozilla::devtools::protobuf::Edge > edges_;
   ::mozilla::devtools::protobuf::StackFrame* allocationstack_;
   ::google::protobuf::uint64 id_;
   ::google::protobuf::uint64 size_;
   ::google::protobuf::uint32 coarsetype_;
   union TypeNameOrRefUnion {
-    TypeNameOrRefUnion() {}
+    TypeNameOrRefUnion()  : typenameref_{} {}
     ::google::protobuf::internal::ArenaStringPtr typename__;
     ::google::protobuf::uint64 typenameref_;
   } TypeNameOrRef_;
   union JSObjectClassNameOrRefUnion {
-    JSObjectClassNameOrRefUnion() {}
+    JSObjectClassNameOrRefUnion()  : jsobjectclassnameref_{} {}
     ::google::protobuf::internal::ArenaStringPtr jsobjectclassname_;
     ::google::protobuf::uint64 jsobjectclassnameref_;
   } JSObjectClassNameOrRef_;
   union ScriptFilenameOrRefUnion {
-    ScriptFilenameOrRefUnion() {}
+    ScriptFilenameOrRefUnion()  : scriptfilenameref_{} {}
     ::google::protobuf::internal::ArenaStringPtr scriptfilename_;
     ::google::protobuf::uint64 scriptfilenameref_;
   } ScriptFilenameOrRef_;
   ::google::protobuf::uint32 _oneof_case_[3];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
@@ -958,17 +958,17 @@ class Edge : public ::google::protobuf::
   void clear_EdgeNameOrRef();
   inline void clear_has_EdgeNameOrRef();
 
   ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::uint64 referent_;
   union EdgeNameOrRefUnion {
-    EdgeNameOrRefUnion() {}
+    EdgeNameOrRefUnion()  : nameref_{} {}
     ::google::protobuf::internal::ArenaStringPtr name_;
     ::google::protobuf::uint64 nameref_;
   } EdgeNameOrRef_;
   ::google::protobuf::uint32 _oneof_case_[1];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // ===================================================================
--- a/devtools/shared/heapsnapshot/HeapSnapshot.cpp
+++ b/devtools/shared/heapsnapshot/HeapSnapshot.cpp
@@ -1355,17 +1355,17 @@ public:
   // For telemetry.
   uint32_t nodeCount;
   uint32_t edgeCount;
 
   HeapSnapshotHandler(CoreDumpWriter& writer,
                       JS::CompartmentSet* compartments)
     : writer(writer),
       compartments(compartments)
-  { }
+  , nodeCount{}, edgeCount{} { }
 
   // JS::ubi::BreadthFirst handler interface.
 
   class NodeData { };
   typedef JS::ubi::BreadthFirst<HeapSnapshotHandler> Traversal;
   bool operator() (Traversal& traversal,
                    JS::ubi::Node origin,
                    const JS::ubi::Edge& edge,
--- a/docshell/base/SerializedLoadContext.cpp
+++ b/docshell/base/SerializedLoadContext.cpp
@@ -8,22 +8,22 @@
 #include "nsNetUtil.h"
 #include "nsIChannel.h"
 #include "nsIPrivateBrowsingChannel.h"
 #include "nsIWebSocketChannel.h"
 
 namespace IPC {
 
 SerializedLoadContext::SerializedLoadContext(nsILoadContext* aLoadContext)
-{
+ : mIsContent{false}, mUseRemoteTabs{false}, mUseTrackingProtection{false} {
   Init(aLoadContext);
 }
 
 SerializedLoadContext::SerializedLoadContext(nsIChannel* aChannel)
-{
+ : mIsContent{false}, mUseRemoteTabs{false}, mUseTrackingProtection{false} {
   if (!aChannel) {
     Init(nullptr);
     return;
   }
 
   nsCOMPtr<nsILoadContext> loadContext;
   NS_QueryNotificationCallbacks(aChannel, loadContext);
   Init(loadContext);
@@ -40,17 +40,17 @@ SerializedLoadContext::SerializedLoadCon
         isOverriden) {
       mIsPrivateBitValid = true;
     }
     mOriginAttributes.SyncAttributesWithPrivateBrowsing(isPrivate);
   }
 }
 
 SerializedLoadContext::SerializedLoadContext(nsIWebSocketChannel* aChannel)
-{
+ : mIsContent{false}, mUseRemoteTabs{false}, mUseTrackingProtection{false} {
   nsCOMPtr<nsILoadContext> loadContext;
   if (aChannel) {
     NS_QueryNotificationCallbacks(aChannel, loadContext);
   }
   Init(loadContext);
 }
 
 void
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -842,16 +842,19 @@ nsDocShell::nsDocShell()
   , mPrivateBrowsingId(0)
   , mDisplayMode(nsIDocShell::DISPLAY_MODE_BROWSER)
   , mForcedCharset(nullptr)
   , mParentCharset(nullptr)
   , mParentCharsetSource(0)
   , mJSRunToCompletionDepth(0)
   , mTouchEventsOverride(nsIDocShell::TOUCHEVENTS_OVERRIDE_NONE)
 {
+this->mHistoryID.m0 = {};
+this->mHistoryID.m1 = {};
+this->mHistoryID.m2 = {};
   AssertOriginAttributesMatchPrivateBrowsing();
 
   nsContentUtils::GenerateUUIDInPlace(mHistoryID);
 
   if (gDocShellCount++ == 0) {
     NS_ASSERTION(sURIFixup == nullptr,
                  "Huh, sURIFixup not null in first nsDocShell ctor!");
 
--- a/dom/animation/ComputedTimingFunction.h
+++ b/dom/animation/ComputedTimingFunction.h
@@ -34,17 +34,17 @@ public:
   Frames(uint32_t aFrames)
   {
     MOZ_ASSERT(aFrames > 1, "The number of frames should be 2 or more");
     return ComputedTimingFunction(nsTimingFunction::Type::Frames, aFrames);
   }
 
   ComputedTimingFunction() = default;
   explicit ComputedTimingFunction(const nsTimingFunction& aFunction)
-  {
+   : mStepsOrFrames{} {
     Init(aFunction);
   }
   void Init(const nsTimingFunction& aFunction);
 
   // BeforeFlag is used in step timing function.
   // https://w3c.github.io/web-animations/#before-flag
   enum class BeforeFlag {
     Unset,
@@ -104,17 +104,17 @@ public:
     return aFunction ? aFunction->GetValue(aPortion, aBeforeFlag) : aPortion;
   }
   static int32_t Compare(const Maybe<ComputedTimingFunction>& aLhs,
                          const Maybe<ComputedTimingFunction>& aRhs);
 
 private:
   ComputedTimingFunction(double x1, double y1, double x2, double y2)
     : mType(nsTimingFunction::Type::CubicBezier)
-    , mTimingFunction(x1, y1, x2, y2) { }
+    , mTimingFunction(x1, y1, x2, y2) , mStepsOrFrames{} { }
   ComputedTimingFunction(nsTimingFunction::Type aType, uint32_t aStepsOrFrames)
     : mType(aType)
     , mStepsOrFrames(aStepsOrFrames) { }
 
   nsTimingFunction::Type mType = nsTimingFunction::Type::Linear;
   nsSMILKeySpline mTimingFunction;
   uint32_t mStepsOrFrames;
 };
--- a/dom/asmjscache/AsmJSCache.cpp
+++ b/dom/asmjscache/AsmJSCache.cpp
@@ -439,17 +439,17 @@ public:
   ParentRunnable(const PrincipalInfo& aPrincipalInfo,
                  OpenMode aOpenMode,
                  WriteParams aWriteParams)
   : mOwningEventTarget(GetCurrentThreadEventTarget()),
     mPrincipalInfo(aPrincipalInfo),
     mOpenMode(aOpenMode),
     mWriteParams(aWriteParams),
     mOperationMayProceed(true),
-    mState(eInitial),
+    mModuleIndex{}, mState(eInitial),
     mResult(JS::AsmJSCache_InternalError),
     mActorDestroyed(false),
     mOpened(false)
   {
     MOZ_ASSERT(XRE_IsParentProcess());
     AssertIsOnOwningThread();
   }
 
--- a/dom/base/EventSource.cpp
+++ b/dom/base/EventSource.cpp
@@ -339,17 +339,17 @@ NS_IMPL_ISUPPORTS(EventSourceImpl,
                   nsISupportsWeakReference,
                   nsIEventTarget,
                   nsIThreadRetargetableStreamListener)
 
 EventSourceImpl::EventSourceImpl(EventSource* aEventSource)
   : mEventSource(aEventSource)
   , mReconnectionTime(0)
   , mStatus(PARSE_STATE_OFF)
-  , mMutex("EventSourceImpl::mMutex")
+  , mWorkerPrivate{nullptr}, mMutex("EventSourceImpl::mMutex")
   , mFrozen(false)
   , mGoingToDispatchAllMessages(false)
   , mIsMainThread(NS_IsMainThread())
   , mIsShutDown(false)
   , mScriptLine(0)
   , mScriptColumn(0)
   , mInnerWindowID(0)
 {
@@ -461,17 +461,17 @@ class InitRunnable final : public Worker
 {
 public:
   explicit InitRunnable(EventSourceImpl* aEventSourceImpl,
                         const nsAString& aURL)
     : WorkerMainThreadRunnable(aEventSourceImpl->mWorkerPrivate,
                                NS_LITERAL_CSTRING("EventSource :: Init"))
     , mImpl(aEventSourceImpl)
     , mURL(aURL)
-  {
+   /* FIXME: initialize mRv */  {
     mImpl->mWorkerPrivate->AssertIsOnWorkerThread();
   }
 
   bool MainThreadRun() override
   {
     // Get principal from worker's owner document or from worker.
     WorkerPrivate* wp = mImpl->mWorkerPrivate;
     while (wp->GetParent()) {
@@ -1930,17 +1930,17 @@ EventSourceImpl::CheckListenerChain()
 }
 ////////////////////////////////////////////////////////////////////////////////
 // EventSource
 ////////////////////////////////////////////////////////////////////////////////
 
 EventSource::EventSource(nsPIDOMWindowInner* aOwnerWindow,
                          bool aWithCredentials)
   : DOMEventTargetHelper(aOwnerWindow)
-  , mWithCredentials(aWithCredentials)
+  , mReadyState{}, mWithCredentials(aWithCredentials)
   , mIsMainThread(true)
   , mKeepingAlive(false)
 {
   mImpl = new EventSourceImpl(this);
 }
 
 EventSource::~EventSource()
 {
--- a/dom/base/NodeIterator.h
+++ b/dom/base/NodeIterator.h
@@ -70,17 +70,17 @@ public:
     // The XPCOM Detach() is fine for our purposes
 
     bool WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
 
 private:
     virtual ~NodeIterator();
 
     struct NodePointer {
-        NodePointer() : mNode(nullptr) {}
+        NodePointer() : mNode(nullptr) , mBeforeNode{false} {}
         NodePointer(nsINode *aNode, bool aBeforeNode);
 
         typedef bool (NodePointer::*MoveToMethodType)(nsINode*);
         bool MoveToNext(nsINode *aRoot);
         bool MoveToPrevious(nsINode *aRoot);
 
         bool MoveForward(nsINode *aRoot, nsINode *aNode);
         void MoveBackward(nsINode *aParent, nsINode *aNode);
--- a/dom/base/PartialSHistory.cpp
+++ b/dom/base/PartialSHistory.cpp
@@ -20,17 +20,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIPartialSHistory)
   NS_INTERFACE_MAP_ENTRY(nsISHistoryListener)
   NS_INTERFACE_MAP_ENTRY(nsIPartialSHistoryListener)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
 NS_INTERFACE_MAP_END
 
 PartialSHistory::PartialSHistory(nsIFrameLoader* aOwnerFrameLoader)
   : mCount(0),
-    mGlobalIndexOffset(0),
+    mIndex{}, mGlobalIndexOffset(0),
     mActive(nsIPartialSHistory::STATE_ACTIVE),
     mOwnerFrameLoader(aOwnerFrameLoader)
 {
   MOZ_ASSERT(aOwnerFrameLoader);
 }
 
 already_AddRefed<nsISHistory>
 PartialSHistory::GetSessionHistory()
--- a/dom/base/TextInputProcessor.cpp
+++ b/dom/base/TextInputProcessor.cpp
@@ -31,17 +31,17 @@ class TextInputProcessorNotification fin
   typedef IMENotification::SelectionChangeData SelectionChangeData;
   typedef IMENotification::SelectionChangeDataBase SelectionChangeDataBase;
   typedef IMENotification::TextChangeData TextChangeData;
   typedef IMENotification::TextChangeDataBase TextChangeDataBase;
 
 public:
   explicit TextInputProcessorNotification(const char* aType)
     : mType(aType)
-  {
+  , mTextChangeData{} {
   }
 
   explicit TextInputProcessorNotification(
              const TextChangeDataBase& aTextChangeData)
     : mType("notify-text-change")
     , mTextChangeData(aTextChangeData)
   {
   }
@@ -271,17 +271,17 @@ protected:
 private:
   nsAutoCString mType;
   union
   {
     TextChangeDataBase mTextChangeData;
     SelectionChangeDataBase mSelectionChangeData;
   };
 
-  TextInputProcessorNotification() { }
+  TextInputProcessorNotification()  : mTextChangeData{} { }
 };
 
 NS_IMPL_ISUPPORTS(TextInputProcessorNotification,
                   nsITextInputProcessorNotification)
 
 /******************************************************************************
  * TextInputProcessor
  ******************************************************************************/
--- a/dom/base/nsContentPermissionHelper.cpp
+++ b/dom/base/nsContentPermissionHelper.cpp
@@ -566,17 +566,17 @@ nsContentPermissionRequestProxy::nsConte
   }
 
   if (mOnChangeCallback) {
     mOnChangeCallback->NotifyVisibility(aIsVisible);
   }
 }
 
 nsContentPermissionRequestProxy::nsContentPermissionRequestProxy()
-{
+ : mParent{nullptr} {
 }
 
 nsContentPermissionRequestProxy::~nsContentPermissionRequestProxy()
 {
 }
 
 nsresult
 nsContentPermissionRequestProxy::Init(const nsTArray<PermissionRequest>& requests,
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -13827,17 +13827,17 @@ ArrayContainsTable(const nsTArray<nsCStr
 }
 
 namespace {
 
 // An object to store all preferences we need for flash blocking feature.
 struct PrefStore
 {
   PrefStore()
-  {
+   : mFlashBlockEnabled{false}, mPluginsHttpOnly{false} {
     Preferences::AddBoolVarCache(&mFlashBlockEnabled,
                                  "plugins.flashBlock.enabled");
     Preferences::AddBoolVarCache(&mPluginsHttpOnly,
                                  "plugins.http_https_only");
 
     // We only need to register string-typed preferences.
     Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowTable", this);
     Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowExceptTable", this);
--- a/dom/base/nsDocumentEncoder.cpp
+++ b/dom/base/nsDocumentEncoder.cpp
@@ -208,17 +208,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTION(nsDocumentEncoder,
                          mDocument, mSelection, mRange, mNode, mSerializer,
                          mCommonParent)
 
 nsDocumentEncoder::nsDocumentEncoder()
   : mEncoding(nullptr)
-  , mCachedBuffer(nullptr)
+  , mIsCopying{false}, mCachedBuffer(nullptr)
 {
   Initialize();
   mMimeType.AssignLiteral("text/plain");
 }
 
 void nsDocumentEncoder::Initialize(bool aClearCachedSerializer)
 {
   mFlags = 0;
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -179,17 +179,17 @@ nsFrameLoader::nsFrameLoader(Element* aO
   , mInShow(false)
   , mHideCalled(false)
   , mNetworkCreated(aNetworkCreated)
   , mRemoteBrowserShown(false)
   , mRemoteFrame(false)
   , mClipSubdocument(true)
   , mClampScrollPosition(true)
   , mObservingOwnerContent(false)
-{
+, mFreshProcess{false} {
   mRemoteFrame = ShouldUseRemoteProcess();
   MOZ_ASSERT(!mRemoteFrame || !aOpener,
              "Cannot pass aOpener for a remote frame!");
 }
 
 nsFrameLoader::~nsFrameLoader()
 {
   if (mMessageManager) {
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -7786,17 +7786,17 @@ nsGlobalWindowOuter::AbstractMainThreadF
   if (GetDocGroup()) {
     return GetDocGroup()->AbstractMainThreadFor(aCategory);
   }
   return DispatcherTrait::AbstractMainThreadFor(aCategory);
 }
 
 nsGlobalWindowOuter::TemporarilyDisableDialogs::TemporarilyDisableDialogs(
   nsGlobalWindowOuter* aWindow MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)
-{
+ : mSavedDialogsEnabled{false} {
   MOZ_GUARD_OBJECT_NOTIFIER_INIT;
 
   MOZ_ASSERT(aWindow);
   nsGlobalWindowOuter* topWindowOuter = aWindow->GetScriptableTopInternal();
   if (!topWindowOuter) {
     NS_ERROR("nsGlobalWindowOuter::TemporarilyDisableDialogs used without a top "
              "window?");
     return;
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -601,17 +601,17 @@ DumpString(const nsAString &str)
 #endif
 
 #define JS_OPTIONS_DOT_STR "javascript.options."
 
 nsJSContext::nsJSContext(bool aGCOnDestruction,
                          nsIScriptGlobalObject* aGlobalObject)
   : mWindowProxy(nullptr)
   , mGCOnDestruction(aGCOnDestruction)
-  , mGlobalObjectRef(aGlobalObject)
+  , mModalStateTime{}, mModalStateDepth{}, mGlobalObjectRef(aGlobalObject)
 {
   EnsureStatics();
 
   mIsInitialized = false;
   mProcessingScriptTag = false;
   HoldJSObjects(this);
 }
 
--- a/dom/base/nsPlainTextSerializer.cpp
+++ b/dom/base/nsPlainTextSerializer.cpp
@@ -77,17 +77,17 @@ nsresult
 NS_NewPlainTextSerializer(nsIContentSerializer** aSerializer)
 {
   RefPtr<nsPlainTextSerializer> it = new nsPlainTextSerializer();
   it.forget(aSerializer);
   return NS_OK;
 }
 
 nsPlainTextSerializer::nsPlainTextSerializer()
-  : kSpace(NS_LITERAL_STRING(" ")) // Init of "constant"
+  : mFlags{}, mFloatingLines{}, mLineBreakDue{false}, kSpace(NS_LITERAL_STRING(" ")) // Init of "constant"
 {
 
   mOutputString = nullptr;
   mHeadLevel = 0;
   mAtFirstColumn = true;
   mIndent = 0;
   mCiteQuoteLevel = 0;
   mStructs = true;       // will be read from prefs later
--- a/dom/base/nsQueryContentEventResult.cpp
+++ b/dom/base/nsQueryContentEventResult.cpp
@@ -48,18 +48,18 @@ NS_INTERFACE_MAP_BEGIN(nsQueryContentEve
   NS_INTERFACE_MAP_ENTRY(nsIQueryContentEventResult)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_ADDREF(nsQueryContentEventResult)
 NS_IMPL_RELEASE(nsQueryContentEventResult)
 
 nsQueryContentEventResult::nsQueryContentEventResult()
   : mEventMessage(eVoidEvent)
-  , mSucceeded(false)
-{
+  , mOffset{}, mTentativeCaretOffset{}, mSucceeded(false)
+, mReversed{false} {
 }
 
 nsQueryContentEventResult::~nsQueryContentEventResult()
 {
 }
 
 NS_IMETHODIMP
 nsQueryContentEventResult::GetOffset(uint32_t* aOffset)
--- a/dom/base/nsSyncLoadService.cpp
+++ b/dom/base/nsSyncLoadService.cpp
@@ -35,17 +35,17 @@ using mozilla::net::ReferrerPolicy;
  */
 
 class nsSyncLoader : public nsIStreamListener,
                      public nsIChannelEventSink,
                      public nsIInterfaceRequestor,
                      public nsSupportsWeakReference
 {
 public:
-    nsSyncLoader() : mLoading(false) {}
+    nsSyncLoader() : mLoading(false)  /* FIXME: initialize mAsyncLoadStatus */  {}
 
     NS_DECL_ISUPPORTS
 
     nsresult LoadDocument(nsIChannel* aChannel,
                           bool aChannelIsSync, bool aForceToXML,
                           ReferrerPolicy aReferrerPolicy,
                           nsIDOMDocument** aResult);
 
--- a/dom/base/nsXHTMLContentSerializer.cpp
+++ b/dom/base/nsXHTMLContentSerializer.cpp
@@ -43,17 +43,17 @@ NS_NewXHTMLContentSerializer(nsIContentS
 {
   RefPtr<nsXHTMLContentSerializer> it = new nsXHTMLContentSerializer();
   it.forget(aSerializer);
   return NS_OK;
 }
 
 nsXHTMLContentSerializer::nsXHTMLContentSerializer()
   : mIsHTMLSerializer(false)
-{
+, mDoHeader{false}, mIsCopying{false}, mDisableEntityEncoding{}, mRewriteEncodingDeclaration{false}, mIsFirstChildOfOL{false} {
 }
 
 nsXHTMLContentSerializer::~nsXHTMLContentSerializer()
 {
   NS_ASSERTION(mOLStateStack.IsEmpty(), "Expected OL State stack to be empty");
 }
 
 NS_IMETHODIMP
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -167,17 +167,17 @@ ThrowNoSetterArg(JSContext* aCx, prototy
 }
 
 } // namespace dom
 
 namespace binding_danger {
 
 template<typename CleanupPolicy>
 struct TErrorResult<CleanupPolicy>::Message {
-  Message() { MOZ_COUNT_CTOR(TErrorResult::Message); }
+  Message()  /* FIXME: initialize mErrorNumber */  { MOZ_COUNT_CTOR(TErrorResult::Message); }
   ~Message() { MOZ_COUNT_DTOR(TErrorResult::Message); }
 
   nsTArray<nsString> mArgs;
   dom::ErrNum mErrorNumber;
 
   bool HasCorrectNumberOfArguments()
   {
     return GetErrorArgCount(mErrorNumber) == mArgs.Length();
--- a/dom/bindings/ErrorResult.h
+++ b/dom/bindings/ErrorResult.h
@@ -121,17 +121,17 @@ template<typename CleanupPolicy>
 class TErrorResult {
 public:
   TErrorResult()
     : mResult(NS_OK)
 #ifdef DEBUG
     , mMightHaveUnreportedJSException(false)
     , mUnionState(HasNothing)
 #endif
-  {
+  , mMessage{nullptr} {
   }
 
   ~TErrorResult() {
     AssertInOwningThread();
 
     if (CleanupPolicy::assertHandled) {
       // Consumers should have called one of MaybeSetPendingException
       // (possibly via ToJSValue), StealNSResult, and SuppressException
--- a/dom/bindings/TypedArray.h
+++ b/dom/bindings/TypedArray.h
@@ -216,17 +216,17 @@ struct ArrayBufferView_base
 {
 private:
   typedef TypedArray_base<uint8_t, UnwrapArray, GetLengthAndDataAndSharedness>
           Base;
 
 public:
   ArrayBufferView_base()
     : Base()
-  {
+   /* FIXME: initialize mType */   /* FIXME: initialize mType */  {
   }
 
   ArrayBufferView_base(ArrayBufferView_base&& aOther)
     : Base(Move(aOther)),
       mType(aOther.mType)
   {
     aOther.mType = js::Scalar::MaxTypedArrayViewType;
   }
--- a/dom/cache/SavedTypes.h
+++ b/dom/cache/SavedTypes.h
@@ -17,26 +17,32 @@
 #include "nsIOutputStream.h"
 
 namespace mozilla {
 namespace dom {
 namespace cache {
 
 struct SavedRequest
 {
-  SavedRequest() : mHasBodyId(false) { mValue.body() = void_t(); }
+  SavedRequest() : mHasBodyId(false) , mCacheId{} {
+this->mBodyId.m0 = {};
+this->mBodyId.m1 = {};
+this->mBodyId.m2 = {}; mValue.body() = void_t(); }
   CacheRequest mValue;
   bool mHasBodyId;
   nsID mBodyId;
   CacheId mCacheId;
 };
 
 struct SavedResponse
 {
-  SavedResponse() : mHasBodyId(false) { mValue.body() = void_t(); }
+  SavedResponse() : mHasBodyId(false) , mCacheId{} {
+this->mBodyId.m0 = {};
+this->mBodyId.m1 = {};
+this->mBodyId.m2 = {}; mValue.body() = void_t(); }
   CacheResponse mValue;
   bool mHasBodyId;
   nsID mBodyId;
   CacheId mCacheId;
 };
 
 } // namespace cache
 } // namespace dom
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -4251,17 +4251,17 @@ CanvasRenderingContext2D::GetHitRegionRe
  * Used for nsBidiPresUtils::ProcessText
  */
 struct MOZ_STACK_CLASS CanvasBidiProcessor : public nsBidiPresUtils::BidiProcessor
 {
   typedef CanvasRenderingContext2D::Style Style;
 
   CanvasBidiProcessor()
     : nsBidiPresUtils::BidiProcessor()
-  {
+  , mCtx{nullptr}, mFontgrp{nullptr}, mAppUnitsPerDevPixel{} /* FIXME: initialize mOp */  /* FIXME: initialize mTextRunFlags */ , mDoMeasureBoundingBox{false} {
     if (Preferences::GetBool(GFX_MISSING_FONTS_NOTIFY_PREF)) {
       mMissingFonts = new gfxMissingFontRecorder();
     }
   }
 
   ~CanvasBidiProcessor()
   {
     // notify front-end code if we encountered missing glyphs in any script
--- a/dom/canvas/WebGLContext.cpp
+++ b/dom/canvas/WebGLContext.cpp
@@ -106,25 +106,25 @@ WebGLContextOptions::WebGLContextOptions
         alpha = false;
 }
 
 WebGLContext::WebGLContext()
     : WebGLContextUnchecked(nullptr)
     , mMaxPerfWarnings(gfxPrefs::WebGLMaxPerfWarnings())
     , mNumPerfWarnings(0)
     , mMaxAcceptableFBStatusInvals(gfxPrefs::WebGLMaxAcceptableFBStatusInvals())
-    , mDataAllocGLCallCount(0)
-    , mBypassShaderValidation(false)
-    , mEmptyTFO(0)
-    , mContextLossHandler(this)
+    , mDepthTestEnabled{'\0'}, mGenerateMipmapHint{}, mDataAllocGLCallCount(0)
+    , mPrimRestartTypeBytes{}, mBackbufferNeedsClear{false}, mDefaultFB_DrawBuffer0{}, mBypassShaderValidation(false)
+    , mGLMaxTextureUnits{}, mGLMaxVertexAttribs{}, mGLMaxFragmentUniformVectors{}, mGLMaxVertexUniformVectors{}, mGLMaxVaryingVectors{}, mGLMaxTransformFeedbackSeparateAttribs{}, mGLMaxUniformBufferBindings{}, mGLMaxVertexTextureImageUnits{}, mGLMaxFragmentTextureImageUnits{}, mGLMaxCombinedTextureImageUnits{}, mGLMaxColorAttachments{}, mGLMaxDrawBuffers{}, mGLMaxTextureSize{}, mGLMaxCubeMapTextureSize{}, mGLMax3DTextureSize{}, mGLMaxArrayTextureLayers{}, mGLMaxRenderbufferSize{}, mPixelStore_UnpackImageHeight{}, mPixelStore_UnpackSkipImages{}, mPixelStore_UnpackRowLength{}, mPixelStore_UnpackSkipRows{}, mPixelStore_UnpackSkipPixels{}, mPixelStore_UnpackAlignment{}, mPixelStore_PackRowLength{}, mPixelStore_PackSkipRows{}, mPixelStore_PackSkipPixels{}, mPixelStore_PackAlignment{}, mPixelStore_ColorspaceConversion{}, mPixelStore_FlipY{false}, mPixelStore_PremultiplyAlpha{false}, mPixelStore_RequireFastPath{false}, mEmptyTFO(0)
+    , mFakeVertexAttrib0BufferObject{}, mFakeVertexAttrib0BufferObjectSize{}, mFakeVertexAttrib0DataDefined{false}, mLineWidth{0.0}, mContextLossHandler(this)
     , mNeedsFakeNoAlpha(false)
     , mNeedsFakeNoDepth(false)
     , mNeedsFakeNoStencil(false)
     , mNeedsEmulatedLoneDepthStencil(false)
-    , mAllowFBInvalidation(gfxPrefs::WebGLFBInvalidation())
+    , mNeedsIndexValidation{false}, mAllowFBInvalidation(gfxPrefs::WebGLFBInvalidation())
 {
     mGeneration = 0;
     mInvalidated = false;
     mCapturedFrameInvalidated = false;
     mShouldPresent = true;
     mResetLayer = true;
     mOptionsFrozen = false;
     mDisableExtensions = false;
--- a/dom/canvas/WebGLStrongTypes.h
+++ b/dom/canvas/WebGLStrongTypes.h
@@ -120,17 +120,17 @@ private:
 #endif
     }
 
 public:
     StrongGLenum()
 #ifdef DEBUG
         : mValue(NonexistantGLenum)
 #endif
-    {
+     : mValue{} {
         AssertOnceThatEnumValuesAreSorted();
     }
 
     MOZ_IMPLICIT StrongGLenum(GLenum value)
         : mValue(value)
     {
         AssertOnceThatEnumValuesAreSorted();
         MOZ_ASSERT(IsValueLegal(mValue));
--- a/dom/canvas/WebGLTexture.cpp
+++ b/dom/canvas/WebGLTexture.cpp
@@ -134,17 +134,17 @@ WebGLTexture::WebGLTexture(WebGLContext*
     , mWrapS(LOCAL_GL_REPEAT)
     , mWrapT(LOCAL_GL_REPEAT)
     , mImmutable(false)
     , mImmutableLevelCount(0)
     , mBaseMipmapLevel(0)
     , mMaxMipmapLevel(1000)
     , mTexCompareMode(LOCAL_GL_NONE)
     , mIsResolved(false)
-    , mResolved_Swizzle(nullptr)
+    , /* FIXME: initialize mResolved_FakeBlack */ mResolved_Swizzle(nullptr)
 {
     mContext->mTextures.insertBack(this);
 }
 
 void
 WebGLTexture::Delete()
 {
     const char funcName[] = "WebGLTexture::Delete";
--- a/dom/canvas/WebGLVertexAttribData.h
+++ b/dom/canvas/WebGLVertexAttribData.h
@@ -48,17 +48,17 @@ public:
     GETTER(ByteOffset)
 
 #undef GETTER
 
     // note that these initial values are what GL initializes vertex attribs to
     WebGLVertexAttribData()
         : mDivisor(0)
         , mEnabled(false)
-    {
+    , mIntegerFunc{false}, mType{}, mBaseType{}, mSize{'\0'}, mBytesPerVertex{'\0'}, mNormalized{false}, mStride{}, mExplicitStride{}, mByteOffset{} {
         VertexAttribPointer(false, nullptr, 4, LOCAL_GL_FLOAT, false, 0, 0);
     }
 
     void VertexAttribPointer(bool integerFunc, WebGLBuffer* buf, uint8_t size,
                              GLenum type, bool normalized, uint32_t stride,
                              uint64_t byteOffset);
 
     void DoVertexAttribPointer(gl::GLContext* gl, GLuint index) const;
--- a/dom/commandhandler/nsCommandParams.h
+++ b/dom/commandhandler/nsCommandParams.h
@@ -37,17 +37,17 @@ protected:
       nsCString* mCString;
     } mData;
 
     nsCOMPtr<nsISupports> mISupports;
 
     HashEntry(uint8_t aType, const char* aEntryName)
       : mEntryName(aEntryName)
       , mEntryType(aType)
-    {
+    , mData{} {
       Reset(mEntryType);
     }
 
     HashEntry(const HashEntry& aRHS)
       : mEntryType(aRHS.mEntryType)
     {
       Reset(mEntryType);
       switch (mEntryType) {
--- a/dom/crypto/WebCryptoTask.cpp
+++ b/dom/crypto/WebCryptoTask.cpp
@@ -540,27 +540,27 @@ protected:
 };
 
 class AesTask : public ReturnArrayBufferViewTask,
                 public DeferredData
 {
 public:
   AesTask(JSContext* aCx, const ObjectOrString& aAlgorithm,
           CryptoKey& aKey, bool aEncrypt)
-    : mSymKey(aKey.GetSymKey())
-    , mEncrypt(aEncrypt)
+    : mMechanism{}, mSymKey(aKey.GetSymKey())
+    , mTagLength{'\0'}, mCounterLength{'\0'}, mEncrypt(aEncrypt)
   {
     Init(aCx, aAlgorithm, aKey, aEncrypt);
   }
 
   AesTask(JSContext* aCx, const ObjectOrString& aAlgorithm,
           CryptoKey& aKey, const CryptoOperationData& aData,
           bool aEncrypt)
-    : mSymKey(aKey.GetSymKey())
-    , mEncrypt(aEncrypt)
+    : mMechanism{}, mSymKey(aKey.GetSymKey())
+    , mTagLength{'\0'}, mCounterLength{'\0'}, mEncrypt(aEncrypt)
   {
     Init(aCx, aAlgorithm, aKey, aEncrypt);
     SetData(aData);
   }
 
   void Init(JSContext* aCx, const ObjectOrString& aAlgorithm,
             CryptoKey& aKey, bool aEncrypt)
   {
@@ -1700,25 +1700,25 @@ private:
 
 class ImportRsaKeyTask : public ImportKeyTask
 {
 public:
   ImportRsaKeyTask(nsIGlobalObject* aGlobal, JSContext* aCx,
       const nsAString& aFormat,
       const ObjectOrString& aAlgorithm, bool aExtractable,
       const Sequence<nsString>& aKeyUsages)
-  {
+   : mModulusLength{} {
     Init(aGlobal, aCx, aFormat, aAlgorithm, aExtractable, aKeyUsages);
   }
 
   ImportRsaKeyTask(nsIGlobalObject* aGlobal, JSContext* aCx,
       const nsAString& aFormat, JS::Handle<JSObject*> aKeyData,
       const ObjectOrString& aAlgorithm, bool aExtractable,
       const Sequence<nsString>& aKeyUsages)
-  {
+   : mModulusLength{} {
     Init(aGlobal, aCx, aFormat, aAlgorithm, aExtractable, aKeyUsages);
     if (NS_FAILED(mEarlyRv)) {
       return;
     }
 
     SetKeyData(aCx, aKeyData);
     NS_ENSURE_SUCCESS_VOID(mEarlyRv);
     if (mDataIsJwk && !mFormat.EqualsLiteral(WEBCRYPTO_KEY_FORMAT_JWK)) {
@@ -2393,17 +2393,17 @@ private:
     mKey = nullptr;
   }
 };
 
 GenerateAsymmetricKeyTask::GenerateAsymmetricKeyTask(
     nsIGlobalObject* aGlobal, JSContext* aCx, const ObjectOrString& aAlgorithm,
     bool aExtractable, const Sequence<nsString>& aKeyUsages)
   : mKeyPair(new CryptoKeyPair())
-{
+, mMechanism{}, mRsaParams{}, mDhParams{} {
   mArena = UniquePLArenaPool(PORT_NewArena(DER_DEFAULT_CHUNKSIZE));
   if (!mArena) {
     mEarlyRv = NS_ERROR_DOM_UNKNOWN_ERR;
     return;
   }
 
   // Create an empty key pair and set easy attributes
   mKeyPair->mPrivateKey = new CryptoKey(aGlobal);
@@ -2640,24 +2640,24 @@ GenerateAsymmetricKeyTask::Cleanup()
 }
 
 class DeriveHkdfBitsTask : public ReturnArrayBufferViewTask
 {
 public:
   DeriveHkdfBitsTask(JSContext* aCx,
       const ObjectOrString& aAlgorithm, CryptoKey& aKey, uint32_t aLength)
     : mSymKey(aKey.GetSymKey())
-  {
+  , mMechanism{} {
     Init(aCx, aAlgorithm, aKey, aLength);
   }
 
   DeriveHkdfBitsTask(JSContext* aCx, const ObjectOrString& aAlgorithm,
                       CryptoKey& aKey, const ObjectOrString& aTargetAlgorithm)
-    : mSymKey(aKey.GetSymKey())
-  {
+    : mLengthInBits{}, mLengthInBytes{}, mSymKey(aKey.GetSymKey())
+  , mMechanism{} {
     size_t length;
     mEarlyRv = GetKeyLengthForAlgorithm(aCx, aTargetAlgorithm, length);
 
     if (NS_SUCCEEDED(mEarlyRv)) {
       Init(aCx, aAlgorithm, aKey, length);
     }
   }
 
@@ -2790,24 +2790,24 @@ private:
 };
 
 class DerivePbkdfBitsTask : public ReturnArrayBufferViewTask
 {
 public:
   DerivePbkdfBitsTask(JSContext* aCx,
       const ObjectOrString& aAlgorithm, CryptoKey& aKey, uint32_t aLength)
     : mSymKey(aKey.GetSymKey())
-  {
+   /* FIXME: initialize mHashOidTag */  {
     Init(aCx, aAlgorithm, aKey, aLength);
   }
 
   DerivePbkdfBitsTask(JSContext* aCx, const ObjectOrString& aAlgorithm,
                       CryptoKey& aKey, const ObjectOrString& aTargetAlgorithm)
-    : mSymKey(aKey.GetSymKey())
-  {
+    : mLength{}, mIterations{}, mSymKey(aKey.GetSymKey())
+   /* FIXME: initialize mHashOidTag */  {
     size_t length;
     mEarlyRv = GetKeyLengthForAlgorithm(aCx, aTargetAlgorithm, length);
 
     if (NS_SUCCEEDED(mEarlyRv)) {
       Init(aCx, aAlgorithm, aKey, length);
     }
   }
 
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -291,17 +291,17 @@ EventStateManager::DeltaAccumulator*
   EventStateManager::DeltaAccumulator::sInstance = nullptr;
 
 EventStateManager::EventStateManager()
   : mLockCursor(0)
   , mLastFrameConsumedSetCursor(false)
   , mCurrentTarget(nullptr)
     // init d&d gesture state machine variables
   , mGestureDownPoint(0,0)
-  , mPresContext(nullptr)
+  , mGestureModifiers{}, mGestureDownButtons{}, mPresContext(nullptr)
   , mLClickCount(0)
   , mMClickCount(0)
   , mRClickCount(0)
   , mInTouchDrag(false)
   , m_haveShutdown(false)
 {
   if (sESMInstanceCount == 0) {
     gUserInteractionTimerCallback = new UITimerCallback();
--- a/dom/events/IMEContentObserver.cpp
+++ b/dom/events/IMEContentObserver.cpp
@@ -193,17 +193,17 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(IMEContentObserver)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(IMEContentObserver)
 
 IMEContentObserver::IMEContentObserver()
   : mESM(nullptr)
   , mIMENotificationRequests(nullptr)
-  , mSuppressNotifications(0)
+  , mPreAttrChangeLength{}, mSuppressNotifications(0)
   , mPreCharacterDataChangeLength(-1)
   , mSendingNotification(NOTIFY_IME_OF_NOTHING)
   , mIsObserving(false)
   , mIMEHasFocus(false)
   , mNeedsToNotifyIMEOfFocusSet(false)
   , mNeedsToNotifyIMEOfTextChange(false)
   , mNeedsToNotifyIMEOfSelectionChange(false)
   , mNeedsToNotifyIMEOfPositionChange(false)
--- a/dom/events/TextComposition.h
+++ b/dom/events/TextComposition.h
@@ -461,17 +461,17 @@ private:
     RefPtr<TextComposition> mTextComposition;
     nsCOMPtr<nsINode> mEventTarget;
     nsString mData;
     EventMessage mEventMessage;
     bool mIsSynthesizedEvent;
 
     CompositionEventDispatcher()
       : Runnable("TextComposition::CompositionEventDispatcher")
-      , mIsSynthesizedEvent(false){};
+      , /* FIXME: initialize mEventMessage */ /* FIXME: initialize mEventMessage */ mIsSynthesizedEvent(false){};
   };
 
   /**
    * DispatchCompositionEventRunnable() dispatches a composition event to the
    * content.  Be aware, if you use this method, nsPresShellEventCB isn't used.
    * That means that nsIFrame::HandleEvent() is never called.
    * WARNING: The instance which is managed by IMEStateManager may be
    *          destroyed by this method call.
--- a/dom/events/XULCommandEvent.cpp
+++ b/dom/events/XULCommandEvent.cpp
@@ -11,17 +11,17 @@ namespace mozilla {
 namespace dom {
 
 XULCommandEvent::XULCommandEvent(EventTarget* aOwner,
                                  nsPresContext* aPresContext,
                                  WidgetInputEvent* aEvent)
   : UIEvent(aOwner, aPresContext,
             aEvent ? aEvent :
                      new WidgetInputEvent(false, eVoidEvent, nullptr))
-{
+, mInputSource{} {
   if (aEvent) {
     mEventIsInternal = false;
   }
   else {
     mEventIsInternal = true;
     mEvent->mTime = PR_Now();
   }
 }
--- a/dom/fetch/InternalRequest.cpp
+++ b/dom/fetch/InternalRequest.cpp
@@ -117,17 +117,17 @@ InternalRequest::InternalRequest(const n
                                  RequestRedirect aRequestRedirect,
                                  RequestCredentials aRequestCredentials,
                                  const nsAString& aReferrer,
                                  ReferrerPolicy aReferrerPolicy,
                                  nsContentPolicyType aContentPolicyType,
                                  const nsAString& aIntegrity)
   : mMethod(aMethod)
   , mHeaders(aHeaders)
-  , mContentPolicyType(aContentPolicyType)
+  , mBodyLength{}, mContentPolicyType(aContentPolicyType)
   , mReferrer(aReferrer)
   , mReferrerPolicy(aReferrerPolicy)
   , mEnvironmentReferrerPolicy(net::RP_Unset)
   , mMode(aMode)
   , mCredentialsMode(aRequestCredentials)
   , mResponseTainting(LoadTainting::Basic)
   , mCacheMode(aCacheMode)
   , mRedirectMode(aRequestRedirect)
@@ -177,24 +177,24 @@ InternalRequest::InternalRequest(const I
   // NOTE: does not copy body stream... use the fallible Clone() for that
 }
 
 InternalRequest::InternalRequest(const IPCInternalRequest& aIPCRequest)
   : mMethod(aIPCRequest.method())
   , mURLList(aIPCRequest.urls())
   , mHeaders(new InternalHeaders(aIPCRequest.headers(),
                                  aIPCRequest.headersGuard()))
-  , mContentPolicyType(aIPCRequest.contentPolicyType())
+  , mBodyLength{}, mContentPolicyType(aIPCRequest.contentPolicyType())
   , mReferrer(aIPCRequest.referrer())
   , mReferrerPolicy(aIPCRequest.referrerPolicy())
-  , mMode(aIPCRequest.mode())
+  , /* FIXME: initialize mEnvironmentReferrerPolicy */ mMode(aIPCRequest.mode())
   , mCredentialsMode(aIPCRequest.credentials())
   , mCacheMode(aIPCRequest.requestCache())
   , mRedirectMode(aIPCRequest.requestRedirect())
-{
+, mMozErrors{false} {
   MOZ_ASSERT(!mURLList.IsEmpty());
 }
 
 InternalRequest::~InternalRequest()
 {
 }
 
 void
--- a/dom/filesystem/FileSystemTaskBase.h
+++ b/dom/filesystem/FileSystemTaskBase.h
@@ -182,17 +182,17 @@ private:
 
 // This class is the 'alter ego' of FileSystemTaskChildBase in the PBackground
 // world.
 class FileSystemTaskParentBase : public Runnable
 {
 public:
   FileSystemTaskParentBase()
     : Runnable("FileSystemTaskParentBase")
-  {}
+   /* FIXME: initialize mErrorValue */   /* FIXME: initialize mErrorValue */  {}
 
   /*
    * Start the task. This must be called from the PBackground thread only.
    */
   void
   Start();
 
   /*
--- a/dom/filesystem/GetFilesHelper.h
+++ b/dom/filesystem/GetFilesHelper.h
@@ -154,17 +154,20 @@ protected:
 };
 
 class GetFilesHelperChild final : public GetFilesHelper
 {
 public:
   GetFilesHelperChild(nsIGlobalObject* aGlobal, bool aRecursiveFlag)
     : GetFilesHelper(aGlobal, aRecursiveFlag)
     , mPendingOperation(false)
-  {}
+  {
+this->mUUID.m0 = {};
+this->mUUID.m1 = {};
+this->mUUID.m2 = {};}
 
   virtual void
   Work(ErrorResult& aRv) override;
 
   virtual void
   Cancel() override;
 
   bool
--- a/dom/gamepad/GamepadHapticActuator.h
+++ b/dom/gamepad/GamepadHapticActuator.h
@@ -18,18 +18,18 @@ class Promise;
 
 class GamepadHapticActuator : public nsISupports,
                               public nsWrapperCache
 {
 public:
   GamepadHapticActuator(nsISupports* aParent, uint32_t aGamepadId,
                         uint32_t aIndex);
   explicit GamepadHapticActuator(nsISupports* aParent)
-    : mParent(aParent), mType(GamepadHapticActuatorType::Vibration)
-  {
+    : mParent(aParent), mGamepadId{}, mType(GamepadHapticActuatorType::Vibration)
+  , mIndex{} {
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(GamepadHapticActuator)
 
   nsISupports* GetParentObject() const;
 
   virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
--- a/dom/gamepad/cocoa/CocoaGamepad.cpp
+++ b/dom/gamepad/cocoa/CocoaGamepad.cpp
@@ -458,17 +458,17 @@ MatchingDictionary(UInt32 inUsagePage, U
     return nullptr;
   }
   CFDictionarySetValue(dict, CFSTR(kIOHIDDeviceUsageKey), number);
   CFRelease(number);
 
   return dict;
 }
 
-DarwinGamepadService::DarwinGamepadService() : mManager(nullptr) {}
+DarwinGamepadService::DarwinGamepadService() : mManager(nullptr) , mMonitorRunLoop{nullptr} {}
 
 DarwinGamepadService::~DarwinGamepadService()
 {
   if (mManager != nullptr)
     CFRelease(mManager);
 }
 
 void
--- a/dom/ipc/ContentBridgeParent.cpp
+++ b/dom/ipc/ContentBridgeParent.cpp
@@ -17,17 +17,17 @@ using namespace mozilla::jsipc;
 namespace mozilla {
 namespace dom {
 
 NS_IMPL_ISUPPORTS(ContentBridgeParent,
                   nsIContentParent,
                   nsIObserver)
 
 ContentBridgeParent::ContentBridgeParent()
-  : mIsForJSPlugin(false)
+  : mIsForBrowser{false}, mIsForJSPlugin(false)
 {}
 
 ContentBridgeParent::~ContentBridgeParent()
 {
 }
 
 void
 ContentBridgeParent::ActorDestroy(ActorDestroyReason aWhy)
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -497,17 +497,17 @@ ContentChild* ContentChild::sSingleton;
 StaticAutoPtr<ContentChild::ShutdownCanary> ContentChild::sShutdownCanary;
 
 ContentChild::ContentChild()
  : mID(uint64_t(-1))
 #if defined(XP_WIN) && defined(ACCESSIBILITY)
  , mMainChromeTid(0)
  , mMsaaID(0)
 #endif
- , mIsAlive(true)
+ , mIsForBrowser{false}, mIsAlive(true)
  , mShuttingDown(false)
 {
   // This process is a content process, so it's clearly running in
   // multiprocess mode!
   nsDebugImpl::SetMultiprocessMode("Child");
 
   // When ContentChild is created, the observer service does not even exist.
   // When ContentChild::RecvSetXPCOMProcessAttributes is called (the first
--- a/dom/ipc/FilePickerParent.h
+++ b/dom/ipc/FilePickerParent.h
@@ -21,17 +21,17 @@ namespace dom {
 
 class FilePickerParent : public PFilePickerParent
 {
  public:
   FilePickerParent(const nsString& aTitle,
                    const int16_t& aMode)
   : mTitle(aTitle)
   , mMode(aMode)
-  {}
+  , mResult{} {}
 
   virtual ~FilePickerParent();
 
   void Done(int16_t aResult);
 
   struct BlobImplOrString
   {
     RefPtr<BlobImpl> mBlobImpl;
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -407,17 +407,17 @@ TabChild::TabChild(nsIContentChild* aMan
   , mTabGroup(aTabGroup)
   , mRemoteFrame(nullptr)
   , mManager(aManager)
   , mChromeFlags(aChromeFlags)
   , mMaxTouchPoints(0)
   , mActiveSuppressDisplayport(0)
   , mLayersId(0)
   , mBeforeUnloadListeners(0)
-  , mDidFakeShow(false)
+  , mLastBackgroundColor{}, mDidFakeShow(false)
   , mNotified(false)
   , mTriedBrowserInit(false)
   , mOrientation(eScreenOrientation_PortraitPrimary)
   , mIgnoreKeyPressEvent(false)
   , mHasValidInnerSize(false)
   , mDestroyed(false)
   , mUniqueId(aTabId)
   , mIsTransparent(false)
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -161,17 +161,17 @@ TabParent::TabParent(nsIContentParent* a
   , mMarkedDestroying(false)
   , mIsDestroyed(false)
   , mChromeFlags(aChromeFlags)
   , mDragValid(false)
   , mInitedByParent(false)
   , mTabId(aTabId)
   , mCreatingWindow(false)
   , mCursor(eCursorInvalid)
-  , mTabSetsCursor(false)
+  , mCustomCursorHotspotX{}, mCustomCursorHotspotY{}, mTabSetsCursor(false)
   , mHasContentOpener(false)
 #ifdef DEBUG
   , mActiveSupressDisplayportCount(0)
 #endif
   , mLayerTreeEpoch(0)
   , mPreserveLayers(false)
   , mHasPresented(false)
   , mHasBeforeUnload(false)
--- a/dom/media/BufferReader.h
+++ b/dom/media/BufferReader.h
@@ -14,17 +14,17 @@
 
 namespace mozilla {
 
 extern mozilla::LazyLogModule gMP4MetadataLog;
 
 class MOZ_RAII BufferReader
 {
 public:
-  BufferReader() : mPtr(nullptr), mRemaining(0) {}
+  BufferReader() : mPtr(nullptr), mRemaining(0) , mLength{} {}
   BufferReader(const uint8_t* aData, size_t aSize)
     : mPtr(aData), mRemaining(aSize), mLength(aSize)
   {
   }
   template<size_t S>
   explicit BufferReader(const AutoTArray<uint8_t, S>& aData)
     : mPtr(aData.Elements()), mRemaining(aData.Length()), mLength(aData.Length())
   {
--- a/dom/media/DOMMediaStream.cpp
+++ b/dom/media/DOMMediaStream.cpp
@@ -423,17 +423,17 @@ NS_INTERFACE_MAP_END_INHERITING(DOMMedia
 DOMMediaStream::DOMMediaStream(nsPIDOMWindowInner* aWindow,
                                MediaStreamTrackSourceGetter* aTrackSourceGetter)
   : mLogicalStreamStartTime(0), mWindow(aWindow),
     mInputStream(nullptr), mOwnedStream(nullptr), mPlaybackStream(nullptr),
     mTracksPendingRemoval(0), mTrackSourceGetter(aTrackSourceGetter),
     mPlaybackTrackListener(MakeAndAddRef<PlaybackTrackListener>(this)),
     mTracksCreated(false), mNotifiedOfMediaStreamGraphShutdown(false),
     mActive(false), mSetInactiveOnFinish(false)
-{
+ /* FIXME: initialize mCORSMode */  {
   nsresult rv;
   nsCOMPtr<nsIUUIDGenerator> uuidgen =
     do_GetService("@mozilla.org/uuid-generator;1", &rv);
 
   if (NS_SUCCEEDED(rv) && uuidgen) {
     nsID uuid;
     memset(&uuid, 0, sizeof(uuid));
     rv = uuidgen->GenerateUUIDInPlace(&uuid);
--- a/dom/media/GetUserMediaRequest.cpp
+++ b/dom/media/GetUserMediaRequest.cpp
@@ -24,19 +24,19 @@ GetUserMediaRequest::GetUserMediaRequest
   , mIsSecure(aIsSecure)
 {
 }
 
 GetUserMediaRequest::GetUserMediaRequest(
     nsPIDOMWindowInner* aInnerWindow,
     const nsAString& aRawId,
     const nsAString& aMediaSource)
-  : mRawID(aRawId)
+  : mInnerWindowID{}, mOuterWindowID{}, mRawID(aRawId)
   , mMediaSource(aMediaSource)
-{
+, mIsSecure{false} {
   if (aInnerWindow && aInnerWindow->GetOuterWindow()) {
     mOuterWindowID = aInnerWindow->GetOuterWindow()->WindowID();
   }
 }
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(GetUserMediaRequest)
 NS_IMPL_CYCLE_COLLECTING_ADDREF(GetUserMediaRequest)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(GetUserMediaRequest)
--- a/dom/media/MediaCache.cpp
+++ b/dom/media/MediaCache.cpp
@@ -482,17 +482,17 @@ MediaCacheStream::MediaCacheStream(Chann
   : mMediaCache(nullptr)
   , mClient(aClient)
   , mIsTransportSeekable(false)
   , mCacheSuspended(false)
   , mChannelEnded(false)
   , mStreamOffset(0)
   , mPlaybackBytesPerSecond(10000)
   , mPinCount(0)
-  , mCurrentMode(MODE_PLAYBACK)
+  , /* FIXME: initialize mNotifyDataEndedStatus */ mCurrentMode(MODE_PLAYBACK)
   , mMetadataInPartialBlockBuffer(false)
   , mIsPrivateBrowsing(aIsPrivateBrowsing)
 {
 }
 
 size_t MediaCacheStream::SizeOfExcludingThis(
                                 MallocSizeOf aMallocSizeOf) const
 {
--- a/dom/media/MediaCache.h
+++ b/dom/media/MediaCache.h
@@ -404,17 +404,17 @@ private:
 #else
     void Verify() {}
 #endif
 
     size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
 
   private:
     struct Entry : public nsUint32HashKey {
-      explicit Entry(KeyTypePointer aKey) : nsUint32HashKey(aKey) { }
+      explicit Entry(KeyTypePointer aKey) : nsUint32HashKey(aKey) , mNextBlock{}, mPrevBlock{} { }
       Entry(const Entry& toCopy) : nsUint32HashKey(&toCopy.GetKey()),
         mNextBlock(toCopy.mNextBlock), mPrevBlock(toCopy.mPrevBlock) {}
 
       int32_t mNextBlock;
       int32_t mPrevBlock;
     };
     nsTHashtable<Entry> mEntries;
 
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -834,17 +834,17 @@ private:
  *   COMPLETED if the new playback position is the end of the media resource.
  *   NextFrameSeekingState if completing a NextFrameSeekingFromDormantState.
  *   DECODING otherwise.
  */
 class MediaDecoderStateMachine::SeekingState
   : public MediaDecoderStateMachine::StateObject
 {
 public:
-  explicit SeekingState(Master* aPtr) : StateObject(aPtr) { }
+  explicit SeekingState(Master* aPtr) : StateObject(aPtr)  /* FIXME: initialize mVisibility */  { }
 
   RefPtr<MediaDecoder::SeekPromise> Enter(SeekJob&& aSeekJob,
                                           EventVisibility aVisibility)
   {
     mSeekJob = Move(aSeekJob);
     mVisibility = aVisibility;
 
     // Always switch off the blank decoder otherwise we might become visible
--- a/dom/media/MediaRecorder.cpp
+++ b/dom/media/MediaRecorder.cpp
@@ -1241,30 +1241,30 @@ MediaRecorder::~MediaRecorder()
   UnRegisterActivityObserver();
 }
 
 MediaRecorder::MediaRecorder(DOMMediaStream& aSourceMediaStream,
                              nsPIDOMWindowInner* aOwnerWindow)
   : DOMEventTargetHelper(aOwnerWindow)
   , mAudioNodeOutput(0)
   , mState(RecordingState::Inactive)
-{
+, mAudioBitsPerSecond{}, mVideoBitsPerSecond{}, mBitsPerSecond{} {
   MOZ_ASSERT(aOwnerWindow);
   mDOMStream = &aSourceMediaStream;
 
   RegisterActivityObserver();
 }
 
 MediaRecorder::MediaRecorder(AudioNode& aSrcAudioNode,
                              uint32_t aSrcOutput,
                              nsPIDOMWindowInner* aOwnerWindow)
   : DOMEventTargetHelper(aOwnerWindow)
   , mAudioNodeOutput(aSrcOutput)
   , mState(RecordingState::Inactive)
-{
+, mAudioBitsPerSecond{}, mVideoBitsPerSecond{}, mBitsPerSecond{} {
   MOZ_ASSERT(aOwnerWindow);
 
   mAudioNode = &aSrcAudioNode;
 
   RegisterActivityObserver();
 }
 
 void
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -3490,17 +3490,17 @@ ProcessedMediaStream::DestroyImpl()
   // MediaStreamGraphImpl::RemoveStreamGraphThread() will also call
   // SetStreamOrderDirty(), for other reasons.
 }
 
 MediaStreamGraphImpl::MediaStreamGraphImpl(GraphDriverType aDriverRequested,
                                            TrackRate aSampleRate,
                                            AbstractThread* aMainThread)
   : MediaStreamGraph(aSampleRate)
-  , mPortCount(0)
+  , mFirstCycleBreaker{}, mPortCount(0)
   , mInputWanted(false)
   , mInputDeviceID(-1)
   , mOutputWanted(true)
   , mOutputDeviceID(-1)
   , mNeedAnotherIteration(false)
   , mGraphDriverAsleep(false)
   , mMonitor("MediaStreamGraphImpl")
   , mLifecycleState(LIFECYCLE_THREAD_NOT_STARTED)
--- a/dom/media/StreamTracks.h
+++ b/dom/media/StreamTracks.h
@@ -245,17 +245,17 @@ public:
 
   class MOZ_STACK_CLASS TrackIter final
   {
   public:
     /**
      * Iterate through the tracks of aBuffer in order of ID.
      */
     explicit TrackIter(const StreamTracks& aBuffer) :
-      mBuffer(&aBuffer.mTracks), mIndex(0), mMatchType(false) {}
+      mBuffer(&aBuffer.mTracks), mIndex(0), /* FIXME: initialize mType */ /* FIXME: initialize mType */ mMatchType(false) {}
     /**
      * Iterate through the tracks of aBuffer with type aType, in order of ID.
      */
     TrackIter(const StreamTracks& aBuffer, MediaSegment::Type aType) :
       mBuffer(&aBuffer.mTracks), mIndex(0), mType(aType), mMatchType(true) { FindMatch(); }
     bool IsEnded() const { return mIndex >= mBuffer->Length(); }
     void Next()
     {
--- a/dom/media/VideoUtils.h
+++ b/dom/media/VideoUtils.h
@@ -483,17 +483,17 @@ public:
     DereferencedType operator*()
     {
       return Substring(mStart, mEnd);
     }
   private:
     friend class StringListRange;
     Iterator(const CharType* aRangeStart, uint32_t aLength)
       : mRangeEnd(aRangeStart + aLength)
-    {
+    , mStart{nullptr}, mEnd{nullptr}, mComma{nullptr} {
       SearchItemAt(aRangeStart);
     }
     void SearchItemAt(Pointer start)
     {
       // First, skip leading whitespace.
       for (Pointer p = start; ; ++p) {
         if (p >= mRangeEnd) {
           if (p > mRangeEnd
--- a/dom/media/eme/MediaKeyMessageEvent.cpp
+++ b/dom/media/eme/MediaKeyMessageEvent.cpp
@@ -35,17 +35,17 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_IN
   mozilla::DropJSObjects(this);
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MediaKeyMessageEvent)
 NS_INTERFACE_MAP_END_INHERITING(Event)
 
 MediaKeyMessageEvent::MediaKeyMessageEvent(EventTarget* aOwner)
   : Event(aOwner, nullptr, nullptr)
-{
+ /* FIXME: initialize mMessageType */  {
   mozilla::HoldJSObjects(this);
 }
 
 MediaKeyMessageEvent::~MediaKeyMessageEvent()
 {
   mMessage = nullptr;
   mozilla::DropJSObjects(this);
 }
--- a/dom/media/encoder/TrackEncoder.h
+++ b/dom/media/encoder/TrackEncoder.h
@@ -218,17 +218,17 @@ protected:
 class AudioTrackEncoder : public TrackEncoder
 {
 public:
   explicit AudioTrackEncoder(TrackRate aTrackRate)
     : TrackEncoder(aTrackRate)
     , mChannels(0)
     , mSamplingRate(0)
     , mAudioBitrate(0)
-  {}
+  , mDirectConnected{false} {}
 
   /**
    * Suspends encoding from mCurrentTime, i.e., all audio data until the next
    * Resume() will be dropped.
    */
   void Suspend(TimeStamp aTime) override;
 
   /**
--- a/dom/media/gmp/GMPContentParent.cpp
+++ b/dom/media/gmp/GMPContentParent.cpp
@@ -29,17 +29,17 @@ extern LogModule* GetGMPLog();
 #undef __CLASS__
 #endif
 #define __CLASS__ "GMPContentParent"
 
 namespace gmp {
 
 GMPContentParent::GMPContentParent(GMPParent* aParent)
   : mParent(aParent)
-{
+, mPluginId{} {
   if (mParent) {
     SetDisplayName(mParent->GetDisplayName());
     SetPluginId(mParent->GetPluginId());
   }
 }
 
 GMPContentParent::~GMPContentParent()
 {
--- a/dom/media/gmp/GMPTimerParent.h
+++ b/dom/media/gmp/GMPTimerParent.h
@@ -30,17 +30,17 @@ protected:
   void ActorDestroy(ActorDestroyReason aWhy) override;
 
 private:
   ~GMPTimerParent() {}
 
   static void GMPTimerExpired(nsITimer *aTimer, void *aClosure);
 
   struct Context {
-    Context() {
+    Context()  : mId{} {
       MOZ_COUNT_CTOR(Context);
     }
     ~Context() {
       MOZ_COUNT_DTOR(Context);
     }
     nsCOMPtr<nsITimer> mTimer;
     RefPtr<GMPTimerParent> mParent; // Note: live timers keep the GMPTimerParent alive.
     uint32_t mId;
--- a/dom/media/ipc/RemoteVideoDecoder.cpp
+++ b/dom/media/ipc/RemoteVideoDecoder.cpp
@@ -19,17 +19,17 @@ namespace dom {
 using base::Thread;
 using namespace ipc;
 using namespace layers;
 using namespace gfx;
 
 RemoteVideoDecoder::RemoteVideoDecoder()
   : mActor(new VideoDecoderChild())
   , mDescription("RemoteVideoDecoder")
-{
+, mIsHardwareAccelerated{false} /* FIXME: initialize mConversion */   /* FIXME: initialize mConversion */  {
 }
 
 RemoteVideoDecoder::~RemoteVideoDecoder()
 {
   // We're about to be destroyed and drop our ref to
   // VideoDecoderChild. Make sure we put a ref into the
   // task queue for the VideoDecoderChild thread to keep
   // it alive until we send the delete message.
--- a/dom/media/mp4/Box.cpp
+++ b/dom/media/mp4/Box.cpp
@@ -118,17 +118,17 @@ Box::Box(BoxContext* aContext, uint64_t 
     return;
   }
 
   mRange = boxRange;
 }
 
 Box::Box()
   : mContext(nullptr)
-{}
+, mBodyOffset{}, mChildOffset{}, mParent{nullptr} {}
 
 Box
 Box::Next() const
 {
   MOZ_ASSERT(IsAvailable());
   return Box(mContext, mRange.mEnd, mParent);
 }
 
--- a/dom/media/mp4/MP4Demuxer.cpp
+++ b/dom/media/mp4/MP4Demuxer.cpp
@@ -114,17 +114,17 @@ AccumulateSPSTelemetry(const MediaByteBu
   }
 
   return true;
 }
 
 MP4Demuxer::MP4Demuxer(MediaResource* aResource)
   : mResource(aResource)
   , mStream(new ResourceStream(aResource))
-{
+, mIsSeekable{false} {
 }
 
 RefPtr<MP4Demuxer::InitPromise>
 MP4Demuxer::Init()
 {
   AutoPinned<ResourceStream> stream(mStream);
 
   // 'result' will capture the first warning, if any.
--- a/dom/media/mp4/MP4Metadata.cpp
+++ b/dom/media/mp4/MP4Metadata.cpp
@@ -22,16 +22,17 @@
 
 using mozilla::media::TimeUnit;
 
 namespace mozilla {
 LazyLogModule gMP4MetadataLog("MP4Metadata");
 
 IndiceWrapper::IndiceWrapper(Mp4parseByteData& aIndice)
 {
+this->mIndice.data = {nullptr};
   mIndice.length = aIndice.length;
   mIndice.indices = aIndice.indices;
 }
 
 size_t
 IndiceWrapper::Length() const
 {
   return mIndice.length;
--- a/dom/media/mp4/MoofParser.cpp
+++ b/dom/media/mp4/MoofParser.cpp
@@ -702,17 +702,17 @@ Moof::ParseTrun(Box& aBox, Tfhd& aTfhd, 
   mMaxRoundingError += roundTime;
 
   *aDecodeTime = decodeTime;
 
   return Ok();
 }
 
 Tkhd::Tkhd(Box& aBox)
-{
+ : mTrackId{} {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Tkhd, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
 Tkhd::Parse(Box& aBox)
@@ -742,17 +742,17 @@ Tkhd::Parse(Box& aBox)
     MOZ_TRY_VAR(reserved, reader->ReadU32());
     NS_ASSERTION(!reserved, "reserved should be 0");
     MOZ_TRY_VAR(mDuration, reader->ReadU64());
   }
   return Ok();
 }
 
 Mvhd::Mvhd(Box& aBox)
-{
+ : mCreationTime{}, mModificationTime{}, mTimescale{}, mDuration{} {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Mvhd, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
 Mvhd::Parse(Box& aBox)
@@ -784,17 +784,17 @@ Mvhd::Parse(Box& aBox)
 }
 
 Mdhd::Mdhd(Box& aBox)
   : Mvhd(aBox)
 {
 }
 
 Trex::Trex(Box& aBox)
-{
+ : mFlags{}, mTrackId{}, mDefaultSampleDescriptionIndex{}, mDefaultSampleDuration{}, mDefaultSampleSize{}, mDefaultSampleFlags{} {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Trex, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
 Trex::Parse(Box& aBox)
@@ -808,17 +808,17 @@ Trex::Parse(Box& aBox)
   MOZ_TRY_VAR(mDefaultSampleSize, reader->ReadU32());
   MOZ_TRY_VAR(mDefaultSampleFlags, reader->ReadU32());
 
   return Ok();
 }
 
 Tfhd::Tfhd(Box& aBox, Trex& aTrex)
   : Trex(aTrex)
-{
+, mBaseDataOffset{} {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Tfhd, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
 Tfhd::Parse(Box& aBox)
@@ -847,17 +847,17 @@ Tfhd::Parse(Box& aBox)
   if (mFlags & 0x20) {
     MOZ_TRY_VAR(mDefaultSampleFlags, reader->ReadU32());
   }
 
   return Ok();
 }
 
 Tfdt::Tfdt(Box& aBox)
-{
+ : mBaseMediaDecodeTime{} {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Tfdt, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
 Tfdt::Parse(Box& aBox)
@@ -1015,17 +1015,17 @@ Saio::Parse(Box& aBox)
       MOZ_TRY_VAR(offset, reader->ReadU64());
       MOZ_ALWAYS_TRUE(mOffsets.AppendElement(offset, fallible));
     }
   }
   return Ok();
 }
 
 Sbgp::Sbgp(Box& aBox)
-{
+ : mGroupingTypeParam{} {
   mValid = Parse(aBox).isOk();
   if (!mValid) {
     LOG(Sbgp, "Parse failed");
   }
 }
 
 Result<Ok, nsresult>
 Sbgp::Parse(Box& aBox)
--- a/dom/media/ogg/OggWriter.cpp
+++ b/dom/media/ogg/OggWriter.cpp
@@ -7,17 +7,34 @@
 #include "GeckoProfiler.h"
 
 #undef LOG
 #define LOG(args, ...)
 
 namespace mozilla {
 
 OggWriter::OggWriter() : ContainerWriter()
-{
+, mOggPage{}, mPacket{} {
+this->mOggStreamState.body_data = {nullptr};
+this->mOggStreamState.body_storage = {};
+this->mOggStreamState.body_fill = {};
+this->mOggStreamState.body_returned = {};
+this->mOggStreamState.lacing_vals = {nullptr};
+this->mOggStreamState.granule_vals = {nullptr};
+this->mOggStreamState.lacing_storage = {};
+this->mOggStreamState.lacing_fill = {};
+this->mOggStreamState.lacing_packet = {};
+this->mOggStreamState.lacing_returned = {};
+this->mOggStreamState.header_fill = {};
+this->mOggStreamState.e_o_s = {};
+this->mOggStreamState.b_o_s = {};
+this->mOggStreamState.serialno = {};
+this->mOggStreamState.pageno = {};
+this->mOggStreamState.packetno = {};
+this->mOggStreamState.granulepos = {};
   if (NS_FAILED(Init())) {
     LOG("ERROR! Fail to initialize the OggWriter.");
   }
 }
 
 OggWriter::~OggWriter()
 {
   if (mInitialized) {
--- a/dom/media/ogg/OpusParser.cpp
+++ b/dom/media/ogg/OpusParser.cpp
@@ -28,17 +28,17 @@ OpusParser::OpusParser():
 #ifdef MOZ_SAMPLE_TYPE_FLOAT32
   mGain(1.0f),
 #else
   mGain_Q16(65536),
 #endif
   mChannelMapping(0),
   mStreams(0),
   mCoupledStreams(0)
-{ }
+, mPrevPacketGranulepos{} { }
 
 bool OpusParser::DecodeHeader(unsigned char* aData, size_t aLength)
 {
     if (aLength < 19 || memcmp(aData, "OpusHead", 8)) {
       OPUS_LOG(LogLevel::Debug, ("Invalid Opus file: unrecognized header"));
       return false;
     }
 
--- a/dom/media/platforms/agnostic/TheoraDecoder.cpp
+++ b/dom/media/platforms/agnostic/TheoraDecoder.cpp
@@ -37,17 +37,17 @@ ogg_packet InitTheoraPacket(const unsign
   packet.packetno = aPacketNo;
   return packet;
 }
 
 TheoraDecoder::TheoraDecoder(const CreateDecoderParams& aParams)
   : mImageAllocator(aParams.mKnowsCompositor)
   , mImageContainer(aParams.mImageContainer)
   , mTaskQueue(aParams.mTaskQueue)
-  , mTheoraSetupInfo(nullptr)
+  , mTheoraInfo{}, mTheoraComment{}, mTheoraSetupInfo(nullptr)
   , mTheoraDecoderContext(nullptr)
   , mPacketCount(0)
   , mInfo(aParams.VideoConfig())
 {
   MOZ_COUNT_CTOR(TheoraDecoder);
 }
 
 TheoraDecoder::~TheoraDecoder()
--- a/dom/media/platforms/apple/AppleATDecoder.cpp
+++ b/dom/media/platforms/apple/AppleATDecoder.cpp
@@ -20,17 +20,17 @@
 namespace mozilla {
 
 AppleATDecoder::AppleATDecoder(const AudioInfo& aConfig,
                                TaskQueue* aTaskQueue)
   : mConfig(aConfig)
   , mFileStreamError(false)
   , mTaskQueue(aTaskQueue)
   , mConverter(nullptr)
-  , mStream(nullptr)
+  , mOutputFormat{}, mStream(nullptr)
   , mParsedFramesForAACMagicCookie(0)
   , mErrored(false)
 {
   MOZ_COUNT_CTOR(AppleATDecoder);
   LOG("Creating Apple AudioToolbox decoder");
   LOG("Audio Decoder configuration: %s %d Hz %d channels %d bits per channel",
       mConfig.mMimeType.get(),
       mConfig.mRate,
--- a/dom/media/systemservices/CamerasChild.cpp
+++ b/dom/media/systemservices/CamerasChild.cpp
@@ -717,18 +717,18 @@ CamerasChild::ActorDestroy(ActorDestroyR
   monitor.NotifyAll();
 }
 
 CamerasChild::CamerasChild()
   : mCallbackMutex("mozilla::cameras::CamerasChild::mCallbackMutex"),
     mIPCIsAlive(true),
     mRequestMutex("mozilla::cameras::CamerasChild::mRequestMutex"),
     mReplyMonitor("mozilla::cameras::CamerasChild::mReplyMonitor"),
-    mZero(0)
-{
+    mReceivedReply{false}, mReplySuccess{false}, mZero(0)
+, mReplyInteger{}, mReplyScary{false} {
   LOG(("CamerasChild: %p", this));
 
   MOZ_COUNT_CTOR(CamerasChild);
 }
 
 CamerasChild::~CamerasChild()
 {
   LOG(("~CamerasChild: %p", this));
--- a/dom/media/systemservices/CamerasParent.cpp
+++ b/dom/media/systemservices/CamerasParent.cpp
@@ -107,17 +107,17 @@ public:
                        uint32_t aStreamId,
                        const webrtc::VideoFrame& aFrame,
                        const VideoFrameProperties& aProperties)
     : Runnable("camera::DeliverFrameRunnable")
     , mParent(aParent)
     , mCapEngine(aEngine)
     , mStreamId(aStreamId)
     , mProperties(aProperties)
-  {
+  , mResult{} {
     // No ShmemBuffer (of the right size) was available, so make an
     // extra buffer here.  We have no idea when we are going to run and
     // it will be potentially long after the webrtc frame callback has
     // returned, so the copy needs to be no later than here.
     // We will need to copy this back into a Shmem later on so we prefer
     // using ShmemBuffers to avoid the extra copy.
     mAlternateBuffer.reset(new unsigned char[aProperties.bufferSize()]);
     VideoFrameUtils::CopyVideoFrameBuffers(mAlternateBuffer.get(),
@@ -129,17 +129,17 @@ public:
                        uint32_t aStreamId,
                        ShmemBuffer aBuffer,
                        VideoFrameProperties& aProperties)
     : Runnable("camera::DeliverFrameRunnable")
     , mParent(aParent)
     , mCapEngine(aEngine)
     , mStreamId(aStreamId)
     , mBuffer(Move(aBuffer))
-    , mProperties(aProperties){};
+    , mProperties(aProperties), mResult{} {};
 
   NS_IMETHOD Run() override {
     if (mParent->IsShuttingDown()) {
       // Communication channel is being torn down
       mResult = 0;
       return NS_OK;
     }
     if (!mParent->DeliverFrameOverIPC(mCapEngine, mStreamId, Move(mBuffer),
--- a/dom/media/systemservices/MediaSystemResourceManagerChild.cpp
+++ b/dom/media/systemservices/MediaSystemResourceManagerChild.cpp
@@ -7,17 +7,17 @@
 
 #include "MediaSystemResourceManagerChild.h"
 
 namespace mozilla {
 namespace media {
 
 MediaSystemResourceManagerChild::MediaSystemResourceManagerChild()
   : mDestroyed(false)
-{
+, mManager{nullptr} {
 }
 
 MediaSystemResourceManagerChild::~MediaSystemResourceManagerChild()
 {
 }
 
 mozilla::ipc::IPCResult
 MediaSystemResourceManagerChild::RecvResponse(const uint32_t& aId,
--- a/dom/media/systemservices/VideoEngine.cpp
+++ b/dom/media/systemservices/VideoEngine.cpp
@@ -221,17 +221,17 @@ bool VideoEngine::WithEntry(const int32_
 int32_t
 VideoEngine::GenerateId() {
   // XXX Something better than this (a map perhaps, or a simple boolean TArray, given
   // the number in-use is O(1) normally!)
   return mId = sId++;
 }
 
 VideoEngine::VideoEngine(UniquePtr<const webrtc::Config>&& aConfig):
-  mCaptureDevInfo(aConfig->Get<webrtc::CaptureDeviceInfo>()),
+  mId{}, mCaptureDevInfo(aConfig->Get<webrtc::CaptureDeviceInfo>()),
   mDeviceInfo(nullptr),
   mConfig(std::move(aConfig))
 {
   LOG((__PRETTY_FUNCTION__));
 }
 
 }
 }
--- a/dom/media/systemservices/VideoEngine.h
+++ b/dom/media/systemservices/VideoEngine.h
@@ -27,17 +27,17 @@ class VideoEngine
 private:
   virtual ~VideoEngine (){};
   // Base cache expiration period
   // Note because cameras use HW plug event detection, this
   // only applies to screen based modes.
   static const int64_t kCacheExpiryPeriodMs = 2000;
 
 public:
-  VideoEngine (){};
+  VideoEngine () : mId{} {};
   NS_INLINE_DECL_REFCOUNTING(VideoEngine)
 
   static RefPtr<VideoEngine> Create(UniquePtr<const webrtc::Config>&& aConfig);
 #if defined(ANDROID)
   static int SetAndroidObjects(JavaVM* javaVM);
 #endif
   void CreateVideoCapture(int32_t& id, const char* deviceUniqueIdUTF8);
 
--- a/dom/media/wave/WaveDemuxer.cpp
+++ b/dom/media/wave/WaveDemuxer.cpp
@@ -71,21 +71,21 @@ WAVDemuxer::IsSeekable() const
 // WAVTrackDemuxer
 
 WAVTrackDemuxer::WAVTrackDemuxer(MediaResource* aSource)
   : mSource(aSource)
   , mOffset(0)
   , mFirstChunkOffset(0)
   , mNumParsedChunks(0)
   , mChunkIndex(0)
-  , mTotalChunkLen(0)
+  , mDataLength{}, mTotalChunkLen(0)
   , mSamplesPerChunk(0)
   , mSamplesPerSecond(0)
   , mChannels(0)
-{
+, mSampleFormat{} {
   Reset();
 }
 
 bool
 WAVTrackDemuxer::Init()
 {
   Reset();
   FastSeek(TimeUnit());
--- a/dom/media/webaudio/AudioBufferSourceNode.cpp
+++ b/dom/media/webaudio/AudioBufferSourceNode.cpp
@@ -46,20 +46,20 @@ public:
     AudioNodeEngine(aNode),
     mStart(0.0), mBeginProcessing(0),
     mStop(STREAM_TIME_MAX),
     mResampler(nullptr), mRemainingResamplerTail(0),
     mBufferEnd(0),
     mLoopStart(0), mLoopEnd(0),
     mBufferPosition(0), mBufferSampleRate(0),
     // mResamplerOutRate is initialized in UpdateResampler().
-    mChannels(0),
+    mResamplerOutRate{}, mChannels(0),
     mDopplerShift(1.0f),
     mDestination(aDestination->Stream()),
-    mPlaybackRateTimeline(1.0f),
+    mSource{nullptr}, mPlaybackRateTimeline(1.0f),
     mDetuneTimeline(0.0f),
     mLoop(false)
   {}
 
   ~AudioBufferSourceNodeEngine()
   {
     if (mResampler) {
       speex_resampler_destroy(mResampler);
@@ -619,17 +619,17 @@ public:
 AudioBufferSourceNode::AudioBufferSourceNode(AudioContext* aContext)
   : AudioScheduledSourceNode(aContext,
                              2,
                              ChannelCountMode::Max,
                              ChannelInterpretation::Speakers)
   , mLoopStart(0.0)
   , mLoopEnd(0.0)
   // mOffset and mDuration are initialized in Start().
-  , mPlaybackRate(new AudioParam(this, PLAYBACKRATE, "playbackRate", 1.0f))
+  , mOffset{0.0}, mDuration{0.0}, mPlaybackRate(new AudioParam(this, PLAYBACKRATE, "playbackRate", 1.0f))
   , mDetune(new AudioParam(this, DETUNE, "detune", 0.0f))
   , mLoop(false)
   , mStartCalled(false)
 {
   AudioBufferSourceNodeEngine* engine = new AudioBufferSourceNodeEngine(this, aContext->Destination());
   mStream = AudioNodeStream::Create(aContext, engine,
                                     AudioNodeStream::NEED_MAIN_THREAD_FINISHED,
                                     aContext->Graph());
--- a/dom/media/webaudio/AudioEventTimeline.cpp
+++ b/dom/media/webaudio/AudioEventTimeline.cpp
@@ -73,17 +73,17 @@ AudioTimelineEvent::AudioTimelineEvent(T
     SetCurveParams(aCurve, aCurveLength);
   } else {
     mValue = aValue;
   }
 }
 
 AudioTimelineEvent::AudioTimelineEvent(MediaStream* aStream)
   : mType(Stream)
-  , mCurve(nullptr)
+  , mValue{0.0}, mCurve(nullptr)
   , mStream(aStream)
   , mTimeConstant(0.0)
   , mDuration(0.0)
 #ifdef DEBUG
   , mTimeIsInTicks(false)
 #endif
   , mTime(0.0)
 {
--- a/dom/media/webaudio/AudioProcessingEvent.cpp
+++ b/dom/media/webaudio/AudioProcessingEvent.cpp
@@ -22,17 +22,17 @@ NS_IMPL_ADDREF_INHERITED(AudioProcessing
 NS_IMPL_RELEASE_INHERITED(AudioProcessingEvent, Event)
 
 AudioProcessingEvent::AudioProcessingEvent(ScriptProcessorNode* aOwner,
                                            nsPresContext* aPresContext,
                                            WidgetEvent* aEvent)
   : Event(aOwner, aPresContext, aEvent)
   , mPlaybackTime(0.0)
   , mNode(aOwner)
-{
+, mNumberOfInputChannels{} {
 }
 
 AudioProcessingEvent::~AudioProcessingEvent()
 {
 }
 
 JSObject*
 AudioProcessingEvent::WrapObjectInternal(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
--- a/dom/media/webaudio/DelayBuffer.h
+++ b/dom/media/webaudio/DelayBuffer.h
@@ -26,17 +26,17 @@ public:
     , mCurrentDelay(-1.0)
     // Round the maximum delay up to the next tick.
     , mMaxDelayTicks(ceil(aMaxDelayTicks))
     , mCurrentChunk(0)
     // mLastReadChunk is initialized in EnsureBuffer
 #ifdef DEBUG
     , mHaveWrittenBlock(false)
 #endif
-  {
+  , mLastReadChunk{} {
     // The 180 second limit in AudioContext::CreateDelay() and the
     // 1 << MEDIA_TIME_FRAC_BITS limit on sample rate provide a limit on the
     // maximum delay.
     MOZ_ASSERT(aMaxDelayTicks <=
                std::numeric_limits<decltype(mMaxDelayTicks)>::max());
   }
 
   // Write a WEBAUDIO_BLOCK_SIZE block for aChannelCount channels.
--- a/dom/media/webaudio/blink/HRTFPanner.cpp
+++ b/dom/media/webaudio/blink/HRTFPanner.cpp
@@ -42,19 +42,19 @@ const double MaxDelayTimeSeconds = 0.002
 const int UninitializedAzimuth = -1;
 const unsigned RenderingQuantum = WEBAUDIO_BLOCK_SIZE;
 
 HRTFPanner::HRTFPanner(float sampleRate, already_AddRefed<HRTFDatabaseLoader> databaseLoader)
     : m_databaseLoader(databaseLoader)
     , m_sampleRate(sampleRate)
     , m_crossfadeSelection(CrossfadeSelection1)
     , m_azimuthIndex1(UninitializedAzimuth)
-    , m_azimuthIndex2(UninitializedAzimuth)
+    , m_elevation1{0.0}, m_azimuthIndex2(UninitializedAzimuth)
     // m_elevation1 and m_elevation2 are initialized in pan()
-    , m_crossfadeX(0)
+    , m_elevation2{0.0}, m_crossfadeX(0)
     , m_crossfadeIncr(0)
     , m_convolverL1(HRTFElevation::fftSizeForSampleRate(sampleRate))
     , m_convolverR1(m_convolverL1.fftSize())
     , m_convolverL2(m_convolverL1.fftSize())
     , m_convolverR2(m_convolverL1.fftSize())
     , m_delayLine(MaxDelayTimeSeconds * sampleRate, 1.0)
 {
     MOZ_ASSERT(m_databaseLoader);
--- a/dom/media/webaudio/blink/PeriodicWave.cpp
+++ b/dom/media/webaudio/blink/PeriodicWave.cpp
@@ -106,17 +106,17 @@ PeriodicWave::createTriangle(float sampl
         new PeriodicWave(sampleRate, MinPeriodicWaveSize, false);
     periodicWave->generateBasicWaveform(OscillatorType::Triangle);
     return periodicWave.forget();
 }
 
 PeriodicWave::PeriodicWave(float sampleRate, size_t numberOfComponents, bool disableNormalization)
     : m_sampleRate(sampleRate)
     , m_centsPerRange(CentsPerRange)
-    , m_maxPartialsInBandLimitedTable(0)
+    , m_numberOfComponents{}, m_maxPartialsInBandLimitedTable(0)
     , m_normalizationScale(1.0f)
     , m_disableNormalization(disableNormalization)
 {
     float nyquist = 0.5 * m_sampleRate;
 
     if (numberOfComponents <= MinPeriodicWaveSize) {
         m_periodicWaveSize = MinPeriodicWaveSize;
     } else {
--- a/dom/media/webm/EbmlComposer.cpp
+++ b/dom/media/webm/EbmlComposer.cpp
@@ -220,13 +220,13 @@ EbmlComposer::ExtractBuffer(nsTArray<nsT
 EbmlComposer::EbmlComposer()
   : mFlushState(FLUSH_NONE)
   , mClusterHeaderIndex(0)
   , mClusterLengthLoc(0)
   , mCodecDelay(0)
   , mClusterTimecode(0)
   , mWidth(0)
   , mHeight(0)
-  , mSampleFreq(0)
+  , mDisplayWidth{}, mDisplayHeight{}, mSampleFreq(0)
   , mChannels(0)
 {}
 
 } // namespace mozilla
--- a/dom/media/webm/NesteggPacketHolder.h
+++ b/dom/media/webm/NesteggPacketHolder.h
@@ -19,17 +19,17 @@ namespace mozilla {
 class NesteggPacketHolder {
 public:
   NS_INLINE_DECL_THREADSAFE_REFCOUNTING(NesteggPacketHolder)
   NesteggPacketHolder()
     : mPacket(nullptr)
     , mOffset(-1)
     , mTimestamp(-1)
     , mDuration(-1)
-    , mIsKeyframe(false) {}
+    , mTrack{}, mIsKeyframe(false) {}
 
   bool Init(nestegg_packet* aPacket, int64_t aOffset, unsigned aTrack, bool aIsKeyframe)
   {
     uint64_t timestamp_ns;
     if (nestegg_packet_tstamp(aPacket, &timestamp_ns) == -1) {
       return false;
     }
 
--- a/dom/media/webrtc/MediaEngineDefault.cpp
+++ b/dom/media/webrtc/MediaEngineDefault.cpp
@@ -38,17 +38,17 @@ NS_IMPL_ISUPPORTS(MediaEngineDefaultVide
  */
 
 MediaEngineDefaultVideoSource::MediaEngineDefaultVideoSource()
 #ifdef MOZ_WEBRTC
   : MediaEngineCameraVideoSource("FakeVideo.Monitor")
 #else
   : MediaEngineVideoSource()
 #endif
-  , mTimer(nullptr)
+  , mTrackID{}, mTimer(nullptr)
 #ifndef MOZ_WEBRTC
   , mMonitor("Fake video")
 #endif
   , mCb(16), mCr(16)
 {
   mImageContainer =
     layers::LayerManager::CreateImageContainer(layers::ImageContainer::ASYNCHRONOUS);
 }
@@ -326,17 +326,17 @@ MediaEngineDefaultVideoSource::NotifyPul
 /**
  * Default audio source.
  */
 
 NS_IMPL_ISUPPORTS0(MediaEngineDefaultAudioSource)
 
 MediaEngineDefaultAudioSource::MediaEngineDefaultAudioSource()
   : MediaEngineAudioSource(kReleased)
-  , mLastNotify(0)
+  , mTrackID{}, mLastNotify(0)
 {}
 
 MediaEngineDefaultAudioSource::~MediaEngineDefaultAudioSource()
 {}
 
 void
 MediaEngineDefaultAudioSource::GetName(nsAString& aName) const
 {
--- a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
+++ b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
@@ -104,17 +104,17 @@ NS_INTERFACE_MAP_END
 NS_IMPL_CYCLE_COLLECTING_ADDREF(SpeechTaskCallback)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(SpeechTaskCallback)
 
 SpeechTaskCallback::SpeechTaskCallback(nsISpeechTask* aTask,
                                        NSSpeechSynthesizer* aSynth,
                                        const nsTArray<size_t>& aOffsets)
   : mTask(aTask)
   , mSpeechSynthesizer(aSynth)
-  , mOffsets(aOffsets)
+  , mCurrentIndex{}, mOffsets(aOffsets)
 {
   mDelegate = [[SpeechDelegate alloc] initWithCallback:this];
   [mSpeechSynthesizer setDelegate:mDelegate];
   mStartingTime = TimeStamp::Now();
 }
 
 SpeechTaskCallback::~SpeechTaskCallback()
 {
--- a/dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
+++ b/dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp
@@ -157,17 +157,17 @@ SpeechSynthesisRequestChild::RecvOnMark(
   mTask->DispatchMarkImpl(aName, aElapsedTime, aCharIndex);
   return IPC_OK();
 }
 
 // SpeechTaskChild
 
 SpeechTaskChild::SpeechTaskChild(SpeechSynthesisUtterance* aUtterance, bool aIsChrome)
   : nsSpeechTask(aUtterance, aIsChrome)
-{
+, mActor{nullptr} {
 }
 
 NS_IMETHODIMP
 SpeechTaskChild::Setup(nsISpeechTaskCallback* aCallback,
                        uint32_t aChannels, uint32_t aRate, uint8_t argc)
 {
   MOZ_CRASH("Should never be called from child");
 }
--- a/dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h
+++ b/dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h
@@ -75,17 +75,17 @@ protected:
   mozilla::ipc::IPCResult Recv__delete__() override;
 };
 
 class SpeechTaskParent : public nsSpeechTask
 {
   friend class SpeechSynthesisRequestParent;
 public:
   SpeechTaskParent(float aVolume, const nsAString& aUtterance, bool aIsChrome)
-    : nsSpeechTask(aVolume, aUtterance, aIsChrome) {}
+    : nsSpeechTask(aVolume, aUtterance, aIsChrome) , mActor{nullptr} {}
 
   nsresult DispatchStartImpl(const nsAString& aUri);
 
   nsresult DispatchEndImpl(float aElapsedTime, uint32_t aCharIndex);
 
   nsresult DispatchPauseImpl(float aElapsedTime, uint32_t aCharIndex);
 
   nsresult DispatchResumeImpl(float aElapsedTime, uint32_t aCharIndex);
--- a/dom/media/webspeech/synth/nsSpeechTask.cpp
+++ b/dom/media/webspeech/synth/nsSpeechTask.cpp
@@ -147,32 +147,32 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(nsSpeech
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsSpeechTask)
 
 nsSpeechTask::nsSpeechTask(SpeechSynthesisUtterance* aUtterance, bool aIsChrome)
   : mUtterance(aUtterance)
   , mInited(false)
   , mPrePaused(false)
   , mPreCanceled(false)
   , mCallback(nullptr)
-  , mIndirectAudio(false)
+  , mChannels{}, mIndirectAudio(false)
   , mIsChrome(aIsChrome)
 {
   mText = aUtterance->mText;
   mVolume = aUtterance->Volume();
 }
 
 nsSpeechTask::nsSpeechTask(float aVolume, const nsAString& aText, bool aIsChrome)
   : mUtterance(nullptr)
   , mVolume(aVolume)
   , mText(aText)
   , mInited(false)
   , mPrePaused(false)
   , mPreCanceled(false)
   , mCallback(nullptr)
-  , mIndirectAudio(false)
+  , mChannels{}, mIndirectAudio(false)
   , mIsChrome(aIsChrome)
 {
 }
 
 nsSpeechTask::~nsSpeechTask()
 {
   LOG(LogLevel::Debug, ("~nsSpeechTask"));
   if (mStream) {
--- a/dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp
+++ b/dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp
@@ -112,17 +112,17 @@ private:
 public:
   GlobalQueueItem(VoiceData* aVoice, nsSpeechTask* aTask, const nsAString& aText,
                   const float& aVolume, const float& aRate, const float& aPitch)
     : mVoice(aVoice)
     , mTask(aTask)
     , mText(aText)
     , mVolume(aVolume)
     , mRate(aRate)
-    , mPitch(aPitch) {}
+    , mPitch(aPitch) , mIsLocal{false} {}
 
   NS_INLINE_DECL_REFCOUNTING(GlobalQueueItem)
 
   RefPtr<VoiceData> mVoice;
 
   RefPtr<nsSpeechTask> mTask;
 
   nsString mText;
--- a/dom/messagechannel/MessagePort.cpp
+++ b/dom/messagechannel/MessagePort.cpp
@@ -235,17 +235,17 @@ private:
   }
 };
 
 } // namespace
 
 MessagePort::MessagePort(nsIGlobalObject* aGlobal)
   : DOMEventTargetHelper(aGlobal)
   , mInnerID(0)
-  , mMessageQueueEnabled(false)
+  , /* FIXME: initialize mState */ mMessageQueueEnabled(false)
   , mIsKeptAlive(false)
 {
   MOZ_ASSERT(aGlobal);
 
   mIdentifier = new MessagePortIdentifier();
   mIdentifier->neutered() = true;
   mIdentifier->sequenceId() = 0;
 }
--- a/dom/payments/PaymentActionResponse.cpp
+++ b/dom/payments/PaymentActionResponse.cpp
@@ -148,17 +148,17 @@ PaymentActionResponse::GetType(uint32_t*
 
 /* PaymentCanMakeActionResponse */
 
 NS_IMPL_ISUPPORTS_INHERITED(PaymentCanMakeActionResponse,
                             PaymentActionResponse,
                             nsIPaymentCanMakeActionResponse)
 
 PaymentCanMakeActionResponse::PaymentCanMakeActionResponse()
-{
+ : mResult{false} {
   mType = nsIPaymentActionResponse::CANMAKE_ACTION;
 }
 
 NS_IMETHODIMP
 PaymentCanMakeActionResponse::GetResult(bool* aResult)
 {
   NS_ENSURE_ARG_POINTER(aResult);
   *aResult = mResult;
@@ -175,17 +175,17 @@ PaymentCanMakeActionResponse::Init(const
 
 /* PaymentShowActionResponse */
 
 NS_IMPL_ISUPPORTS_INHERITED(PaymentShowActionResponse,
                             PaymentActionResponse,
                             nsIPaymentShowActionResponse)
 
 PaymentShowActionResponse::PaymentShowActionResponse()
-{
+ : mAcceptStatus{} {
   mType = nsIPaymentActionResponse::SHOW_ACTION;
 }
 
 NS_IMETHODIMP
 PaymentShowActionResponse::GetAcceptStatus(uint32_t* aAcceptStatus)
 {
   NS_ENSURE_ARG_POINTER(aAcceptStatus);
   *aAcceptStatus = mAcceptStatus;
@@ -286,17 +286,17 @@ PaymentShowActionResponse::Init(const ns
 
 /* PaymentAbortActionResponse */
 
 NS_IMPL_ISUPPORTS_INHERITED(PaymentAbortActionResponse,
                             PaymentActionResponse,
                             nsIPaymentAbortActionResponse)
 
 PaymentAbortActionResponse::PaymentAbortActionResponse()
-{
+ : mAbortStatus{} {
   mType = nsIPaymentActionResponse::ABORT_ACTION;
 }
 
 NS_IMETHODIMP
 PaymentAbortActionResponse::GetAbortStatus(uint32_t* aAbortStatus)
 {
   NS_ENSURE_ARG_POINTER(aAbortStatus);
   *aAbortStatus = mAbortStatus;
@@ -322,17 +322,17 @@ PaymentAbortActionResponse::IsSucceeded(
 
 /* PaymentCompleteActionResponse */
 
 NS_IMPL_ISUPPORTS_INHERITED(PaymentCompleteActionResponse,
                             PaymentActionResponse,
                             nsIPaymentCompleteActionResponse)
 
 PaymentCompleteActionResponse::PaymentCompleteActionResponse()
-{
+ : mCompleteStatus{} {
   mType = nsIPaymentActionResponse::COMPLETE_ACTION;
 }
 
 nsresult
 PaymentCompleteActionResponse::Init(const nsAString& aRequestId,
                                     const uint32_t aCompleteStatus)
 {
   mRequestId = aRequestId;
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -1653,18 +1653,18 @@ nsPluginHost::ClearSiteData(nsIPluginTag
 
 #define GetSitesClosure_CID {0x4c9268ac, 0x2fd1, 0x4f2a, {0x9a, 0x10, 0x7a, 0x09, 0xf1, 0xb7, 0x60, 0x3a}}
 
 // Closure to contain the data needed to handle the callback from NPP_GetSitesWithData
 class GetSitesClosure : public nsIGetSitesWithDataCallback {
 public:
   NS_DECL_ISUPPORTS
   GetSitesClosure(const nsACString& domain, nsPluginHost* host)
-  : domain(domain), host(host), keepWaiting(true)
-  {
+  : domain(domain), host(host), result{false}, keepWaiting(true)
+   /* FIXME: initialize retVal */   /* FIXME: initialize retVal */  {
   }
   NS_IMETHOD SitesWithData(InfallibleTArray<nsCString>& sites) override {
     retVal = HandleGetSites(sites);
     keepWaiting = false;
     return NS_OK;
   }
 
   nsresult HandleGetSites(InfallibleTArray<nsCString>& sites) {
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp
+++ b/dom/plugins/base/nsPluginInstanceOwner.cpp
@@ -253,17 +253,17 @@ nsPluginInstanceOwner::GetCurrentImageSi
   if (mInstance) {
     mInstance->GetImageSize(&size);
   }
   return size;
 }
 
 nsPluginInstanceOwner::nsPluginInstanceOwner()
   : mPluginWindow(nullptr)
-{
+, mLastEventloopNestingLevel{} {
   // create nsPluginNativeWindow object, it is derived from NPWindow
   // struct and allows to manipulate native window procedure
   nsCOMPtr<nsIPluginHost> pluginHostCOM = do_GetService(MOZ_PLUGIN_HOST_CONTRACTID);
   mPluginHost = static_cast<nsPluginHost*>(pluginHostCOM.get());
   if (mPluginHost)
     mPluginHost->NewPluginNativeWindow(&mPluginWindow);
 
   mPluginFrame = nullptr;
--- a/dom/plugins/base/nsPluginManifestLineReader.h
+++ b/dom/plugins/base/nsPluginManifestLineReader.h
@@ -15,17 +15,17 @@
 #define PLUGIN_REGISTRY_FIELD_DELIMITER ':'
 #endif
 
 #define PLUGIN_REGISTRY_END_OF_LINE_MARKER '$'
 
 class nsPluginManifestLineReader
 {
   public:
-    nsPluginManifestLineReader() {mBase = mCur = mNext = mLimit = 0;}
+    nsPluginManifestLineReader()  : mLength{} {mBase = mCur = mNext = mLimit = 0;}
     ~nsPluginManifestLineReader() { if (mBase) delete[] mBase; mBase=0;}
 
     char* Init(uint32_t flen)
     {
       mBase = mCur = mNext = new char[flen + 1];
       if (mBase) {
         mLimit = mBase + flen;
         *mLimit = 0;
--- a/dom/plugins/base/nsPluginStreamListenerPeer.cpp
+++ b/dom/plugins/base/nsPluginStreamListenerPeer.cpp
@@ -40,17 +40,17 @@ NS_IMPL_ISUPPORTS(nsPluginStreamListener
                   nsIStreamListener,
                   nsIRequestObserver,
                   nsIHttpHeaderVisitor,
                   nsISupportsWeakReference,
                   nsIInterfaceRequestor,
                   nsIChannelEventSink)
 
 nsPluginStreamListenerPeer::nsPluginStreamListenerPeer()
-{
+ : mLength{} {
   mStreamType = NP_NORMAL;
   mStartBinding = false;
   mRequestFailed = false;
 
   mPendingRequests = 0;
   mHaveFiredOnStartRequest = false;
 
   mUseLocalCache = false;
--- a/dom/plugins/base/nsPluginTags.cpp
+++ b/dom/plugins/base/nsPluginTags.cpp
@@ -296,17 +296,17 @@ nsPluginTag::nsPluginTag(uint32_t aId,
                          int64_t aLastModifiedTime,
                          bool aFromExtension,
                          int32_t aSandboxLevel,
                          uint16_t aBlocklistState)
   : nsIInternalPluginTag(aName, aDescription, aFileName, aVersion, aMimeTypes,
                          aMimeDescriptions, aExtensions),
     mId(aId),
     mContentProcessRunningCount(0),
-    mLibrary(nullptr),
+    mHadLocalInstance{false}, mLibrary(nullptr),
     mIsFlashPlugin(aIsFlashPlugin),
     mSupportsAsyncRender(aSupportsAsyncRender),
     mLastModifiedTime(aLastModifiedTime),
     mSandboxLevel(aSandboxLevel),
     mNiceFileName(),
     mCachedBlocklistState(aBlocklistState),
     mCachedBlocklistStateValid(true),
     mIsFromExtension(aFromExtension)
--- a/dom/plugins/base/nsPluginsDirDarwin.cpp
+++ b/dom/plugins/base/nsPluginsDirDarwin.cpp
@@ -263,17 +263,17 @@ static void ParsePlistPluginInfo(nsPlugi
       if (description && ::CFGetTypeID(description) == ::CFStringGetTypeID())
         info.fMimeDescriptionArray[info.fVariantCount] = CFStringRefToUTF8Buffer(static_cast<CFStringRef>(description));
     }
     info.fVariantCount++;
   }
 }
 
 nsPluginFile::nsPluginFile(nsIFile *spec)
-    : mPlugin(spec)
+    : pLibrary{nullptr}, mPlugin(spec)
 {
 }
 
 nsPluginFile::~nsPluginFile() {}
 
 nsresult nsPluginFile::LoadPlugin(PRLibrary **outLibrary)
 {
   if (!mPlugin)
--- a/dom/plugins/ipc/PluginInstanceChild.cpp
+++ b/dom/plugins/ipc/PluginInstanceChild.cpp
@@ -136,17 +136,17 @@ PluginInstanceChild::PluginInstanceChild
                                          const InfallibleTArray<nsCString>& aValues)
     : mPluginIface(aPluginIface)
     , mMimeType(aMimeType)
     , mNames(aNames)
     , mValues(aValues)
 #if defined(XP_DARWIN) || defined (XP_WIN)
     , mContentsScaleFactor(1.0)
 #endif
-    , mPostingKeyEvents(0)
+    , mCSSZoomFactor{0.0}, mPostingKeyEvents(0)
     , mPostingKeyEventsOutdated(0)
     , mDrawingModel(kDefaultDrawingModel)
     , mCurrentDirectSurface(nullptr)
     , mAsyncInvalidateMutex("PluginInstanceChild::mAsyncInvalidateMutex")
     , mAsyncInvalidateTask(0)
     , mCachedWindowActor(nullptr)
     , mCachedElementActor(nullptr)
 #if defined(OS_WIN)
@@ -160,17 +160,17 @@ PluginInstanceChild::PluginInstanceChild
 #endif // OS_WIN
 #if defined(MOZ_WIDGET_COCOA)
 #if defined(__i386__)
     , mEventModel(NPEventModelCarbon)
 #endif
     , mShColorSpace(nullptr)
     , mShContext(nullptr)
     , mCGLayer(nullptr)
-    , mCurrentEvent(nullptr)
+    , mCARefreshTimer{}, mCurrentEvent(nullptr)
 #endif
     , mLayersRendering(false)
 #ifdef XP_WIN
     , mCurrentSurfaceActor(nullptr)
     , mBackSurfaceActor(nullptr)
 #endif
     , mAccumulatedInvalidRect(0,0,0,0)
     , mIsTransparent(false)
--- a/dom/plugins/ipc/PluginModuleParent.cpp
+++ b/dom/plugins/ipc/PluginModuleParent.cpp
@@ -193,17 +193,17 @@ namespace {
  * plugin initialization sequence.
  */
 class PluginModuleMapping : public PRCList
 {
 public:
     explicit PluginModuleMapping(uint32_t aPluginId)
         : mPluginId(aPluginId)
         , mProcessIdValid(false)
-        , mModule(nullptr)
+        , mProcessId{}, mModule(nullptr)
         , mChannelOpened(false)
     {
         MOZ_COUNT_CTOR(PluginModuleMapping);
         PR_INIT_CLIST(this);
         PR_APPEND_LINK(this, &sModuleListHead);
     }
 
     ~PluginModuleMapping()
@@ -576,17 +576,17 @@ PluginModuleParent::PluginModuleParent(b
     , mClearSiteDataSupported(false)
     , mGetSitesWithDataSupported(false)
     , mNPNIface(nullptr)
     , mNPPIface(nullptr)
     , mPlugin(nullptr)
     , mTaskFactory(this)
     , mSandboxLevel(0)
     , mIsFlashPlugin(false)
-    , mCrashReporterMutex("PluginModuleChromeParent::mCrashReporterMutex")
+    , mRunID{}, mCrashReporterMutex("PluginModuleChromeParent::mCrashReporterMutex")
 {
 }
 
 PluginModuleParent::~PluginModuleParent()
 {
     if (!OkToCleanup()) {
         MOZ_CRASH("unsafe destruction");
     }
@@ -595,17 +595,17 @@ PluginModuleParent::~PluginModuleParent(
         NS_WARNING("Plugin host deleted the module without shutting down.");
         NPError err;
         NP_Shutdown(&err);
     }
 }
 
 PluginModuleContentParent::PluginModuleContentParent()
     : PluginModuleParent(false)
-{
+, mPluginId{} {
     Preferences::RegisterCallback(TimeoutChanged, kContentTimeoutPref, this);
 }
 
 PluginModuleContentParent::~PluginModuleContentParent()
 {
     Preferences::UnregisterCallback(TimeoutChanged, kContentTimeoutPref, this);
 }
 
@@ -623,17 +623,17 @@ PluginModuleChromeParent::PluginModuleCh
     , mHangUIEnabled(true)
     , mIsTimerReset(true)
 #endif
 #ifdef MOZ_CRASHREPORTER_INJECTOR
     , mFlashProcess1(0)
     , mFlashProcess2(0)
     , mFinishInitTask(nullptr)
 #endif
-{
+, mIsBlocklisted{false} {
     NS_ASSERTION(mSubprocess, "Out of memory!");
     mSandboxLevel = aSandboxLevel;
     mRunID = GeckoChildProcessHost::GetUniqueID();
 
     mozilla::HangMonitor::RegisterAnnotator(*this);
 }
 
 PluginModuleChromeParent::~PluginModuleChromeParent()
--- a/dom/security/SRICheck.cpp
+++ b/dom/security/SRICheck.cpp
@@ -211,17 +211,17 @@ SRICheck::VerifyIntegrity(const SRIMetad
 //////////////////////////////////////////////////////////////
 //
 //////////////////////////////////////////////////////////////
 SRICheckDataVerifier::SRICheckDataVerifier(const SRIMetadata& aMetadata,
                                            const nsACString& aSourceFileURI,
                                            nsIConsoleReportCollector* aReporter)
   : mCryptoHash(nullptr),
     mBytesHashed(0),
-    mInvalidMetadata(false),
+    mHashLength{}, mHashType{'\0'}, mInvalidMetadata(false),
     mComplete(false)
 {
   MOZ_ASSERT(!aMetadata.IsEmpty()); // should be checked by caller
 
   // IntegrityMetadata() checks this and returns "no metadata" if
   // it's disabled so we should never make it this far
   MOZ_ASSERT(Preferences::GetBool("security.sri.enable", false));
   MOZ_ASSERT(aReporter);
--- a/dom/smil/nsSMILKeySpline.h
+++ b/dom/smil/nsSMILKeySpline.h
@@ -11,27 +11,27 @@
 #include "mozilla/PodOperations.h"
 
 /**
  * Utility class to provide scaling defined in a keySplines element.
  */
 class nsSMILKeySpline
 {
 public:
-  nsSMILKeySpline() { /* caller must call Init later */ }
+  nsSMILKeySpline()  : mX1{0.0}, mY1{0.0}, mX2{0.0}, mY2{0.0} { /* caller must call Init later */ }
 
   /**
    * Creates a new key spline control point description.
    *
    * aX1, etc. are the x1, y1, x2, y2 cubic Bezier control points as defined by
    * SMILANIM 3.2.3. They must each be in the range 0.0 <= x <= 1.0
    */
   nsSMILKeySpline(double aX1, double aY1,
                   double aX2, double aY2)
-  {
+   : mX1{0.0}, mY1{0.0}, mX2{0.0}, mY2{0.0} {
     Init(aX1, aY1, aX2, aY2);
   }
 
   double X1() const { return mX1; }
   double Y1() const { return mY1; }
   double X2() const { return mX2; }
   double Y2() const { return mY2; }
 
--- a/dom/smil/nsSMILValue.cpp
+++ b/dom/smil/nsSMILValue.cpp
@@ -9,16 +9,17 @@
 #include <string.h>
 
 //----------------------------------------------------------------------
 // Public methods
 
 nsSMILValue::nsSMILValue(const nsISMILType* aType)
   : mType(nsSMILNullType::Singleton())
 {
+this->mU.mBool = {false};
   if (!aType) {
     NS_ERROR("Trying to construct nsSMILValue with null mType pointer");
     return;
   }
 
   InitAndCheckPostcondition(aType);
 }
 
--- a/dom/storage/StorageIPC.cpp
+++ b/dom/storage/StorageIPC.cpp
@@ -912,17 +912,17 @@ public:
                const nsAString& aValue = EmptyString())
     : Runnable("dom::LoadRunnable")
     , mParent(aParent)
     , mType(aType)
     , mSuffix(aOriginSuffix)
     , mOrigin(aOriginNoSuffix)
     , mKey(aKey)
     , mValue(aValue)
-  { }
+   /* FIXME: initialize mRv */  { }
 
   LoadRunnable(StorageDBParent* aParent,
                TaskType aType,
                const nsACString& aOriginSuffix,
                const nsACString& aOriginNoSuffix,
                nsresult aRv)
     : Runnable("dom::LoadRunnable")
     , mParent(aParent)
--- a/dom/svg/DOMSVGPathSegList.h
+++ b/dom/svg/DOMSVGPathSegList.h
@@ -225,17 +225,17 @@ private:
    * store the indexes into the internal SVGPathData of the internal seg data
    * that our DOMSVGPathSeg items wrap (the internal segment data is or varying
    * length, so we can't just use the index of our DOMSVGPathSeg items
    * themselves). The reason that we have this separate struct rather than
    * just storing the internal indexes in the DOMSVGPathSeg items is because we
    * want to create the DOMSVGPathSeg items lazily on demand.
    */
   struct ItemProxy {
-    ItemProxy(){}
+    ItemProxy() : mItem{nullptr}, mInternalDataIndex{} {}
     ItemProxy(DOMSVGPathSeg *aItem, uint32_t aInternalDataIndex)
       : mItem(aItem)
       , mInternalDataIndex(aInternalDataIndex)
     {}
 
     DOMSVGPathSeg *mItem;
     uint32_t mInternalDataIndex;
   };
--- a/dom/svg/SVGAnimatedNumberList.h
+++ b/dom/svg/SVGAnimatedNumberList.h
@@ -38,17 +38,17 @@ class SVGAnimationElement;
  */
 class SVGAnimatedNumberList
 {
   // friends so that they can get write access to mBaseVal
   friend class DOMSVGNumber;
   friend class DOMSVGNumberList;
 
 public:
-  SVGAnimatedNumberList() {}
+  SVGAnimatedNumberList()  : mIsBaseSet{false} {}
 
   /**
    * Because it's so important that mBaseVal and its DOMSVGNumberList wrapper
    * (if any) be kept in sync (see the comment in
    * DOMSVGAnimatedNumberList::InternalBaseValListWillChangeTo), this method
    * returns a const reference. Only our friend classes may get mutable
    * references to mBaseVal.
    */
--- a/dom/svg/SVGGeometryElement.h
+++ b/dom/svg/SVGGeometryElement.h
@@ -106,17 +106,17 @@ public:
 
   /**
    * For use with GetAsSimplePath.
    */
   class SimplePath
   {
   public:
     SimplePath()
-      : mType(NONE)
+      : mX{0.0}, mY{0.0}, mWidthOrX2{0.0}, mHeightOrY2{0.0}, mType(NONE)
     {}
     bool IsPath() const {
       return mType != NONE;
     }
     void SetRect(Float x, Float y, Float width, Float height) {
       mX = x;
       mY = y;
       mWidthOrX2 = width;
--- a/dom/svg/SVGLength.h
+++ b/dom/svg/SVGLength.h
@@ -32,17 +32,17 @@ class SVGLength
 {
 public:
 
   SVGLength()
 #ifdef DEBUG
     : mValue(0.0f)
     , mUnit(nsIDOMSVGLength::SVG_LENGTHTYPE_UNKNOWN) // caught by IsValid()
 #endif
-  {}
+   : mValue{0.0}, mUnit{'\0'} {}
 
   SVGLength(float aValue, uint8_t aUnit)
     : mValue(aValue)
     , mUnit(aUnit)
   {
     NS_ASSERTION(IsValid(), "Constructed an invalid length");
   }
 
--- a/dom/svg/SVGLengthList.h
+++ b/dom/svg/SVGLengthList.h
@@ -305,17 +305,17 @@ private:
  * numeric_limits<float>::quiet_NaN().
  */
 class MOZ_STACK_CLASS SVGUserUnitList
 {
 public:
 
   SVGUserUnitList()
     : mList(nullptr)
-  {}
+  , mElement{nullptr}, mAxis{'\0'} {}
 
   void Init(const SVGLengthList *aList, nsSVGElement *aElement, uint8_t aAxis) {
     mList = aList;
     mElement = aElement;
     mAxis = aAxis;
   }
 
   void Clear() {
--- a/dom/svg/SVGMotionSMILType.cpp
+++ b/dom/svg/SVGMotionSMILType.cpp
@@ -59,18 +59,18 @@ struct PathPointParams {  // Point along
  * from a path (e.g. when accumulating a repeated animation) will generally
  * take you to an arbitrary point *off* of the path.
  */
 struct MotionSegment
 {
   // Default constructor just locks us into being a Translation, and leaves
   // other fields uninitialized (since client is presumably about to set them)
   MotionSegment()
-    : mSegmentType(eSegmentType_Translation)
-  { }
+    : /* FIXME: initialize mRotateType */ mRotateAngle{0.0}, mSegmentType(eSegmentType_Translation)
+  , mU{} { }
 
   // Constructor for a translation
   MotionSegment(float aX, float aY, float aRotateAngle)
     : mRotateType(eRotateType_Explicit), mRotateAngle(aRotateAngle),
       mSegmentType(eSegmentType_Translation)
   {
     mU.mTranslationParams.mX = aX;
     mU.mTranslationParams.mY = aY;
--- a/dom/svg/nsSVGViewBox.h
+++ b/dom/svg/nsSVGViewBox.h
@@ -27,17 +27,17 @@ class SVGAnimationElement;
 } // namespace mozilla
 
 struct nsSVGViewBoxRect
 {
   float x, y;
   float width, height;
   bool none;
 
-  nsSVGViewBoxRect() : none(true) {}
+  nsSVGViewBoxRect() : x{0.0}, y{0.0}, width{0.0}, height{0.0}, none(true) {}
   nsSVGViewBoxRect(float aX, float aY, float aWidth, float aHeight) :
     x(aX), y(aY), width(aWidth), height(aHeight), none(false) {}
   nsSVGViewBoxRect(const nsSVGViewBoxRect& rhs) :
     x(rhs.x), y(rhs.y), width(rhs.width), height(rhs.height), none(rhs.none) {}
   bool operator==(const nsSVGViewBoxRect& aOther) const;
 
   static nsresult FromString(const nsAString& aStr, nsSVGViewBoxRect *aViewBox);
 };
--- a/dom/vr/VRDisplay.cpp
+++ b/dom/vr/VRDisplay.cpp
@@ -265,16 +265,19 @@ VRPose::VRPose(nsISupports* aParent, con
 {
   mFrameId = aState.inputFrameID;
   mozilla::HoldJSObjects(this);
 }
 
 VRPose::VRPose(nsISupports* aParent)
   : Pose(aParent)
 {
+this->mVRState.inputFrameID = {};
+this->mVRState.timestamp = {0.0};
+/* FIXME: initialize this->mVRState.flags */
   mFrameId = 0;
   mozilla::HoldJSObjects(this);
 }
 
 VRPose::~VRPose()
 {
   mozilla::DropJSObjects(this);
 }
@@ -920,16 +923,19 @@ VRFrameInfo::Update(const gfx::VRDisplay
   mRightProjection = rightFOV.ConstructProjectionMatrix(aDepthNear, aDepthFar, true);
   memcpy(mLeftView.components, aState.leftViewMatrix, sizeof(aState.leftViewMatrix));
   memcpy(mRightView.components, aState.rightViewMatrix, sizeof(aState.rightViewMatrix));
 }
 
 VRFrameInfo::VRFrameInfo()
  : mTimeStampOffset(0.0f)
 {
+this->mVRState.inputFrameID = {};
+this->mVRState.timestamp = {0.0};
+/* FIXME: initialize this->mVRState.flags */
 }
 
 bool
 VRFrameInfo::IsDirty()
 {
   return mVRState.timestamp == 0;
 }
 
--- a/dom/websocket/WebSocket.cpp
+++ b/dom/websocket/WebSocket.cpp
@@ -92,17 +92,17 @@ public:
   : mWebSocket(aWebSocket)
   , mIsServerSide(false)
   , mSecure(false)
   , mOnCloseScheduled(false)
   , mFailed(false)
   , mDisconnectingOrDisconnected(false)
   , mCloseEventWasClean(false)
   , mCloseEventCode(nsIWebSocketChannel::CLOSE_ABNORMAL)
-  , mScriptLine(0)
+  , mPort{}, mScriptLine(0)
   , mScriptColumn(0)
   , mInnerWindowID(0)
   , mWorkerPrivate(nullptr)
 #ifdef DEBUG
   , mHasWorkerHolderRegistered(false)
 #endif
   , mIsMainThread(true)
   , mMutex("WebSocketImpl::mMutex")
--- a/dom/workers/ServiceWorker.cpp
+++ b/dom/workers/ServiceWorker.cpp
@@ -36,17 +36,17 @@ ServiceWorkerVisible(JSContext* aCx, JSO
   }
 
   return IS_INSTANCE_OF(ServiceWorkerGlobalScope, aObj);
 }
 
 ServiceWorker::ServiceWorker(nsPIDOMWindowInner* aWindow,
                              ServiceWorkerInfo* aInfo)
   : DOMEventTargetHelper(aWindow),
-    mInfo(aInfo)
+    /* FIXME: initialize mState */ mInfo(aInfo)
 {
   AssertIsOnMainThread();
   MOZ_ASSERT(aInfo);
 
   // This will update our state too.
   mInfo->AppendWorker(this);
 }
 
--- a/dom/workers/WorkerScope.cpp
+++ b/dom/workers/WorkerScope.cpp
@@ -672,17 +672,17 @@ class ReportFetchListenerWarningRunnable
   nsCString mSourceSpec;
   uint32_t mLine;
   uint32_t mColumn;
 
 public:
   explicit ReportFetchListenerWarningRunnable(const nsString& aScope)
     : mozilla::Runnable("ReportFetchListenerWarningRunnable")
     , mScope(NS_ConvertUTF16toUTF8(aScope))
-  {
+  , mLine{}, mColumn{} {
     WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
     MOZ_ASSERT(workerPrivate);
     JSContext* cx = workerPrivate->GetJSContext();
     MOZ_ASSERT(cx);
 
     nsJSUtils::GetCallingLocation(cx, mSourceSpec, &mLine, &mColumn);
   }
 
--- a/dom/xbl/nsXBLBinding.cpp
+++ b/dom/xbl/nsXBLBinding.cpp
@@ -105,30 +105,30 @@ static const JSClass gPrototypeJSClass =
 // Implementation /////////////////////////////////////////////////////////////////
 
 // Constructors/Destructors
 nsXBLBinding::nsXBLBinding(nsXBLPrototypeBinding* aBinding)
   : mMarkedForDeath(false)
   , mUsingContentXBLScope(false)
   , mIsShadowRootBinding(false)
   , mPrototypeBinding(aBinding)
-{
+, mBoundElement{nullptr} {
   NS_ASSERTION(mPrototypeBinding, "Must have a prototype binding!");
   // Grab a ref to the document info so the prototype binding won't die
   NS_ADDREF(mPrototypeBinding->XBLDocumentInfo());
 }
 
 // Constructor used by web components.
 nsXBLBinding::nsXBLBinding(ShadowRoot* aShadowRoot, nsXBLPrototypeBinding* aBinding)
   : mMarkedForDeath(false),
     mUsingContentXBLScope(false),
     mIsShadowRootBinding(true),
     mPrototypeBinding(aBinding),
     mContent(aShadowRoot)
-{
+, mBoundElement{nullptr} {
   NS_ASSERTION(mPrototypeBinding, "Must have a prototype binding!");
   // Grab a ref to the document info so the prototype binding won't die
   NS_ADDREF(mPrototypeBinding->XBLDocumentInfo());
 }
 
 nsXBLBinding::~nsXBLBinding(void)
 {
   if (mContent && !mIsShadowRootBinding) {
--- a/dom/xbl/nsXBLProtoImplField.cpp
+++ b/dom/xbl/nsXBLProtoImplField.cpp
@@ -43,17 +43,17 @@ nsXBLProtoImplField::nsXBLProtoImplField
     if (readOnly.LowerCaseEqualsLiteral("true"))
       mJSAttributes |= JSPROP_READONLY;
   }
 }
 
 
 nsXBLProtoImplField::nsXBLProtoImplField(const bool aIsReadOnly)
   : mNext(nullptr),
-    mFieldText(nullptr),
+    mName{nullptr}, mFieldText(nullptr),
     mFieldTextLength(0),
     mLineNumber(0)
 {
   MOZ_COUNT_CTOR(nsXBLProtoImplField);
 
   mJSAttributes = JSPROP_ENUMERATE;
   if (aIsReadOnly)
     mJSAttributes |= JSPROP_READONLY;
--- a/dom/xbl/nsXBLPrototypeBinding.cpp
+++ b/dom/xbl/nsXBLPrototypeBinding.cpp
@@ -100,17 +100,17 @@ nsXBLPrototypeBinding::nsXBLPrototypeBin
 : mImplementation(nullptr),
   mBaseBinding(nullptr),
   mInheritStyle(true),
   mCheckedBaseProto(false),
   mKeyHandlersRegistered(false),
   mChromeOnlyContent(false),
   mBindToUntrustedContent(false),
   mResources(nullptr),
-  mBaseNameSpaceID(kNameSpaceID_None)
+  mXBLDocInfoWeak{nullptr}, mBaseNameSpaceID(kNameSpaceID_None)
 {
   MOZ_COUNT_CTOR(nsXBLPrototypeBinding);
 }
 
 nsresult
 nsXBLPrototypeBinding::Init(const nsACString& aID,
                             nsXBLDocumentInfo* aInfo,
                             nsIContent* aElement,
--- a/dom/xbl/nsXBLPrototypeHandler.cpp
+++ b/dom/xbl/nsXBLPrototypeHandler.cpp
@@ -115,18 +115,18 @@ nsXBLPrototypeHandler::nsXBLPrototypeHan
 
   // Make sure our prototype is initialized.
   ConstructPrototype(aHandlerElement);
 }
 
 nsXBLPrototypeHandler::nsXBLPrototypeHandler(nsXBLPrototypeBinding* aBinding)
   : mHandlerText(nullptr),
     mLineNumber(0),
-    mReserved(XBLReservedKey_False),
-    mNextHandler(nullptr),
+    mPhase{'\0'}, mType{'\0'}, mMisc{'\0'}, mReserved(XBLReservedKey_False),
+    mKeyMask{}, mDetail{}, mNextHandler(nullptr),
     mPrototypeBinding(aBinding)
 {
   Init();
 }
 
 nsXBLPrototypeHandler::~nsXBLPrototypeHandler()
 {
   --gRefCnt;
--- a/dom/xbl/nsXBLResourceLoader.cpp
+++ b/dom/xbl/nsXBLResourceLoader.cpp
@@ -68,17 +68,17 @@ nsXBLResourceLoader::nsXBLResourceLoader
                                          nsXBLPrototypeResources* aResources)
 :mBinding(aBinding),
  mResources(aResources),
  mResourceList(nullptr),
  mLastResource(nullptr),
  mLoadingResources(false),
  mInLoadResourcesFunc(false),
  mPendingSheets(0)
-{
+, mBoundDocument{nullptr} {
 }
 
 nsXBLResourceLoader::~nsXBLResourceLoader()
 {
   delete mResourceList;
 }
 
 bool
--- a/dom/xhr/XMLHttpRequestMainThread.cpp
+++ b/dom/xhr/XMLHttpRequestMainThread.cpp
@@ -208,17 +208,17 @@ XMLHttpRequestMainThread::XMLHttpRequest
     mProgressSinceLastProgressEvent(false),
     mRequestSentTime(0), mTimeoutMilliseconds(0),
     mErrorLoad(ErrorType::eOK), mErrorParsingXML(false),
     mWaitingForOnStopRequest(false),
     mProgressTimerIsActive(false),
     mIsHtml(false),
     mWarnAboutSyncHtml(false),
     mLoadTotal(-1),
-    mIsSystem(false),
+    mLoadTransferred{}, mIsSystem(false),
     mIsAnon(false),
     mFirstStartRequestSeen(false),
     mInLoadProgressEvent(false),
     mResultJSON(JS::UndefinedValue()),
     mResultArrayBuffer(nullptr),
     mIsMappedArrayBuffer(false),
     mXPCOMifier(nullptr),
     mEventDispatchingSuspended(false)
--- a/dom/xml/nsXMLContentSink.cpp
+++ b/dom/xml/nsXMLContentSink.cpp
@@ -90,17 +90,17 @@ NS_NewXMLContentSink(nsIXMLContentSink**
   nsresult rv = it->Init(aDoc, aURI, aContainer, aChannel);
   NS_ENSURE_SUCCESS(rv, rv);
 
   it.forget(aResult);
   return NS_OK;
 }
 
 nsXMLContentSink::nsXMLContentSink()
-  : mTextLength(0)
+  : /* FIXME: initialize mState */ mTextLength(0)
   , mNotifyLevel(0)
   , mPrettyPrintXML(true)
   , mPrettyPrintHasSpecialRoot(0)
   , mPrettyPrintHasFactoredElements(0)
   , mPrettyPrinting(0)
   , mPreventScriptExecution(0)
 {
   PodArrayZero(mText);
--- a/dom/xslt/xpath/txExprLexer.cpp
+++ b/dom/xslt/xpath/txExprLexer.cpp
@@ -12,17 +12,17 @@
 #include "nsString.h"
 #include "nsError.h"
 #include "txXMLUtils.h"
 
 /**
  * Creates a new ExprLexer
  */
 txExprLexer::txExprLexer()
-  : mCurrentItem(nullptr),
+  : mPosition{nullptr}, mCurrentItem(nullptr),
     mFirstItem(nullptr),
     mLastItem(nullptr),
     mTokenCount(0)
 {
 }
 
 /**
  * Destroys this instance of an txExprLexer
--- a/dom/xslt/xslt/txExecutionState.cpp
+++ b/dom/xslt/xslt/txExecutionState.cpp
@@ -44,17 +44,17 @@ txLoadedDocumentsHash::~txLoadedDocument
        }
     }
 }
 
 txExecutionState::txExecutionState(txStylesheet* aStylesheet,
                                    bool aDisableLoads)
     : mOutputHandler(nullptr),
       mResultHandler(nullptr),
-      mStylesheet(aStylesheet),
+      mOutputHandlerFactory{nullptr}, mStylesheet(aStylesheet),
       mNextInstruction(nullptr),
       mLocalVariables(nullptr),
       mRecursionDepth(0),
       mEvalContext(nullptr),
       mInitialEvalContext(nullptr),
       mGlobalParams(nullptr),
       mKeyHash(aStylesheet->getKeyMap()),
       mDisableLoads(aDisableLoads)
--- a/dom/xslt/xslt/txStylesheetCompiler.cpp
+++ b/dom/xslt/xslt/txStylesheetCompiler.cpp
@@ -518,20 +518,20 @@ txStylesheetCompiler::maybeDoneCompiling
 txStylesheetCompilerState::txStylesheetCompilerState(txACompileObserver* aObserver)
     : mHandlerTable(nullptr),
       mSorter(nullptr),
       mDOE(false),
       mSearchingForFallback(false),
       mDisAllowed(0),
       mObserver(aObserver),
       mEmbedStatus(eNoEmbed),
-      mDoneWithThisStylesheet(false),
+      mIsTopCompiler{false}, mDoneWithThisStylesheet(false),
       mNextInstrPtr(nullptr),
       mToplevelIterator(nullptr)
-{
+ /* FIXME: initialize mReferrerPolicy */  {
     // Embedded stylesheets have another handler, which is set in
     // txStylesheetCompiler::init if the baseURI has a fragment identifier.
     mHandlerTable = gTxRootHandler;
 
 }
 
 nsresult
 txStylesheetCompilerState::init(const nsAString& aStylesheetURI,
--- a/dom/xul/nsXULContentSink.h
+++ b/dom/xul/nsXULContentSink.h
@@ -107,17 +107,17 @@ protected:
     class ContextStack {
     protected:
         struct Entry {
             RefPtr<nsXULPrototypeNode> mNode;
             // a LOT of nodes have children; preallocate for 8
             nsPrototypeArray    mChildren;
             State               mState;
             Entry*              mNext;
-            Entry() : mChildren(8) {}
+            Entry() : mChildren(8)  /* FIXME: initialize mState */ , mNext{nullptr} {}
         };
 
         Entry* mTop;
         int32_t mDepth;
 
     public:
         ContextStack();
         ~ContextStack();
--- a/dom/xul/templates/nsRuleNetwork.h
+++ b/dom/xul/templates/nsRuleNetwork.h
@@ -78,17 +78,17 @@ public:
 class MemoryElementSet {
 public:
     class ConstIterator;
     friend class ConstIterator;
 
 protected:
     class List {
     public:
-        List() { MOZ_COUNT_CTOR(MemoryElementSet::List); }
+        List()  : mElement{nullptr}, mRefCnt{}, mNext{nullptr} { MOZ_COUNT_CTOR(MemoryElementSet::List); }
 
     protected:
         ~List() {
             MOZ_COUNT_DTOR(MemoryElementSet::List);
             delete mElement;
             NS_IF_RELEASE(mNext); }
 
     public:
@@ -223,17 +223,17 @@ public:
 class nsAssignmentSet {
 public:
     class ConstIterator;
     friend class ConstIterator;
 
 protected:
     class List {
     public:
-        explicit List(const nsAssignment& aAssignment) : mAssignment(aAssignment) {
+        explicit List(const nsAssignment& aAssignment) : mAssignment(aAssignment) , mRefCnt{}, mNext{nullptr} {
             MOZ_COUNT_CTOR(nsAssignmentSet::List); }
 
     protected:
         ~List() {
             MOZ_COUNT_DTOR(nsAssignmentSet::List);
             NS_IF_RELEASE(mNext); }
 
     public:
@@ -494,17 +494,17 @@ public:
 
 protected:
     class List {
     public:
         Instantiation mInstantiation;
         List*         mNext;
         List*         mPrev;
 
-        List() { MOZ_COUNT_CTOR(InstantiationSet::List); }
+        List()  : mNext{nullptr}, mPrev{nullptr} { MOZ_COUNT_CTOR(InstantiationSet::List); }
         ~List() { MOZ_COUNT_DTOR(InstantiationSet::List); }
     };
 
     List mHead;
 
 public:
     class ConstIterator {
     protected:
--- a/editor/libeditor/SelectionState.cpp
+++ b/editor/libeditor/SelectionState.cpp
@@ -638,17 +638,17 @@ RangeUpdater::DidMoveNode(nsINode* aOldP
 
 /******************************************************************************
  * mozilla::RangeItem
  *
  * Helper struct for SelectionState.  This stores range endpoints.
  ******************************************************************************/
 
 RangeItem::RangeItem()
-{
+ : mStartOffset{}, mEndOffset{} {
 }
 
 RangeItem::~RangeItem()
 {
 }
 
 NS_IMPL_CYCLE_COLLECTION(RangeItem, mStartContainer, mEndContainer)
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(RangeItem, AddRef)
--- a/editor/txtsvc/nsFilteredContentIterator.h
+++ b/editor/txtsvc/nsFilteredContentIterator.h
@@ -44,17 +44,17 @@ public:
   virtual bool IsDone() override;
   virtual nsresult PositionAt(nsINode* aCurNode) override;
 
   /* Helpers */
   bool DidSkip()      { return mDidSkip; }
   void         ClearDidSkip() {  mDidSkip = false; }
 
 protected:
-  nsFilteredContentIterator() : mDidSkip(false), mIsOutOfRange(false) { }
+  nsFilteredContentIterator() : mDidSkip(false), mIsOutOfRange(false)  /* FIXME: initialize mDirection */  { }
 
   virtual ~nsFilteredContentIterator();
 
   /**
    * Callers must guarantee that mRange isn't nullptr and it's positioned.
    */
   nsresult InitWithRange();
 
--- a/extensions/auth/nsAuthSambaNTLM.cpp
+++ b/extensions/auth/nsAuthSambaNTLM.cpp
@@ -8,17 +8,17 @@
 #include "prenv.h"
 #include "plbase64.h"
 #include "prerror.h"
 #include "mozilla/Telemetry.h"
 
 #include <stdlib.h>
 
 nsAuthSambaNTLM::nsAuthSambaNTLM()
-    : mInitialMessage(nullptr), mChildPID(nullptr), mFromChildFD(nullptr),
+    : mInitialMessage(nullptr), mInitialMessageLen{}, mChildPID(nullptr), mFromChildFD(nullptr),
       mToChildFD(nullptr)
 {
 }
 
 nsAuthSambaNTLM::~nsAuthSambaNTLM()
 {
     // ntlm_auth reads from stdin regularly so closing our file handles
     // should cause it to exit.
--- a/extensions/auth/nsHttpNegotiateAuth.cpp
+++ b/extensions/auth/nsHttpNegotiateAuth.cpp
@@ -249,17 +249,17 @@ class GetNextTokenCompleteEvent final : 
     };
 
 public:
     NS_DECL_THREADSAFE_ISUPPORTS
 
     explicit GetNextTokenCompleteEvent(nsIHttpAuthenticatorCallback* aCallback)
         : mCallback(aCallback)
         , mCreds(nullptr)
-        , mCancelled(false)
+        , mFlags{}, /* FIXME: initialize mResult */ /* FIXME: initialize mResult */ mCancelled(false)
     {
     }
 
     NS_IMETHODIMP DispatchSuccess(char *aCreds,
                                   uint32_t aFlags,
                                   already_AddRefed<nsISupports> aSessionState,
                                   already_AddRefed<nsISupports> aContinuationState)
     {
--- a/extensions/pref/autoconfig/src/nsAutoConfig.cpp
+++ b/extensions/pref/autoconfig/src/nsAutoConfig.cpp
@@ -37,17 +37,17 @@ extern nsresult EvaluateAdminConfigScrip
 
 // nsISupports Implementation
 
 NS_IMPL_ISUPPORTS(nsAutoConfig, nsIAutoConfig, nsITimerCallback, nsIStreamListener,
                   nsIObserver, nsIRequestObserver, nsISupportsWeakReference,
                   nsINamed)
 
 nsAutoConfig::nsAutoConfig()
-{
+ : mLoaded{false} {
 }
 
 nsresult nsAutoConfig::Init()
 {
     // member initializers and constructor code
 
     nsresult rv;
     mLoaded = false;
--- a/extensions/spellcheck/src/mozInlineSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellChecker.cpp
@@ -97,17 +97,17 @@ static bool ContentIsDescendantOf(nsINod
 
 static const char kMaxSpellCheckSelectionSize[] =
   "extensions.spellcheck.inline.max-misspellings";
 static const PRTime kMaxSpellCheckTimeInUsec =
   INLINESPELL_CHECK_TIMEOUT * PR_USEC_PER_MSEC;
 
 mozInlineSpellStatus::mozInlineSpellStatus(mozInlineSpellChecker* aSpellChecker)
     : mSpellChecker(aSpellChecker), mWordCount(0)
-{
+ /* FIXME: initialize mOp */ , mForceNavigationWordCheck{false}, mNewNavigationPositionOffset{} {
 }
 
 // mozInlineSpellStatus::InitForEditorChange
 //
 //    This is the most complicated case. For changes, we need to compute the
 //    range of stuff that changed based on the old and new caret positions,
 //    as well as use a range possibly provided by the editor (start and end,
 //    which are usually nullptr) to get a range with the union of these.
@@ -553,17 +553,17 @@ NS_IMPL_CYCLE_COLLECTION(mozInlineSpellC
 
 mozInlineSpellChecker::SpellCheckingState
   mozInlineSpellChecker::gCanEnableSpellChecking =
   mozInlineSpellChecker::SpellCheck_Uninitialized;
 
 mozInlineSpellChecker::mozInlineSpellChecker() :
     mNumWordsInSpellSelection(0),
     mMaxNumWordsInSpellSelection(250),
-    mNumPendingSpellChecks(0),
+    mCurrentSelectionOffset{}, mNumPendingSpellChecks(0),
     mNumPendingUpdateCurrentDictionary(0),
     mDisabledAsyncToken(0),
     mNeedsCheckAfterNavigation(false),
     mFullSpellCheckScheduled(false)
 {
   nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
   if (prefs)
     prefs->GetIntPref(kMaxSpellCheckSelectionSize, &mMaxNumWordsInSpellSelection);
--- a/extensions/spellcheck/src/mozSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozSpellChecker.cpp
@@ -30,17 +30,17 @@ NS_INTERFACE_MAP_BEGIN(mozSpellChecker)
   NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(mozSpellChecker)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTION(mozSpellChecker,
                          mTsDoc,
                          mPersonalDictionary)
 
 mozSpellChecker::mozSpellChecker()
-  : mEngine(nullptr)
+  : mFromStart{false}, mEngine(nullptr)
 {
 }
 
 mozSpellChecker::~mozSpellChecker()
 {
   if (mPersonalDictionary) {
     //    mPersonalDictionary->Save();
     mPersonalDictionary->EndSession();
--- a/extensions/universalchardet/src/base/CharDistribution.h
+++ b/extensions/universalchardet/src/base/CharDistribution.h
@@ -8,17 +8,17 @@
 
 #include "nscore.h"
 
 #define ENOUGH_DATA_THRESHOLD 1024
 
 class CharDistributionAnalysis
 {
 public:
-  CharDistributionAnalysis() {Reset();}
+  CharDistributionAnalysis()  : mCharToFreqOrder{nullptr}, mTableSize{}, mTypicalDistributionRatio{0.0} {Reset();}
 
   //feed a block of data and do distribution analysis
   void HandleData(const char* aBuf, uint32_t aLen) {}
 
   //Feed a character with known length
   void HandleOneChar(const char* aStr, uint32_t aCharLen)
   {
     int32_t order;
--- a/extensions/universalchardet/src/base/nsCodingStateMachine.h
+++ b/extensions/universalchardet/src/base/nsCodingStateMachine.h
@@ -28,17 +28,17 @@ typedef struct
 #ifdef DEBUG
   const size_t charLenTableLength;
 #endif
   const char* name;
 } SMModel;
 
 class nsCodingStateMachine {
 public:
-  explicit nsCodingStateMachine(const SMModel* sm) : mModel(sm) { mCurrentState = eStart; }
+  explicit nsCodingStateMachine(const SMModel* sm) : mCurrentCharLen{}, mCurrentBytePos{}, mModel(sm) { mCurrentState = eStart; }
   uint32_t NextState(char c){
     //for each byte we get its class , if it is first byte, we also get byte length
     uint32_t byteCls = GETCLASS(c);
     if (mCurrentState == eStart)
     {
       mCurrentBytePos = 0;
       MOZ_ASSERT(byteCls < mModel->charLenTableLength);
       mCurrentCharLen = mModel->charLenTable[byteCls];
--- a/extensions/universalchardet/src/base/nsUniversalDetector.cpp
+++ b/extensions/universalchardet/src/base/nsUniversalDetector.cpp
@@ -7,17 +7,17 @@
 
 #include "nsUniversalDetector.h"
 
 #include "nsMBCSGroupProber.h"
 #include "nsEscCharsetProber.h"
 #include "nsLatin1Prober.h"
 
 nsUniversalDetector::nsUniversalDetector()
-{
+ : mLanguageFilter{} {
   mDone = false;
   mBestGuess = -1;   //illegal value as signal
   mInTag = false;
   mEscCharSetProber = nullptr;
 
   mStart = true;
   mDetectedCharset = nullptr;
   mGotData = false;
--- a/extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp
+++ b/extensions/universalchardet/src/xpcom/nsUdetXPCOMWrapper.cpp
@@ -89,17 +89,17 @@ void nsXPCOMDetector::Report(const char*
 #endif
   mObserver->Notify(aCharset, eBestAnswer);
 }
 
 
 //---------------------------------------------------------------------
 nsXPCOMStringDetector:: nsXPCOMStringDetector()
   : nsUniversalDetector()
-{
+, mResult{nullptr} {
 }
 //---------------------------------------------------------------------
 nsXPCOMStringDetector::~nsXPCOMStringDetector()
 {
 }
 //---------------------------------------------------------------------
 NS_IMPL_ISUPPORTS(nsXPCOMStringDetector, nsIStringCharsetDetector)
 //---------------------------------------------------------------------
--- a/gfx/2d/2D.h
+++ b/gfx/2d/2D.h
@@ -887,17 +887,17 @@ class DrawTargetCapture;
  * factory and accepts drawing commands. The results of drawing to a target
  * may be used either through a Snapshot or by flushing the target and directly
  * accessing the backing store a DrawTarget was created with.
  */
 class DrawTarget : public external::AtomicRefCounted<DrawTarget>
 {
 public:
   MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(DrawTarget)
-  DrawTarget() : mTransformDirty(false), mPermitSubpixelAA(false) {}
+  DrawTarget() : mTransformDirty(false), mPermitSubpixelAA(false)  /* FIXME: initialize mFormat */   /* FIXME: initialize mFormat */  {}
   virtual ~DrawTarget() {}
 
   virtual bool IsValid() const { return true; };
   virtual DrawTargetType GetType() const = 0;
 
   virtual BackendType GetBackendType() const = 0;
 
   virtual bool IsRecording() const { return false; }
--- a/gfx/2d/Blur.cpp
+++ b/gfx/2d/Blur.cpp
@@ -440,24 +440,24 @@ AlphaBoxBlur::RoundUpToMultipleOf4(int32
   return val;
 }
 
 AlphaBoxBlur::AlphaBoxBlur(const Rect& aRect,
                            const IntSize& aSpreadRadius,
                            const IntSize& aBlurRadius,
                            const Rect* aDirtyRect,
                            const Rect* aSkipRect)
-  : mSurfaceAllocationSize(0)
+  : mStride{}, mSurfaceAllocationSize(0)
 {
   Init(aRect, aSpreadRadius, aBlurRadius, aDirtyRect, aSkipRect);
 }
 
 AlphaBoxBlur::AlphaBoxBlur()
-  : mSurfaceAllocationSize(0)
-{
+  : mStride{}, mSurfaceAllocationSize(0)
+, mHasDirtyRect{false} {
 }
 
 void
 AlphaBoxBlur::Init(const Rect& aRect,
                    const IntSize& aSpreadRadius,
                    const IntSize& aBlurRadius,
                    const Rect* aDirtyRect,
                    const Rect* aSkipRect)
@@ -519,17 +519,17 @@ AlphaBoxBlur::AlphaBoxBlur(const Rect& a
                            int32_t aStride,
                            float aSigmaX,
                            float aSigmaY)
   : mRect(TruncatedToInt(aRect)),
     mSpreadRadius(),
     mBlurRadius(CalculateBlurRadius(Point(aSigmaX, aSigmaY))),
     mStride(aStride),
     mSurfaceAllocationSize(0)
-{
+, mHasDirtyRect{false} {
   IntRect intRect;
   if (aRect.ToIntRect(&intRect)) {
     size_t minDataSize = BufferSizeFromStrideAndHeight(intRect.Width(), intRect.Height());
     if (minDataSize != 0) {
       mSurfaceAllocationSize = minDataSize;
     }
   }
 }
--- a/gfx/2d/DrawTargetCairo.cpp
+++ b/gfx/2d/DrawTargetCairo.cpp
@@ -428,17 +428,17 @@ public:
     , mX(0)
     , mY(0)
   {
     Init(aSurface);
   }
 
   explicit AutoClearDeviceOffset(const Pattern& aPattern)
     : mSurface(nullptr)
-  {
+  , mX{0.0}, mY{0.0} {
     if (aPattern.GetType() == PatternType::SURFACE) {
       const SurfacePattern& pattern = static_cast<const SurfacePattern&>(aPattern);
       Init(pattern.mSurface);
     }
   }
 
   ~AutoClearDeviceOffset()
   {
--- a/gfx/2d/DrawTargetSkia.cpp
+++ b/gfx/2d/DrawTargetSkia.cpp
@@ -272,17 +272,17 @@ GetSkImageForSurface(SourceSurface* aSur
   // Skia doesn't support RGBX surfaces so ensure that the alpha value is opaque white.
   MOZ_ASSERT(VerifyRGBXCorners(surf->GetData(), surf->GetSize(),
                                surf->Stride(), surf->GetFormat(),
                                aBounds, aMatrix));
   return image;
 }
 
 DrawTargetSkia::DrawTargetSkia()
-  : mSnapshot(nullptr)
+  : mCanvas{nullptr}, mSnapshot(nullptr)
   , mSnapshotLock{make_shared<Mutex>("DrawTargetSkia::mSnapshotLock")}
 #ifdef MOZ_WIDGET_COCOA
   , mCG(nullptr)
   , mColorSpace(nullptr)
   , mCanvasData(nullptr)
   , mCGSize(0, 0)
   , mNeedLayer(false)
 #endif
--- a/gfx/2d/FilterNodeSoftware.cpp
+++ b/gfx/2d/FilterNodeSoftware.cpp
@@ -2062,17 +2062,17 @@ FilterNodeGammaTransferSoftware::FilterN
  : mAmplitudeR(0)
  , mAmplitudeG(0)
  , mAmplitudeB(0)
  , mAmplitudeA(0)
  , mExponentR(0)
  , mExponentG(0)
  , mExponentB(0)
  , mExponentA(0)
-{}
+, mOffsetR{0.0}, mOffsetG{0.0}, mOffsetB{0.0}, mOffsetA{0.0} {}
 
 void
 FilterNodeGammaTransferSoftware::SetAttribute(uint32_t aIndex,
                                               Float aValue)
 {
   switch (aIndex) {
     case ATT_GAMMA_TRANSFER_AMPLITUDE_R:
       mAmplitudeR = aValue;
@@ -3069,17 +3069,17 @@ FilterNodeGaussianBlurSoftware::SetAttri
 
 Size
 FilterNodeGaussianBlurSoftware::StdDeviationXY()
 {
   return Size(mStdDeviation, mStdDeviation);
 }
 
 FilterNodeDirectionalBlurSoftware::FilterNodeDirectionalBlurSoftware()
- : mBlurDirection(BLUR_DIRECTION_X)
+ : mStdDeviation{0.0}, mBlurDirection(BLUR_DIRECTION_X)
 {}
 
 void
 FilterNodeDirectionalBlurSoftware::SetAttribute(uint32_t aIndex,
                                                 Float aStdDeviation)
 {
   switch (aIndex) {
     case ATT_DIRECTIONAL_BLUR_STD_DEVIATION:
--- a/gfx/2d/ImageScaling.h
+++ b/gfx/2d/ImageScaling.h
@@ -16,17 +16,17 @@ namespace mozilla {
 namespace gfx {
 
 class ImageHalfScaler
 {
 public:
   ImageHalfScaler(uint8_t *aData, int32_t aStride, const IntSize &aSize)
     : mOrigData(aData), mOrigStride(aStride), mOrigSize(aSize)
     , mDataStorage(nullptr)
-  {
+  , mData{nullptr}, mStride{} {
   }
 
   ~ImageHalfScaler()
   {
     delete [] mDataStorage;
   }
 
   void ScaleForSize(const IntSize &aSize);
--- a/gfx/2d/JobScheduler_posix.cpp
+++ b/gfx/2d/JobScheduler_posix.cpp
@@ -13,17 +13,17 @@ namespace mozilla {
 namespace gfx {
 
 void* ThreadCallback(void* threadData);
 
 class WorkerThreadPosix : public WorkerThread {
 public:
   explicit WorkerThreadPosix(MultiThreadedJobQueue* aJobQueue)
   : WorkerThread(aJobQueue)
-  {
+  , mThread{nullptr} {
     pthread_create(&mThread, nullptr, ThreadCallback, static_cast<WorkerThread*>(this));
   }
 
   ~WorkerThreadPosix() override
   {
     pthread_join(mThread, nullptr);
   }
 
--- a/gfx/2d/JobScheduler_posix.h
+++ b/gfx/2d/JobScheduler_posix.h
@@ -26,16 +26,17 @@ namespace gfx {
 class Job;
 class PosixCondVar;
 class WorkerThread;
 
 // posix platforms only!
 class PosixCondVar {
 public:
   PosixCondVar() {
+this->mCond.__sig = {};
     DebugOnly<int> err = pthread_cond_init(&mCond, nullptr);
     MOZ_ASSERT(!err);
   }
 
   ~PosixCondVar() {
     DebugOnly<int> err = pthread_cond_destroy(&mCond);
     MOZ_ASSERT(!err);
   }
--- a/gfx/2d/Logging.h
+++ b/gfx/2d/Logging.h
@@ -261,17 +261,17 @@ public:
 
   // Note that we're calling BasicLogger::ShouldOutputMessage, rather than
   // Logger::ShouldOutputMessage.  Since we currently don't have a different
   // version of that method for different loggers, this is OK. Once we do,
   // change BasicLogger::ShouldOutputMessage to Logger::ShouldOutputMessage.
   explicit Log(int aOptions = Log::DefaultOptions(L == LOG_CRITICAL),
                LogReason aReason = LogReason::MustBeMoreThanThis)
   : mOptions(0)
-  , mLogIt(false)
+  , /* FIXME: initialize mReason */ /* FIXME: initialize mReason */ mLogIt(false)
   {
     Init(aOptions, BasicLogger::ShouldOutputMessage(L), aReason);
   }
 
   ~Log() {
     Flush();
   }
 
--- a/gfx/2d/RecordedEventImpl.h
+++ b/gfx/2d/RecordedEventImpl.h
@@ -91,17 +91,17 @@ private:
   template<class S>
   MOZ_IMPLICIT RecordedDrawTargetCreation(S &aStream);
 };
 
 class RecordedDrawTargetDestruction : public RecordedEventDerived<RecordedDrawTargetDestruction> {
 public:
   MOZ_IMPLICIT RecordedDrawTargetDestruction(ReferencePtr aRefPtr)
     : RecordedEventDerived(DRAWTARGETDESTRUCTION), mRefPtr(aRefPtr)
-  {}
+   /* FIXME: initialize mBackendType */  {}
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S>
   void Record(S &aStream) const;
   virtual void OutputSimpleEventInfo(std::stringstream &aStringStream) const;
 
   virtual std::string GetName() const { return "DrawTarget Destruction"; }
@@ -144,17 +144,17 @@ private:
 
   template<class S>
   MOZ_IMPLICIT RecordedCreateSimilarDrawTarget(S &aStream);
 };
 
 class RecordedFillRect : public RecordedDrawingEvent<RecordedFillRect> {
 public:
   RecordedFillRect(DrawTarget *aDT, const Rect &aRect, const Pattern &aPattern, const DrawOptions &aOptions)
-    : RecordedDrawingEvent(FILLRECT, aDT), mRect(aRect), mOptions(aOptions)
+    : RecordedDrawingEvent(FILLRECT, aDT), mRect(aRect), mPattern{}, mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S>
   void Record(S &aStream) const;
@@ -172,17 +172,17 @@ private:
   DrawOptions mOptions;
 };
 
 class RecordedStrokeRect : public RecordedDrawingEvent<RecordedStrokeRect> {
 public:
   RecordedStrokeRect(DrawTarget *aDT, const Rect &aRect, const Pattern &aPattern,
                      const StrokeOptions &aStrokeOptions, const DrawOptions &aOptions)
     : RecordedDrawingEvent(STROKERECT, aDT), mRect(aRect),
-      mStrokeOptions(aStrokeOptions), mOptions(aOptions)
+      mPattern{}, mStrokeOptions(aStrokeOptions), mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S>
   void Record(S &aStream) const;
@@ -202,17 +202,17 @@ private:
 };
 
 class RecordedStrokeLine : public RecordedDrawingEvent<RecordedStrokeLine> {
 public:
   RecordedStrokeLine(DrawTarget *aDT, const Point &aBegin, const Point &aEnd,
                      const Pattern &aPattern, const StrokeOptions &aStrokeOptions,
                      const DrawOptions &aOptions)
     : RecordedDrawingEvent(STROKELINE, aDT), mBegin(aBegin), mEnd(aEnd),
-      mStrokeOptions(aStrokeOptions), mOptions(aOptions)
+      mPattern{}, mStrokeOptions(aStrokeOptions), mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S>
   void Record(S &aStream) const;
@@ -230,17 +230,17 @@ private:
   PatternStorage mPattern;
   StrokeOptions mStrokeOptions;
   DrawOptions mOptions;
 };
 
 class RecordedFill : public RecordedDrawingEvent<RecordedFill> {
 public:
   RecordedFill(DrawTarget *aDT, ReferencePtr aPath, const Pattern &aPattern, const DrawOptions &aOptions)
-    : RecordedDrawingEvent(FILL, aDT), mPath(aPath), mOptions(aOptions)
+    : RecordedDrawingEvent(FILL, aDT), mPath(aPath), mPattern{}, mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S> void Record(S &aStream) const;
   virtual void OutputSimpleEventInfo(std::stringstream &aStringStream) const;
@@ -256,17 +256,17 @@ private:
   PatternStorage mPattern;
   DrawOptions mOptions;
 };
 
 class RecordedFillGlyphs : public RecordedDrawingEvent<RecordedFillGlyphs> {
 public:
   RecordedFillGlyphs(DrawTarget *aDT, ReferencePtr aScaledFont, const Pattern &aPattern, const DrawOptions &aOptions,
                      const Glyph *aGlyphs, uint32_t aNumGlyphs)
-    : RecordedDrawingEvent(FILLGLYPHS, aDT), mScaledFont(aScaledFont), mOptions(aOptions)
+    : RecordedDrawingEvent(FILLGLYPHS, aDT), mScaledFont(aScaledFont), mPattern{}, mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
     mNumGlyphs = aNumGlyphs;
     mGlyphs = new Glyph[aNumGlyphs];
     memcpy(mGlyphs, aGlyphs, sizeof(Glyph) * aNumGlyphs);
   }
   virtual ~RecordedFillGlyphs();
 
@@ -287,17 +287,17 @@ private:
   DrawOptions mOptions;
   Glyph *mGlyphs;
   uint32_t mNumGlyphs;
 };
 
 class RecordedMask : public RecordedDrawingEvent<RecordedMask> {
 public:
   RecordedMask(DrawTarget *aDT, const Pattern &aSource, const Pattern &aMask, const DrawOptions &aOptions)
-    : RecordedDrawingEvent(MASK, aDT), mOptions(aOptions)
+    : RecordedDrawingEvent(MASK, aDT), mSource{}, mMask{}, mOptions(aOptions)
   {
     StorePattern(mSource, aSource);
     StorePattern(mMask, aMask);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S> void Record(S &aStream) const;
@@ -315,17 +315,17 @@ private:
   DrawOptions mOptions;
 };
 
 class RecordedStroke : public RecordedDrawingEvent<RecordedStroke> {
 public:
   RecordedStroke(DrawTarget *aDT, ReferencePtr aPath, const Pattern &aPattern,
                      const StrokeOptions &aStrokeOptions, const DrawOptions &aOptions)
     : RecordedDrawingEvent(STROKE, aDT), mPath(aPath),
-      mStrokeOptions(aStrokeOptions), mOptions(aOptions)
+      mPattern{}, mStrokeOptions(aStrokeOptions), mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S> void Record(S &aStream) const;
   virtual void OutputSimpleEventInfo(std::stringstream &aStringStream) const;
@@ -880,17 +880,17 @@ public:
     auto recordedFontData = static_cast<RecordedFontData*>(aBaton);
     recordedFontData->SetFontData(aData, aSize, aIndex);
   }
 
   explicit RecordedFontData(UnscaledFont *aUnscaledFont)
     : RecordedEventDerived(FONTDATA)
     , mType(aUnscaledFont->GetType())
     , mData(nullptr)
-  {
+  , mFontDetails{} {
     mGetFontFileDataSucceeded = aUnscaledFont->GetFontFileData(&FontDataProc, this);
   }
 
   ~RecordedFontData();
 
   bool IsValid() const { return mGetFontFileDataSucceeded; }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
@@ -1139,17 +1139,17 @@ private:
   template<class S>
   MOZ_IMPLICIT RecordedScaledFontDestruction(S &aStream);
 };
 
 class RecordedMaskSurface : public RecordedDrawingEvent<RecordedMaskSurface> {
 public:
   RecordedMaskSurface(DrawTarget *aDT, const Pattern &aPattern, ReferencePtr aRefMask,
                       const Point &aOffset, const DrawOptions &aOptions)
-    : RecordedDrawingEvent(MASKSURFACE, aDT), mRefMask(aRefMask), mOffset(aOffset)
+    : RecordedDrawingEvent(MASKSURFACE, aDT), mPattern{}, mRefMask(aRefMask), mOffset(aOffset)
     , mOptions(aOptions)
   {
     StorePattern(mPattern, aPattern);
   }
 
   virtual bool PlayEvent(Translator *aTranslator) const;
 
   template<class S> void Record(S &aStream) const;
--- a/gfx/2d/SVGTurbulenceRenderer-inl.h
+++ b/gfx/2d/SVGTurbulenceRenderer-inl.h
@@ -96,17 +96,17 @@ private:
 
 } // unnamed namespace
 
 template<TurbulenceType Type, bool Stitch, typename f32x4_t, typename i32x4_t, typename u8x16_t>
 SVGTurbulenceRenderer<Type,Stitch,f32x4_t,i32x4_t,u8x16_t>::SVGTurbulenceRenderer(const Size &aBaseFrequency, int32_t aSeed,
                                                             int aNumOctaves, const Rect &aTileRect)
  : mBaseFrequency(aBaseFrequency)
  , mNumOctaves(aNumOctaves)
-{
+, mStitchInfo{}, mStitchable{false} /* FIXME: initialize mType */  {
   InitFromSeed(aSeed);
   if (Stitch) {
     AdjustBaseFrequencyForStitch(aTileRect);
     mStitchInfo = CreateStitchInfo(aTileRect);
   }
 }
 
 template<TurbulenceType Type, bool Stitch, typename f32x4_t, typename i32x4_t, typename u8x16_t>
--- a/gfx/2d/SourceSurfaceSkia.cpp
+++ b/gfx/2d/SourceSurfaceSkia.cpp
@@ -14,17 +14,17 @@
 #include "mozilla/CheckedInt.h"
 
 using namespace std;
 
 namespace mozilla {
 namespace gfx {
 
 SourceSurfaceSkia::SourceSurfaceSkia()
-  : mDrawTarget(nullptr)
+  : /* FIXME: initialize mFormat */ /* FIXME: initialize mFormat */ mStride{}, mDrawTarget(nullptr)
   , mChangeMutex("SourceSurfaceSkia::mChangeMutex")
 {
 }
 
 SourceSurfaceSkia::~SourceSurfaceSkia()
 {
   if (mSnapshotLock) {
     MutexAutoLock lock{*mSnapshotLock};
--- a/gfx/2d/Tools.h
+++ b/gfx/2d/Tools.h
@@ -140,21 +140,21 @@ IsOpaqueFormat(SurfaceFormat aFormat) {
 template<typename T, int alignment = 16>
 struct AlignedArray
 {
   typedef T value_type;
 
   AlignedArray()
     : mPtr(nullptr)
     , mStorage(nullptr)
-  {
+  , mCount{} {
   }
 
   explicit MOZ_ALWAYS_INLINE AlignedArray(size_t aCount, bool aZero = false)
-    : mStorage(nullptr)
+    : mPtr{nullptr}, mStorage(nullptr)
     , mCount(0)
   {
     Realloc(aCount, aZero);
   }
 
   MOZ_ALWAYS_INLINE ~AlignedArray()
   {
     Dealloc();
--- a/gfx/gl/ForceDiscreteGPUHelperCGL.h
+++ b/gfx/gl/ForceDiscreteGPUHelperCGL.h
@@ -13,17 +13,17 @@
  * As long as any ForceDiscreteGPUHelperCGL object is alive, we're on the discrete GPU.
  */
 class ForceDiscreteGPUHelperCGL
 {
     CGLPixelFormatObj mPixelFormatObj;
 
 public:
     ForceDiscreteGPUHelperCGL()
-    {
+     : mPixelFormatObj{nullptr} {
         // the code in this function is taken from Chromium, src/ui/gfx/gl/gl_context_cgl.cc, r122013
         // BSD-style license, (c) The Chromium Authors
         CGLPixelFormatAttribute attribs[1];
         attribs[0] = static_cast<CGLPixelFormatAttribute>(0);
         GLint num_pixel_formats = 0;
         CGLChoosePixelFormat(attribs, &mPixelFormatObj, &num_pixel_formats);
     }
 
--- a/gfx/gl/GLLibraryEGL.cpp
+++ b/gfx/gl/GLLibraryEGL.cpp
@@ -186,17 +186,17 @@ GetAndInitDisplay(GLLibraryEGL& egl, voi
         return EGL_NO_DISPLAY;
 
     return display;
 }
 
 class AngleErrorReporting {
 public:
     AngleErrorReporting()
-    {
+     : mFailureId{nullptr} {
       // No static constructor
     }
 
     void SetFailureId(nsACString* const aFailureId)
     {
       mFailureId = aFailureId;
     }
 
--- a/gfx/gl/GLTextureImage.cpp
+++ b/gfx/gl/GLTextureImage.cpp
@@ -239,17 +239,17 @@ TiledTextureImage::TiledTextureImage(GLC
                                      gfx::IntSize aSize,
                                      TextureImage::ContentType aContentType,
                                      TextureImage::Flags aFlags,
                                      TextureImage::ImageFormat aImageFormat)
     : TextureImage(aSize, LOCAL_GL_CLAMP_TO_EDGE, aContentType, aFlags)
     , mCurrentImage(0)
     , mIterationCallback(nullptr)
     , mIterationCallbackData(nullptr)
-    , mRows(0)
+    , mTileSize{}, mRows(0)
     , mColumns(0)
     , mGL(aGL)
     , mTextureState(Created)
     , mImageFormat(aImageFormat)
 {
     if (!(aFlags & TextureImage::DisallowBigImage) && WantsSmallTiles(mGL)) {
       mTileSize = 256;
     } else {
--- a/gfx/gl/ScopedGLHelpers.cpp
+++ b/gfx/gl/ScopedGLHelpers.cpp
@@ -94,62 +94,62 @@ ScopedBindFramebuffer::UnwrapImpl()
     }
 }
 
 
 /* ScopedBindTextureUnit ******************************************************/
 
 ScopedBindTextureUnit::ScopedBindTextureUnit(GLContext* aGL, GLenum aTexUnit)
     : ScopedGLWrapper<ScopedBindTextureUnit>(aGL)
-{
+, mOldTexUnit{} {
     MOZ_ASSERT(aTexUnit >= LOCAL_GL_TEXTURE0);
     mGL->GetUIntegerv(LOCAL_GL_ACTIVE_TEXTURE, &mOldTexUnit);
     mGL->fActiveTexture(aTexUnit);
 }
 
 void
 ScopedBindTextureUnit::UnwrapImpl() {
     mGL->fActiveTexture(mOldTexUnit);
 }
 
 
 /* ScopedTexture **************************************************************/
 
 ScopedTexture::ScopedTexture(GLContext* aGL)
     : ScopedGLWrapper<ScopedTexture>(aGL)
-{
+, mTexture{} {
     mGL->fGenTextures(1, &mTexture);
 }
 
 void
 ScopedTexture::UnwrapImpl()
 {
     mGL->fDeleteTextures(1, &mTexture);
 }
 
 /* ScopedFramebuffer **************************************************************/
 
 ScopedFramebuffer::ScopedFramebuffer(GLContext* aGL)
     : ScopedGLWrapper<ScopedFramebuffer>(aGL)
-{
+, mFB{} {
     mGL->fGenFramebuffers(1, &mFB);
 }
 
 void
 ScopedFramebuffer::UnwrapImpl()
 {
     mGL->fDeleteFramebuffers(1, &mFB);
 }
 
 
 /* ScopedRenderbuffer **************************************************************/
 
 ScopedRenderbuffer::ScopedRenderbuffer(GLContext* aGL)
     : ScopedGLWrapper<ScopedRenderbuffer>(aGL)
-{
+, mRB{} {
     mGL->fGenRenderbuffers(1, &mRB);
 }
 
 void
 ScopedRenderbuffer::UnwrapImpl()
 {
     mGL->fDeleteRenderbuffers(1, &mRB);
 }
@@ -358,27 +358,27 @@ ScopedVertexAttribPointer::ScopedVertexA
                                                      GLuint index,
                                                      GLint size,
                                                      GLenum type,
                                                      realGLboolean normalized,
                                                      GLsizei stride,
                                                      GLuint buffer,
                                                      const GLvoid* pointer)
     : ScopedGLWrapper<ScopedVertexAttribPointer>(aGL)
-{
+, mAttribEnabled{}, mAttribSize{}, mAttribStride{}, mAttribType{}, mAttribNormalized{}, mAttribBufferBinding{}, mAttribPointer{nullptr}, mBoundBuffer{} {
     WrapImpl(index);
     mGL->fBindBuffer(LOCAL_GL_ARRAY_BUFFER, buffer);
     mGL->fVertexAttribPointer(index, size, type, normalized, stride, pointer);
     mGL->fEnableVertexAttribArray(index);
 }
 
 ScopedVertexAttribPointer::ScopedVertexAttribPointer(GLContext* aGL,
                                                      GLuint index)
     : ScopedGLWrapper<ScopedVertexAttribPointer>(aGL)
-{
+, mAttribEnabled{}, mAttribSize{}, mAttribStride{}, mAttribType{}, mAttribNormalized{}, mAttribBufferBinding{}, mAttribPointer{nullptr}, mBoundBuffer{} {
     WrapImpl(index);
 }
 
 void
 ScopedVertexAttribPointer::WrapImpl(GLuint index)
 {
     mAttribIndex = index;
 
@@ -423,17 +423,17 @@ ScopedVertexAttribPointer::UnwrapImpl()
     mGL->fBindBuffer(LOCAL_GL_ARRAY_BUFFER, mBoundBuffer);
 }
 
 ////////////////////////////////////////////////////////////////////////
 // ScopedPackState
 
 ScopedPackState::ScopedPackState(GLContext* gl)
     : ScopedGLWrapper<ScopedPackState>(gl)
-{
+, mAlignment{}, mPixelBuffer{}, mRowLength{}, mSkipPixels{}, mSkipRows{} {
     mGL->fGetIntegerv(LOCAL_GL_PACK_ALIGNMENT, &mAlignment);
 
     if (mAlignment != 4) mGL->fPixelStorei(LOCAL_GL_PACK_ALIGNMENT, 4);
 
     if (!mGL->HasPBOState())
         return;
 
     mGL->fGetIntegerv(LOCAL_GL_PIXEL_PACK_BUFFER_BINDING, (GLint*)&mPixelBuffer);
@@ -461,17 +461,17 @@ ScopedPackState::UnwrapImpl()
     mGL->fPixelStorei(LOCAL_GL_PACK_SKIP_ROWS, mSkipRows);
 }
 
 ////////////////////////////////////////////////////////////////////////
 // ResetUnpackState
 
 ResetUnpackState::ResetUnpackState(GLContext* gl)
     : ScopedGLWrapper<ResetUnpackState>(gl)
-{
+, mAlignment{}, mPBO{}, mRowLength{}, mImageHeight{}, mSkipPixels{}, mSkipRows{}, mSkipImages{} {
     const auto fnReset = [&](GLenum pname, GLuint val, GLuint* const out_old) {
         mGL->GetUIntegerv(pname, out_old);
         if (*out_old != val) {
             mGL->fPixelStorei(pname, val);
         }
     };
 
     // Default is 4, but 1 is more useful.
--- a/gfx/layers/AnimationHelper.h
+++ b/gfx/layers/AnimationHelper.h
@@ -50,17 +50,17 @@ struct AnimatedValue {
     AnimationTransform mTransform;
     float mOpacity;
   };
 
   AnimatedValue(gfx::Matrix4x4&& aTransformInDevSpace,
                 gfx::Matrix4x4&& aFrameTransform,
                 const TransformData& aData)
     : mType(AnimatedValue::TRANSFORM)
-  {
+  , mOpacity{0.0} {
     mTransform.mTransformInDevSpace = Move(aTransformInDevSpace);
     mTransform.mFrameTransform = Move(aFrameTransform);
     mTransform.mData = aData;
   }
 
   explicit AnimatedValue(const float& aValue)
     : mType(AnimatedValue::OPACITY)
     , mOpacity(aValue)
--- a/gfx/layers/AtomicRefCountedWithFinalize.h
+++ b/gfx/layers/AtomicRefCountedWithFinalize.h
@@ -31,17 +31,17 @@ class RefQueue;
 } // namespace gl
 
 template<typename T>
 class AtomicRefCountedWithFinalize
 {
 protected:
     explicit AtomicRefCountedWithFinalize(const char* aName)
       : mRecycleCallback(nullptr)
-      , mRefCount(0)
+      , mClosure{nullptr}, mRefCount(0)
 #ifdef DEBUG
       , mSpew(false)
       , mManualAddRefs(0)
       , mManualReleases(0)
 #endif
 #ifdef NS_BUILD_REFCNT_LOGGING
       , mName(aName)
 #endif
--- a/gfx/layers/LayerTreeInvalidation.cpp
+++ b/gfx/layers/LayerTreeInvalidation.cpp
@@ -165,17 +165,17 @@ struct LayerPropertiesBase : public Laye
     if (mUseClipRect) {
       mClipRect = *aLayer->GetLocalClipRect();
     }
     mTransform = GetTransformForInvalidation(aLayer);
   }
   LayerPropertiesBase()
     : mLayer(nullptr)
     , mMaskLayer(nullptr)
-  {
+  , mPostXScale{0.0}, mPostYScale{0.0}, mOpacity{0.0}, mUseClipRect{false} {
     MOZ_COUNT_CTOR(LayerPropertiesBase);
   }
   ~LayerPropertiesBase() override
   {
     MOZ_COUNT_DTOR(LayerPropertiesBase);
   }
 
 protected:
--- a/gfx/layers/Layers.h
+++ b/gfx/layers/Layers.h
@@ -2446,17 +2446,17 @@ class DisplayItemLayer : public Layer {
       mEffectiveTransform = SnapTransformTranslation(idealTransform, nullptr);
       ComputeEffectiveTransformForMaskLayers(aTransformToSurface);
     }
 
   protected:
     DisplayItemLayer(LayerManager* aManager, void* aImplData)
       : Layer(aManager, aImplData)
       , mItem(nullptr)
-  {}
+  , mBuilder{nullptr} {}
 
   virtual void PrintInfo(std::stringstream& aStream, const char* aPrefix) override;
 
   virtual void DumpPacket(layerscope::LayersPacket* aPacket, const void* aParent) override;
 
   // READ COMMENT ABOVE TO ENSURE WE DON'T HAVE A DANGLING POINTER
   nsDisplayItem* mItem;
   nsDisplayListBuilder* mBuilder;
--- a/gfx/layers/SourceSurfaceSharedData.h
+++ b/gfx/layers/SourceSurfaceSharedData.h
@@ -35,18 +35,18 @@ class SourceSurfaceSharedDataWrapper fin
 {
   typedef mozilla::ipc::SharedMemoryBasic SharedMemoryBasic;
 
 public:
   MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(SourceSurfaceSharedDataWrapper, override)
 
   SourceSurfaceSharedDataWrapper()
     : mStride(0)
-    , mFormat(SurfaceFormat::UNKNOWN)
-  { }
+    , mConsumers{}, mFormat(SurfaceFormat::UNKNOWN)
+  , mCreatorPid{} { }
 
   bool Init(const IntSize& aSize,
             int32_t aStride,
             SurfaceFormat aFormat,
             const SharedMemoryBasic::Handle& aHandle,
             base::ProcessId aCreatorPid);
 
   void Init(SourceSurfaceSharedData *aSurface);
--- a/gfx/layers/apz/src/KeyboardMap.cpp
+++ b/gfx/layers/apz/src/KeyboardMap.cpp
@@ -7,17 +7,17 @@
 #include "mozilla/layers/KeyboardMap.h"
 
 #include "mozilla/TextEvents.h" // for IgnoreModifierState, ShortcutKeyCandidate
 
 namespace mozilla {
 namespace layers {
 
 KeyboardShortcut::KeyboardShortcut()
-{
+ : mKeyCode{}, mCharCode{}, mModifiers{}, mModifiersMask{} /* FIXME: initialize mEventType */ , mDispatchToContent{false} {
 }
 
 KeyboardShortcut::KeyboardShortcut(KeyboardInput::KeyboardEventType aEventType,
                                    uint32_t aKeyCode,
                                    uint32_t aCharCode,
                                    Modifiers aModifiers,
                                    Modifiers aModifiersMask,
                                    const KeyboardScrollAction& aAction)
--- a/gfx/layers/basic/BasicLayerManager.cpp
+++ b/gfx/layers/basic/BasicLayerManager.cpp
@@ -309,17 +309,17 @@ BasicLayerManager::BasicLayerManager(nsI
 
 BasicLayerManager::BasicLayerManager(BasicLayerManagerType aType)
   : mPhase(PHASE_NONE)
   , mWidget(nullptr)
   , mDoubleBuffering(BufferMode::BUFFER_NONE)
   , mType(aType)
   , mUsingDefaultTarget(false)
   , mTransactionIncomplete(false)
-{
+, mCompositorMightResample{false} {
   MOZ_COUNT_CTOR(BasicLayerManager);
   MOZ_ASSERT(mType != BLM_WIDGET);
 }
 
 BasicLayerManager::~BasicLayerManager()
 {
   NS_ASSERTION(!InTransaction(), "Died during transaction?");
 
--- a/gfx/layers/client/ClientLayerManager.cpp
+++ b/gfx/layers/client/ClientLayerManager.cpp
@@ -88,17 +88,17 @@ ClientLayerManager::MemoryPressureObserv
   }
 }
 
 NS_IMPL_ISUPPORTS(ClientLayerManager::MemoryPressureObserver, nsIObserver)
 
 ClientLayerManager::ClientLayerManager(nsIWidget* aWidget)
   : mPhase(PHASE_NONE)
   , mWidget(aWidget)
-  , mLatestTransactionId(0)
+  , mPaintedLayerCallback{nullptr}, mPaintedLayerCallbackData{nullptr}, mLatestTransactionId(0)
   , mLastPaintTime(TimeDuration::Forever())
   , mTargetRotation(ROTATION_0)
   , mRepeatTransaction(false)
   , mIsRepeatTransaction(false)
   , mTransactionIncomplete(false)
   , mCompositorMightResample(false)
   , mNeedsComposite(false)
   , mQueuedAsyncPaints(false)
--- a/gfx/layers/composite/TextureHost.h
+++ b/gfx/layers/composite/TextureHost.h
@@ -904,18 +904,18 @@ private:
  */
 class CompositingRenderTarget: public TextureSource
 {
 public:
 
   explicit CompositingRenderTarget(const gfx::IntPoint& aOrigin)
     : mClearOnBind(false)
     , mOrigin(aOrigin)
-    , mHasComplexProjection(false)
-  {}
+    , mZNear{0.0}, mZFar{0.0}, mHasComplexProjection(false)
+  , mEnableDepthBuffer{false} {}
   virtual ~CompositingRenderTarget() {}
 
   virtual const char* Name() const override { return "CompositingRenderTarget"; }
 
 #ifdef MOZ_DUMP_PAINTING
   virtual already_AddRefed<gfx::DataSourceSurface> Dump(Compositor* aCompositor) { return nullptr; }
 #endif
 
--- a/gfx/layers/ipc/CompositorBridgeParent.cpp
+++ b/gfx/layers/ipc/CompositorBridgeParent.cpp
@@ -327,17 +327,17 @@ CompositorBridgeParent::CompositorBridge
   , mIsTesting(false)
   , mPendingTransaction(0)
   , mPaused(false)
   , mUseExternalSurfaceSize(aUseExternalSurfaceSize)
   , mEGLSurfaceSize(aSurfaceSize)
   , mOptions(aOptions)
   , mPauseCompositionMonitor("PauseCompositionMonitor")
   , mResumeCompositionMonitor("ResumeCompositionMonitor")
-  , mRootLayerTreeID(0)
+  , mCompositorBridgeID{}, mRootLayerTreeID(0)
   , mOverrideComposeReadiness(false)
   , mForceCompositionTask(nullptr)
   , mCompositorScheduler(nullptr)
   , mAnimationStorage(nullptr)
   , mPaintTime(TimeDuration::Forever())
 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK)
   , mLastPluginUpdateLayerTreeId(0)
   , mDeferPluginWindows(false)
--- a/gfx/layers/ipc/LayerTransactionParent.cpp
+++ b/gfx/layers/ipc/LayerTransactionParent.cpp
@@ -54,17 +54,17 @@ LayerTransactionParent::LayerTransaction
   , mCompositorBridge(aBridge)
   , mAnimStorage(aAnimStorage)
   , mId(aId)
   , mChildEpoch(0)
   , mParentEpoch(0)
   , mPendingTransaction(0)
   , mDestroyed(false)
   , mIPCOpen(false)
-{
+, mUpdateHitTestingTree{false} {
 }
 
 LayerTransactionParent::~LayerTransactionParent()
 {
 }
 
 void
 LayerTransactionParent::SetLayerManager(HostLayerManager* aLayerManager, CompositorAnimationStorage* aAnimStorage)
--- a/gfx/layers/ipc/ShadowLayers.cpp
+++ b/gfx/layers/ipc/ShadowLayers.cpp
@@ -59,17 +59,17 @@ typedef nsTArray<OpDestroy> OpDestroyVec
 typedef nsTArray<ReadLockInit> ReadLockVector;
 
 class Transaction
 {
 public:
   Transaction()
     : mReadLockSequenceNumber(0)
     , mTargetRotation(ROTATION_0)
-    , mOpen(false)
+    , mTargetOrientation{}, mOpen(false)
     , mRotationChanged(false)
   {}
 
   void Begin(const gfx::IntRect& aTargetBounds, ScreenRotation aRotation,
              dom::ScreenOrientationInternal aOrientation)
   {
     mOpen = true;
     mTargetBounds = aTargetBounds;
--- a/gfx/layers/mlgpu/ContainerLayerMLGPU.cpp
+++ b/gfx/layers/mlgpu/ContainerLayerMLGPU.cpp
@@ -19,17 +19,17 @@ namespace layers {
 
 using namespace gfx;
 
 ContainerLayerMLGPU::ContainerLayerMLGPU(LayerManagerMLGPU* aManager)
  : ContainerLayer(aManager, nullptr),
    LayerMLGPU(aManager),
    mInvalidateEntireSurface(false),
    mSurfaceCopyNeeded(false)
-{
+, mView{nullptr} {
 }
 
 ContainerLayerMLGPU::~ContainerLayerMLGPU()
 {
   while (mFirstChild) {
     RemoveChild(mFirstChild);
   }
 }
--- a/gfx/layers/mlgpu/LayerMLGPU.cpp
+++ b/gfx/layers/mlgpu/LayerMLGPU.cpp
@@ -15,17 +15,17 @@ namespace layers {
 
 using namespace gfx;
 
 uint64_t LayerMLGPU::sFrameKey = 0;
 
 LayerMLGPU::LayerMLGPU(LayerManagerMLGPU* aManager)
  : HostLayer(aManager),
    mFrameKey(0),
-   mPrepared(false)
+   mComputedOpacity{0.0}, mPrepared(false)
 {
 }
 
 /* static */ void
 LayerMLGPU::BeginFrame()
 {
   sFrameKey++;
 }
--- a/gfx/layers/mlgpu/MLGDevice.cpp
+++ b/gfx/layers/mlgpu/MLGDevice.cpp
@@ -61,17 +61,17 @@ MLGSwapChain::ApplyNewInvalidRegion(nsIn
     mFrontBufferInvalid.OrWith(invalid);
     AL_LOG("Frontbuffer invalid region: %s\n", Stringify(mFrontBufferInvalid).c_str());
   }
   return true;
 }
 
 MLGDevice::MLGDevice()
  : mTopology(MLGPrimitiveTopology::Unknown),
-   mIsValid(false),
+   mInitialized{false}, mIsValid(false),
    mCanUseClearView(false),
    mCanUseConstantBufferOffsetBinding(false),
    mMaxConstantBufferBindSize(0)
 {
 }
 
 MLGDevice::~MLGDevice()
 {
--- a/gfx/layers/mlgpu/RenderPassMLGPU.cpp
+++ b/gfx/layers/mlgpu/RenderPassMLGPU.cpp
@@ -564,17 +564,17 @@ TexturedRenderPass::AddClippedItem(Txn& 
       }
     }
   }
   return true;
 }
 
 SingleTexturePass::SingleTexturePass(FrameBuilder* aBuilder, const ItemInfo& aItem)
  : TexturedRenderPass(aBuilder, aItem),
-   mOpacity(1.0f)
+   /* FIXME: initialize mSamplerMode */ mOpacity(1.0f)
 {
   SetDefaultGeometry(aItem);
 }
 
 bool
 SingleTexturePass::AddToPass(LayerMLGPU* aLayer, ItemInfo& aItem)
 {
   RefPtr<TextureSource> texture;
@@ -731,17 +731,17 @@ ComponentAlphaPass::SetupPipeline()
   }
 
   mDevice->SetSamplerMode(kDefaultSamplerSlot, mAssignedLayer->GetSamplerMode());
   mDevice->SetPSTextures(0, 2, textures);
 }
 
 VideoRenderPass::VideoRenderPass(FrameBuilder* aBuilder, const ItemInfo& aItem)
  : TexturedRenderPass(aBuilder, aItem),
-   mOpacity(1.0f)
+   /* FIXME: initialize mSamplerMode */ mOpacity(1.0f)
 {
   SetDefaultGeometry(aItem);
 }
 
 bool
 VideoRenderPass::AddToPass(LayerMLGPU* aLayer, ItemInfo& aItem)
 {
   ImageLayerMLGPU* layer = aLayer->AsImageLayerMLGPU();
--- a/gfx/layers/mlgpu/SharedBufferMLGPU.cpp
+++ b/gfx/layers/mlgpu/SharedBufferMLGPU.cpp
@@ -15,17 +15,17 @@ namespace layers {
 
 SharedBufferMLGPU::SharedBufferMLGPU(MLGDevice* aDevice, MLGBufferType aType, size_t aDefaultSize)
  : mDevice(aDevice),
    mType(aType),
    mDefaultSize(aDefaultSize),
    mCanUseOffsetAllocation(true),
    mCurrentPosition(0),
    mMaxSize(0),
-   mMapped(false),
+   mMap{}, mMapped(false),
    mBytesUsedThisFrame(0),
    mNumSmallFrames(0)
 {
   MOZ_COUNT_CTOR(SharedBufferMLGPU);
 }
 
 SharedBufferMLGPU::~SharedBufferMLGPU()
 {
@@ -189,17 +189,17 @@ VertexBufferSection::Init(MLGBuffer* aBu
   mBuffer = aBuffer;
   mOffset = aOffset;
   mNumVertices = aNumVertices;
   mStride = aStride;
 }
 
 ConstantBufferSection::ConstantBufferSection()
  : mOffset(-1)
-{}
+, mNumBytes{}, mNumItems{} {}
 
 void
 ConstantBufferSection::Init(MLGBuffer* aBuffer, ptrdiff_t aOffset, size_t aBytes, size_t aNumItems)
 {
   mBuffer = aBuffer;
   mOffset = aOffset;
   mNumBytes = aBytes;
   mNumItems = aNumItems;
--- a/gfx/layers/mlgpu/TexturedLayerMLGPU.cpp
+++ b/gfx/layers/mlgpu/TexturedLayerMLGPU.cpp
@@ -167,17 +167,17 @@ TexturedLayerMLGPU::AssignBigImage(Frame
     // FrameBuilder to do it for us.
     aBuilder->RetainTemporaryLayer(item);
   } while (aIter->NextTile());
 }
 
 TempImageLayerMLGPU::TempImageLayerMLGPU(LayerManagerMLGPU* aManager)
  : ImageLayer(aManager, static_cast<HostLayer*>(this)),
    TexturedLayerMLGPU(aManager)
-{
+ /* FIXME: initialize mFilter */ , mIsOpaque{false} {
 }
 
 TempImageLayerMLGPU::~TempImageLayerMLGPU()
 {
 }
 
 void
 TempImageLayerMLGPU::Init(TexturedLayerMLGPU* aSource,
--- a/gfx/layers/opengl/CompositingRenderTargetOGL.h
+++ b/gfx/layers/opengl/CompositingRenderTargetOGL.h
@@ -40,17 +40,17 @@ class CompositingRenderTargetOGL : publi
 {
   typedef mozilla::gl::GLContext GLContext;
 
   friend class CompositorOGL;
 
   // For lazy initialisation of the GL stuff
   struct InitParams
   {
-    InitParams() : mStatus(NO_PARAMS) {}
+    InitParams() : mStatus(NO_PARAMS) , mFBOTextureTarget{} /* FIXME: initialize mInit */   /* FIXME: initialize mInit */  {}
     InitParams(const gfx::IntSize& aSize,
                const gfx::IntSize& aPhySize,
                GLenum aFBOTextureTarget,
                SurfaceInitMode aInit)
       : mStatus(READY)
       , mSize(aSize)
       , mPhySize(aPhySize)
       , mFBOTextureTarget(aFBOTextureTarget)
--- a/gfx/layers/opengl/CompositorOGL.cpp
+++ b/gfx/layers/opengl/CompositorOGL.cpp
@@ -88,17 +88,17 @@ CompositorOGL::BindBackdrop(ShaderProgra
 
 CompositorOGL::CompositorOGL(CompositorBridgeParent* aParent,
                              widget::CompositorWidget* aWidget,
                              int aSurfaceWidth, int aSurfaceHeight,
                              bool aUseExternalSurfaceSize)
   : Compositor(aWidget, aParent)
   , mWidgetSize(-1, -1)
   , mSurfaceSize(aSurfaceWidth, aSurfaceHeight)
-  , mHasBGRA(0)
+  , mFBOTextureTarget{}, mQuadVBO{}, mTriangleVBO{}, mHasBGRA(0)
   , mUseExternalSurfaceSize(aUseExternalSurfaceSize)
   , mFrameInProgress(false)
   , mDestroyed(false)
   , mViewportSize(0, 0)
   , mCurrentProgram(nullptr)
 {
   MOZ_COUNT_CTOR(CompositorOGL);
 }
--- a/gfx/layers/opengl/TextureHostOGL.h
+++ b/gfx/layers/opengl/TextureHostOGL.h
@@ -78,17 +78,17 @@ inline void ApplySamplingFilterToBoundTe
 /**
  * TextureSourceOGL provides the necessary API for CompositorOGL to composite
  * a TextureSource.
  */
 class TextureSourceOGL
 {
 public:
   TextureSourceOGL()
-    : mHasCachedSamplingFilter(false)
+    : /* FIXME: initialize mCachedSamplingFilter */ /* FIXME: initialize mCachedSamplingFilter */ mHasCachedSamplingFilter(false)
   {}
 
   virtual bool IsValid() const = 0;
 
   virtual void BindTexture(GLenum aTextureUnit,
                            gfx::SamplingFilter aSamplingFilter) = 0;
 
   virtual gfx::IntSize GetSize() const = 0;
--- a/gfx/layers/protobuf/LayerScopePacket.pb.cc
+++ b/gfx/layers/protobuf/LayerScopePacket.pb.cc
@@ -408,17 +408,17 @@ const int CommandPacket::CmdType_ARRAYSI
 // ===================================================================
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int FramePacket::kValueFieldNumber;
 const int FramePacket::kScaleFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 FramePacket::FramePacket()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , scale_{0.0} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.FramePacket)
 }
 FramePacket::FramePacket(const FramePacket& from)
   : ::google::protobuf::MessageLite(),
@@ -704,17 +704,17 @@ void FramePacket::set_scale(float value)
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int ColorPacket::kLayerrefFieldNumber;
 const int ColorPacket::kWidthFieldNumber;
 const int ColorPacket::kHeightFieldNumber;
 const int ColorPacket::kColorFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 ColorPacket::ColorPacket()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , width_{}, height_{}, color_{} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.ColorPacket)
 }
 ColorPacket::ColorPacket(const ColorPacket& from)
   : ::google::protobuf::MessageLite(),
@@ -1110,17 +1110,17 @@ void ColorPacket::set_color(::google::pr
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int TexturePacket_Rect::kXFieldNumber;
 const int TexturePacket_Rect::kYFieldNumber;
 const int TexturePacket_Rect::kWFieldNumber;
 const int TexturePacket_Rect::kHFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 TexturePacket_Rect::TexturePacket_Rect()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , y_{0.0}, w_{0.0}, h_{0.0} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.TexturePacket.Rect)
 }
 TexturePacket_Rect::TexturePacket_Rect(const TexturePacket_Rect& from)
   : ::google::protobuf::MessageLite(),
@@ -1506,17 +1506,17 @@ void TexturePacket_Rect::set_h(float val
 // ===================================================================
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int TexturePacket_Size::kWFieldNumber;
 const int TexturePacket_Size::kHFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 TexturePacket_Size::TexturePacket_Size()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , h_{} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.TexturePacket.Size)
 }
 TexturePacket_Size::TexturePacket_Size(const TexturePacket_Size& from)
   : ::google::protobuf::MessageLite(),
@@ -1803,17 +1803,17 @@ void TexturePacket_Size::set_h(::google:
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int TexturePacket_Matrix::kIs2DFieldNumber;
 const int TexturePacket_Matrix::kIsIdFieldNumber;
 const int TexturePacket_Matrix::kMFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 TexturePacket_Matrix::TexturePacket_Matrix()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , isid_{false} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.TexturePacket.Matrix)
 }
 TexturePacket_Matrix::TexturePacket_Matrix(const TexturePacket_Matrix& from)
   : ::google::protobuf::MessageLite(),
@@ -2164,17 +2164,17 @@ TexturePacket_Matrix::mutable_m() {
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int TexturePacket_EffectMask::kMIs3DFieldNumber;
 const int TexturePacket_EffectMask::kMSizeFieldNumber;
 const int TexturePacket_EffectMask::kMMaskTransformFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 TexturePacket_EffectMask::TexturePacket_EffectMask()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , mmasktransform_{nullptr}, mis3d_{false} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.TexturePacket.EffectMask)
 }
 TexturePacket_EffectMask::TexturePacket_EffectMask(const TexturePacket_EffectMask& from)
   : ::google::protobuf::MessageLite(),
@@ -2582,17 +2582,17 @@ const int TexturePacket::kDataFieldNumbe
 const int TexturePacket::kMTextureCoordsFieldNumber;
 const int TexturePacket::kMPremultipliedFieldNumber;
 const int TexturePacket::kMFilterFieldNumber;
 const int TexturePacket::kIsMaskFieldNumber;
 const int TexturePacket::kMaskFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 TexturePacket::TexturePacket()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , mask_{nullptr}, layerref_{}, width_{}, height_{}, stride_{}, name_{}, target_{}, dataformat_{}, glcontext_{}, mfilter_{}, mpremultiplied_{false}, ismask_{false} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.TexturePacket)
 }
 TexturePacket::TexturePacket(const TexturePacket& from)
   : ::google::protobuf::MessageLite(),
@@ -3655,17 +3655,17 @@ void TexturePacket::set_allocated_mask(:
 // ===================================================================
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int LayersPacket_Layer_Size::kWFieldNumber;
 const int LayersPacket_Layer_Size::kHFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 LayersPacket_Layer_Size::LayersPacket_Layer_Size()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , h_{} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.LayersPacket.Layer.Size)
 }
 LayersPacket_Layer_Size::LayersPacket_Layer_Size(const LayersPacket_Layer_Size& from)
   : ::google::protobuf::MessageLite(),
@@ -3953,17 +3953,17 @@ void LayersPacket_Layer_Size::set_h(::go
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int LayersPacket_Layer_Rect::kXFieldNumber;
 const int LayersPacket_Layer_Rect::kYFieldNumber;
 const int LayersPacket_Layer_Rect::kWFieldNumber;
 const int LayersPacket_Layer_Rect::kHFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 LayersPacket_Layer_Rect::LayersPacket_Layer_Rect()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , y_{}, w_{}, h_{} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.LayersPacket.Layer.Rect)
 }
 LayersPacket_Layer_Rect::LayersPacket_Layer_Rect(const LayersPacket_Layer_Rect& from)
   : ::google::protobuf::MessageLite(),
@@ -4590,17 +4590,17 @@ LayersPacket_Layer_Region::r() const {
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int LayersPacket_Layer_Matrix::kIs2DFieldNumber;
 const int LayersPacket_Layer_Matrix::kIsIdFieldNumber;
 const int LayersPacket_Layer_Matrix::kMFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 LayersPacket_Layer_Matrix::LayersPacket_Layer_Matrix()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , isid_{false} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.LayersPacket.Layer.Matrix)
 }
 LayersPacket_Layer_Matrix::LayersPacket_Layer_Matrix(const LayersPacket_Layer_Matrix& from)
   : ::google::protobuf::MessageLite(),
@@ -4951,17 +4951,17 @@ LayersPacket_Layer_Matrix::mutable_m() {
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int LayersPacket_Layer_Shadow::kClipFieldNumber;
 const int LayersPacket_Layer_Shadow::kTransformFieldNumber;
 const int LayersPacket_Layer_Shadow::kVRegionFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 LayersPacket_Layer_Shadow::LayersPacket_Layer_Shadow()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , transform_{nullptr}, vregion_{nullptr} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.LayersPacket.Layer.Shadow)
 }
 LayersPacket_Layer_Shadow::LayersPacket_Layer_Shadow(const LayersPacket_Layer_Shadow& from)
   : ::google::protobuf::MessageLite(),
@@ -5410,17 +5410,17 @@ const int LayersPacket_Layer::kColorFiel
 const int LayersPacket_Layer::kFilterFieldNumber;
 const int LayersPacket_Layer::kRefIDFieldNumber;
 const int LayersPacket_Layer::kSizeFieldNumber;
 const int LayersPacket_Layer::kDisplayListLogLengthFieldNumber;
 const int LayersPacket_Layer::kDisplayListLogFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 LayersPacket_Layer::LayersPacket_Layer()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , transform_{nullptr}, vregion_{nullptr}, shadow_{nullptr}, hitregion_{nullptr}, dispatchregion_{nullptr}, noactionregion_{nullptr}, hpanregion_{nullptr}, vpanregion_{nullptr}, valid_{nullptr}, size_{nullptr}, ptr_{}, parentptr_{}, type_{}, opacity_{0.0}, barid_{}, mask_{}, copaque_{false}, calpha_{false}, color_{}, refid_{}, filter_{}, displaylistloglength_{} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.LayersPacket.Layer)
 }
 LayersPacket_Layer::LayersPacket_Layer(const LayersPacket_Layer& from)
   : ::google::protobuf::MessageLite(),
@@ -7860,17 +7860,17 @@ void MetaPacket::set_composedbyhwc(bool 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int DrawPacket_Rect::kXFieldNumber;
 const int DrawPacket_Rect::kYFieldNumber;
 const int DrawPacket_Rect::kWFieldNumber;
 const int DrawPacket_Rect::kHFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 DrawPacket_Rect::DrawPacket_Rect()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , y_{0.0}, w_{0.0}, h_{0.0} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.DrawPacket.Rect)
 }
 DrawPacket_Rect::DrawPacket_Rect(const DrawPacket_Rect& from)
   : ::google::protobuf::MessageLite(),
@@ -8283,17 +8283,17 @@ const int DrawPacket::kMvMatrixFieldNumb
 const int DrawPacket::kTotalRectsFieldNumber;
 const int DrawPacket::kLayerRectFieldNumber;
 const int DrawPacket::kLayerrefFieldNumber;
 const int DrawPacket::kTexIDsFieldNumber;
 const int DrawPacket::kTextureRectFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 DrawPacket::DrawPacket()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , offsety_{0.0}, layerref_{}, totalrects_{} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.DrawPacket)
 }
 DrawPacket::DrawPacket(const DrawPacket& from)
   : ::google::protobuf::MessageLite(),
@@ -8979,17 +8979,17 @@ const int Packet::kFrameFieldNumber;
 const int Packet::kColorFieldNumber;
 const int Packet::kTextureFieldNumber;
 const int Packet::kLayersFieldNumber;
 const int Packet::kMetaFieldNumber;
 const int Packet::kDrawFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Packet::Packet()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , color_{nullptr}, texture_{nullptr}, layers_{nullptr}, meta_{nullptr}, draw_{nullptr} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.Packet)
 }
 Packet::Packet(const Packet& from)
   : ::google::protobuf::MessageLite(),
@@ -9748,17 +9748,17 @@ void Packet::set_allocated_draw(::mozill
 // ===================================================================
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int CommandPacket::kTypeFieldNumber;
 const int CommandPacket::kValueFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 CommandPacket::CommandPacket()
-  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) , value_{false} {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_LayerScopePacket_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.layers.layerscope.CommandPacket)
 }
 CommandPacket::CommandPacket(const CommandPacket& from)
   : ::google::protobuf::MessageLite(),
--- a/gfx/src/nsDeviceContext.cpp
+++ b/gfx/src/nsDeviceContext.cpp
@@ -42,17 +42,17 @@
 using namespace mozilla;
 using namespace mozilla::gfx;
 using mozilla::services::GetObserverService;
 using mozilla::widget::ScreenManager;
 
 class nsFontCache final : public nsIObserver
 {
 public:
-    nsFontCache() {}
+    nsFontCache()  : mContext{nullptr} {}
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSIOBSERVER
 
     void Init(nsDeviceContext* aContext);
     void Destroy();
 
     already_AddRefed<nsFontMetrics> GetMetricsFor(
--- a/gfx/src/nsRegion.h
+++ b/gfx/src/nsRegion.h
@@ -360,17 +360,17 @@ public:
   {
     int mCurrent;               // Index of the current entry
     int mLimit;                 // Index one past the final entry.
     mutable nsRect mTmp;        // The most recently gotten rectangle.
     pixman_box32_t *mBoxes;
 
   public:
     explicit RectIterator(const nsRegion& aRegion)
-    {
+     : mLimit{} {
       mCurrent = 0;
       mBoxes = pixman_region32_rectangles(aRegion.Impl(), &mLimit);
       // Work around pixman bug. Sometimes pixman creates regions with 1 rect
       // that's empty.
       if (mLimit == 1 && nsRegion::BoxToRect(mBoxes[0]).IsEmpty()) {
         mLimit = 0;
       }
     }
--- a/gfx/thebes/PrintTargetSkPDF.cpp
+++ b/gfx/thebes/PrintTargetSkPDF.cpp
@@ -12,17 +12,17 @@
 namespace mozilla {
 namespace gfx {
 
 PrintTargetSkPDF::PrintTargetSkPDF(const IntSize& aSize,
                                    UniquePtr<SkWStream> aStream)
   : PrintTarget(/* not using cairo_surface_t */ nullptr, aSize)
   , mOStream(Move(aStream))
   , mPageCanvas(nullptr)
-{
+, mRefCanvas{nullptr} {
 }
 
 PrintTargetSkPDF::~PrintTargetSkPDF()
 {
   Finish(); // ensure stream is flushed
 
   // Make sure mPDFDoc and mRefPDFDoc are destroyed before our member streams
   // (which they wrap) are destroyed:
--- a/gfx/thebes/gfxContext.h
+++ b/gfx/thebes/gfxContext.h
@@ -644,17 +644,17 @@ private:
 };
 
 
 class DrawTargetAutoDisableSubpixelAntialiasing {
 public:
     typedef mozilla::gfx::DrawTarget DrawTarget;
 
     DrawTargetAutoDisableSubpixelAntialiasing(DrawTarget *aDT, bool aDisable)
-    {
+     : mSubpixelAntialiasingEnabled{false} {
         if (aDisable) {
             mDT = aDT;
             mSubpixelAntialiasingEnabled = mDT->GetPermitSubpixelAA();
             mDT->SetPermitSubpixelAA(false);
         }
     }
     ~DrawTargetAutoDisableSubpixelAntialiasing()
     {
--- a/gfx/thebes/gfxFont.cpp
+++ b/gfx/thebes/gfxFont.cpp
@@ -766,17 +766,17 @@ gfxFont::RunMetrics::CombineWith(const R
 }
 
 gfxFont::gfxFont(const RefPtr<UnscaledFont>& aUnscaledFont,
                  gfxFontEntry *aFontEntry, const gfxFontStyle *aFontStyle,
                  AntialiasOption anAAOption, cairo_scaled_font_t *aScaledFont) :
     mScaledFont(aScaledFont),
     mFontEntry(aFontEntry), mIsValid(true),
     mApplySyntheticBold(false),
-    mMathInitialized(false),
+    mKerningEnabled{false}, mMathInitialized(false),
     mStyle(*aFontStyle),
     mAdjustedSize(0.0),
     mFUnitsConvFactor(-1.0f), // negative to indicate "not yet initialized"
     mAntialiasOption(anAAOption),
     mUnscaledFont(aUnscaledFont)
 {
 #ifdef DEBUG_TEXT_RUN_STORAGE_METRICS
     ++gFontCount;
--- a/gfx/thebes/gfxFontEntry.cpp
+++ b/gfx/thebes/gfxFontEntry.cpp
@@ -69,29 +69,29 @@ gfxFontEntry::gfxFontEntry() :
     mHasSpaceFeatures(false),
     mHasSpaceFeaturesKerning(false),
     mHasSpaceFeaturesNonKerning(false),
     mSkipDefaultFeatureSpaceCheck(false),
     mGraphiteSpaceContextualsInitialized(false),
     mHasGraphiteSpaceContextuals(false),
     mSpaceGlyphIsInvisible(false),
     mSpaceGlyphIsInvisibleInitialized(false),
-    mCheckedForGraphiteTables(false),
+    mHasGraphiteTables{false}, mCheckedForGraphiteTables(false),
     mHasCmapTable(false),
     mGrFaceInitialized(false),
     mCheckedForColorGlyph(false),
     mWeight(500), mStretch(NS_FONT_STRETCH_NORMAL),
     mUVSOffset(0), mUVSData(nullptr),
     mLanguageOverride(NO_FONT_LANGUAGE_OVERRIDE),
     mCOLR(nullptr),
     mCPAL(nullptr),
     mUnitsPerEm(0),
     mHBFace(nullptr),
     mGrFace(nullptr),
-    mGrFaceRefCnt(0),
+    mGrTableMap{nullptr}, mGrFaceRefCnt(0),
     mComputedSizeOfUserFont(0)
 {
     memset(&mDefaultSubSpaceFeatures, 0, sizeof(mDefaultSubSpaceFeatures));
     memset(&mNonDefaultSubSpaceFeatures, 0, sizeof(mNonDefaultSubSpaceFeatures));
 }
 
 gfxFontEntry::gfxFontEntry(const nsAString& aName, bool aIsStandardFace) :
     mName(aName), mStyle(NS_FONT_STYLE_NORMAL), mFixedPitch(false),
@@ -106,29 +106,29 @@ gfxFontEntry::gfxFontEntry(const nsAStri
     mHasSpaceFeatures(false),
     mHasSpaceFeaturesKerning(false),
     mHasSpaceFeaturesNonKerning(false),
     mSkipDefaultFeatureSpaceCheck(false),
     mGraphiteSpaceContextualsInitialized(false),
     mHasGraphiteSpaceContextuals(false),
     mSpaceGlyphIsInvisible(false),
     mSpaceGlyphIsInvisibleInitialized(false),
-    mCheckedForGraphiteTables(false),
+    mHasGraphiteTables{false}, mCheckedForGraphiteTables(false),
     mHasCmapTable(false),
     mGrFaceInitialized(false),
     mCheckedForColorGlyph(false),
     mWeight(500), mStretch(NS_FONT_STRETCH_NORMAL),
     mUVSOffset(0), mUVSData(nullptr),
     mLanguageOverride(NO_FONT_LANGUAGE_OVERRIDE),
     mCOLR(nullptr),
     mCPAL(nullptr),
     mUnitsPerEm(0),
     mHBFace(nullptr),
     mGrFace(nullptr),
-    mGrFaceRefCnt(0),
+    mGrTableMap{nullptr}, mGrFaceRefCnt(0),
     mComputedSizeOfUserFont(0)
 {
     memset(&mDefaultSubSpaceFeatures, 0, sizeof(mDefaultSubSpaceFeatures));
     memset(&mNonDefaultSubSpaceFeatures, 0, sizeof(mNonDefaultSubSpaceFeatures));
 }
 
 gfxFontEntry::~gfxFontEntry()
 {
--- a/gfx/thebes/gfxFontFamilyList.h
+++ b/gfx/thebes/gfxFontFamilyList.h
@@ -276,17 +276,17 @@ public:
     explicit FontFamilyList(const FontFamilyName& aName)
         : mFontlist(MakeNotNull<SharedFontList*>(aName))
         , mDefaultFontType(eFamily_none)
     {
     }
 
     explicit FontFamilyList(nsTArray<FontFamilyName>&& aNames)
         : mFontlist(MakeNotNull<SharedFontList*>(Move(aNames)))
-    {
+     /* FIXME: initialize mDefaultFontType */   /* FIXME: initialize mDefaultFontType */  {
     }
 
     FontFamilyList(const FontFamilyList& aOther)
         : mFontlist(aOther.mFontlist)
         , mDefaultFontType(aOther.mDefaultFontType)
     {
     }
 
--- a/gfx/thebes/gfxFontInfoLoader.h
+++ b/gfx/thebes/gfxFontInfoLoader.h
@@ -46,17 +46,17 @@ struct FontFaceData {
 class FontInfoData {
 public:
     NS_INLINE_DECL_THREADSAFE_REFCOUNTING(FontInfoData)
 
     FontInfoData(bool aLoadOtherNames,
                  bool aLoadFaceNames,
                  bool aLoadCmaps) :
         mCanceled(false),
-        mLoadOtherNames(aLoadOtherNames),
+        mLoadStats{}, mLoadOtherNames(aLoadOtherNames),
         mLoadFaceNames(aLoadFaceNames),
         mLoadCmaps(aLoadCmaps)
     {
         MOZ_COUNT_CTOR(FontInfoData);
     }
 
 protected:
     // Protected destructor, to discourage deletion outside of Release():
--- a/gfx/thebes/gfxGlyphExtents.h
+++ b/gfx/thebes/gfxGlyphExtents.h
@@ -83,17 +83,17 @@ public:
     size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
     size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
 
 private:
     class HashEntry : public nsUint32HashKey {
     public:
         // When constructing a new entry in the hashtable, we'll leave this
         // blank. The caller of Put() will fill this in.
-        explicit HashEntry(KeyTypePointer aPtr) : nsUint32HashKey(aPtr) {}
+        explicit HashEntry(KeyTypePointer aPtr) : nsUint32HashKey(aPtr) , x{0.0}, y{0.0}, width{0.0}, height{0.0} {}
         HashEntry(const HashEntry& toCopy) : nsUint32HashKey(toCopy) {
           x = toCopy.x; y = toCopy.y; width = toCopy.width; height = toCopy.height;
         }
 
         float x, y, width, height;
     };
 
     enum { BLOCK_SIZE_BITS = 7, BLOCK_SIZE = 1 << BLOCK_SIZE_BITS }; // 128-glyph blocks
--- a/gfx/thebes/gfxGraphiteShaper.cpp
+++ b/gfx/thebes/gfxGraphiteShaper.cpp
@@ -28,16 +28,17 @@ using namespace mozilla; // for AutoSwap
  * Creation and destruction; on deletion, release any font tables we're holding
  */
 
 gfxGraphiteShaper::gfxGraphiteShaper(gfxFont *aFont)
     : gfxFontShaper(aFont),
       mGrFace(mFont->GetFontEntry()->GetGrFace()),
       mGrFont(nullptr), mFallbackToSmallCaps(false)
 {
+this->mCallbackData.mDrawTarget = {nullptr};
     mCallbackData.mFont = aFont;
 }
 
 gfxGraphiteShaper::~gfxGraphiteShaper()
 {
     if (mGrFont) {
         gr_font_destroy(mGrFont);
     }
--- a/gfx/thebes/gfxHarfBuzzShaper.cpp
+++ b/gfx/thebes/gfxHarfBuzzShaper.cpp
@@ -38,33 +38,33 @@ using namespace mozilla::unicode; // for
  * Creation and destruction; on deletion, release any font tables we're holding
  */
 
 gfxHarfBuzzShaper::gfxHarfBuzzShaper(gfxFont *aFont)
     : gfxFontShaper(aFont),
       mHBFace(aFont->GetFontEntry()->GetHBFace()),
       mHBFont(nullptr),
       mBuffer(nullptr),
-      mKernTable(nullptr),
+      mCallbackData{}, mKernTable(nullptr),
       mHmtxTable(nullptr),
       mVmtxTable(nullptr),
       mVORGTable(nullptr),
       mLocaTable(nullptr),
       mGlyfTable(nullptr),
       mCmapTable(nullptr),
       mCmapFormat(-1),
       mSubtableOffset(0),
       mUVSTableOffset(0),
       mNumLongHMetrics(0),
       mNumLongVMetrics(0),
       mUseFontGetGlyph(aFont->ProvidesGetGlyph()),
       mUseFontGlyphWidths(false),
       mInitialized(false),
       mVerticalInitialized(false),
-      mLoadedLocaGlyf(false),
+      mUseVerticalPresentationForms{false}, mLoadedLocaGlyf(false),
       mLocaLongOffsets(false)
 {
 }
 
 gfxHarfBuzzShaper::~gfxHarfBuzzShaper()
 {
     if (mCmapTable) {
         hb_blob_destroy(mCmapTable);
--- a/gfx/thebes/gfxImageSurface.cpp
+++ b/gfx/thebes/gfxImageSurface.cpp
@@ -17,17 +17,17 @@
 #include <algorithm>
 
 using namespace mozilla;
 using namespace mozilla::gfx;
 
 gfxImageSurface::gfxImageSurface()
   : mSize(0, 0),
     mOwnsData(false),
-    mFormat(SurfaceFormat::UNKNOWN),
+    mData{nullptr}, mFormat(SurfaceFormat::UNKNOWN),
     mStride(0)
 {
 }
 
 void
 gfxImageSurface::InitFromSurface(cairo_surface_t *csurf)
 {
     if (!csurf || cairo_surface_status(csurf)) {
--- a/gfx/thebes/gfxMacPlatformFontList.mm
+++ b/gfx/thebes/gfxMacPlatformFontList.mm
@@ -315,17 +315,17 @@ MacOSFontEntry::MacOSFontEntry(const nsA
       mHasVariations(false),
       mHasVariationsInitialized(false),
       mHasAATSmallCaps(false),
       mHasAATSmallCapsInitialized(false),
       mCheckedForTracking(false),
       mTrakTable(nullptr),
       mTrakValues(nullptr),
       mTrakSizeTable(nullptr)
-{
+, mNumTrakSizes{} {
     mWeight = aWeight;
 }
 
 MacOSFontEntry::MacOSFontEntry(const nsAString& aPostscriptName,
                                CGFontRef aFontRef,
                                uint16_t aWeight, uint16_t aStretch,
                                uint8_t aStyle,
                                bool aIsDataUserFont,
@@ -340,17 +340,17 @@ MacOSFontEntry::MacOSFontEntry(const nsA
       mHasVariations(false),
       mHasVariationsInitialized(false),
       mHasAATSmallCaps(false),
       mHasAATSmallCapsInitialized(false),
       mCheckedForTracking(false),
       mTrakTable(nullptr),
       mTrakValues(nullptr),
       mTrakSizeTable(nullptr)
-{
+, mNumTrakSizes{} {
     mFontRef = aFontRef;
     mFontRefInitialized = true;
     ::CFRetain(mFontRef);
 
     mWeight = aWeight;
     mStretch = aStretch;
     mFixedPitch = false; // xxx - do we need this for downloaded fonts?
     mStyle = aStyle;
--- a/gfx/thebes/gfxMathTable.cpp
+++ b/gfx/thebes/gfxMathTable.cpp
@@ -9,16 +9,17 @@
 
 #define FloatToFixed(f) (65536 * (f))
 #define FixedToFloat(f) ((f) * (1.0 / 65536.0))
 
 using namespace mozilla;
 
 gfxMathTable::gfxMathTable(hb_face_t *aFace, gfxFloat aSize)
 {
+this->mMathVariantCache.vertical = {false};
   mHBFont = hb_font_create(aFace);
   if (mHBFont) {
     hb_font_set_ppem(mHBFont, aSize, aSize);
     uint32_t scale = FloatToFixed(aSize);
     hb_font_set_scale(mHBFont, scale, scale);
   }
 
   mMathVariantCache.glyphID = 0;
--- a/gfx/thebes/gfxSkipChars.h
+++ b/gfx/thebes/gfxSkipChars.h
@@ -200,17 +200,17 @@ public:
           mOriginalStringToSkipCharsOffset(aIterator.mOriginalStringToSkipCharsOffset)
     { }
 
     /**
      * The empty constructor creates an object that is useless until it is assigned.
      */
     gfxSkipCharsIterator()
         : mSkipChars(nullptr)
-    { }
+    , mOriginalStringOffset{}, mSkippedStringOffset{}, mCurrentRangeIndex{}, mOriginalStringToSkipCharsOffset{} { }
 
     /**
      * Return true if this iterator is properly initialized and usable.
      */
     bool IsInitialized()
     {
         return mSkipChars != nullptr;
     }
--- a/gfx/thebes/gfxUserFontSet.cpp
+++ b/gfx/thebes/gfxUserFontSet.cpp
@@ -900,17 +900,17 @@ void
 gfxUserFontEntry::GetUserFontSets(nsTArray<gfxUserFontSet*>& aResult)
 {
     aResult.Clear();
     aResult.AppendElement(mFontSet);
 }
 
 gfxUserFontSet::gfxUserFontSet()
     : mFontFamilies(4),
-      mLocalRulesUsed(false),
+      mRebuildGeneration{}, mLocalRulesUsed(false),
       mRebuildLocalRules(false),
       mDownloadCount(0),
       mDownloadSize(0)
 {
     IncrementGeneration(true);
     gfxPlatformFontList* fp = gfxPlatformFontList::PlatformFontList();
     if (fp) {
         fp->AddUserFontSet(this);
--- a/gfx/vr/gfxVR.h
+++ b/gfx/vr/gfxVR.h
@@ -258,17 +258,17 @@ struct VRDisplayInfo
   {
     return mLastSensorState[mFrameId % kVRMaxLatencyFrames];
   }
 };
 
 struct VRSubmitFrameResultInfo
 {
   VRSubmitFrameResultInfo()
-   : mFrameNum(0),
+   : /* FIXME: initialize mFormat */ /* FIXME: initialize mFormat */ mFrameNum(0),
      mWidth(0),
      mHeight(0)
   {}
 
   nsCString mBase64Image;
   SurfaceFormat mFormat;
   uint64_t mFrameNum;
   uint32_t mWidth;
--- a/gfx/vr/gfxVROpenVR.cpp
+++ b/gfx/vr/gfxVROpenVR.cpp
@@ -432,17 +432,17 @@ VRDisplayOpenVR::NotifyVSync()
 
   VRDisplayHost::NotifyVSync();
 }
 
 VRControllerOpenVR::VRControllerOpenVR(dom::GamepadHand aHand, uint32_t aDisplayID,
                                        uint32_t aNumButtons, uint32_t aNumTriggers,
                                        uint32_t aNumAxes, const nsCString& aId)
   : VRControllerHost(VRDeviceType::OpenVR, aHand, aDisplayID)
-  , mTrigger(aNumTriggers)
+  , mTrackedIndex{}, mTrigger(aNumTriggers)
   , mAxisMove(aNumAxes)
   , mVibrateThread(nullptr)
   , mIsVibrateStopped(false)
 {
   MOZ_COUNT_CTOR_INHERITED(VRControllerOpenVR, VRControllerHost);
 
   mAxisMove.SetLengthAndRetainStorage(aNumAxes);
   mTrigger.SetLengthAndRetainStorage(aNumTriggers);
--- a/gfx/webrender_bindings/RenderBufferTextureHost.cpp
+++ b/gfx/webrender_bindings/RenderBufferTextureHost.cpp
@@ -11,17 +11,17 @@
 
 namespace mozilla {
 namespace wr {
 
 RenderBufferTextureHost::RenderBufferTextureHost(uint8_t* aBuffer,
                                                  const layers::BufferDescriptor& aDescriptor)
   : mBuffer(aBuffer)
   , mDescriptor(aDescriptor)
-  , mLocked(false)
+  , mMap{}, mYMap{}, mCbMap{}, mCrMap{}, mLocked(false)
 {
   MOZ_COUNT_CTOR_INHERITED(RenderBufferTextureHost, RenderTextureHost);
 
   switch (mDescriptor.type()) {
     case layers::BufferDescriptor::TYCbCrDescriptor: {
       const layers::YCbCrDescriptor& ycbcr = mDescriptor.get_YCbCrDescriptor();
       mSize = ycbcr.ySize();
       mFormat = gfx::SurfaceFormat::YUV;
--- a/gfx/webrender_bindings/RenderSharedSurfaceTextureHost.cpp
+++ b/gfx/webrender_bindings/RenderSharedSurfaceTextureHost.cpp
@@ -9,17 +9,17 @@
 #include "mozilla/layers/ImageDataSerializer.h"
 #include "mozilla/layers/SourceSurfaceSharedData.h"
 
 namespace mozilla {
 namespace wr {
 
 RenderSharedSurfaceTextureHost::RenderSharedSurfaceTextureHost(gfx::SourceSurfaceSharedDataWrapper* aSurface)
   : mSurface(aSurface)
-  , mLocked(false)
+  , mMap{}, mLocked(false)
 {
   MOZ_COUNT_CTOR_INHERITED(RenderSharedSurfaceTextureHost, RenderTextureHost);
   MOZ_ASSERT(aSurface);
 }
 
 RenderSharedSurfaceTextureHost::~RenderSharedSurfaceTextureHost()
 {
   MOZ_COUNT_DTOR_INHERITED(RenderSharedSurfaceTextureHost, RenderTextureHost);
--- a/image/CopyOnWrite.h
+++ b/image/CopyOnWrite.h
@@ -25,21 +25,21 @@ namespace image {
 namespace detail {
 
 template <typename T>
 class CopyOnWriteValue final
 {
 public:
   NS_INLINE_DECL_REFCOUNTING(CopyOnWriteValue)
 
-  explicit CopyOnWriteValue(T* aValue) : mValue(aValue) { }
-  explicit CopyOnWriteValue(already_AddRefed<T>& aValue) : mValue(aValue) { }
-  explicit CopyOnWriteValue(already_AddRefed<T>&& aValue) : mValue(aValue) { }
-  explicit CopyOnWriteValue(const RefPtr<T>& aValue) : mValue(aValue) { }
-  explicit CopyOnWriteValue(RefPtr<T>&& aValue) : mValue(aValue) { }
+  explicit CopyOnWriteValue(T* aValue) : mValue(aValue) , mReaders{}, mWriter{false} { }
+  explicit CopyOnWriteValue(already_AddRefed<T>& aValue) : mValue(aValue) , mReaders{}, mWriter{false} { }
+  explicit CopyOnWriteValue(already_AddRefed<T>&& aValue) : mValue(aValue) , mReaders{}, mWriter{false} { }
+  explicit CopyOnWriteValue(const RefPtr<T>& aValue) : mValue(aValue) , mReaders{}, mWriter{false} { }
+  explicit CopyOnWriteValue(RefPtr<T>&& aValue) : mValue(aValue) , mReaders{}, mWriter{false} { }
 
   T* get() { return mValue.get(); }
   const T* get() const { return mValue.get(); }
 
   bool HasReaders() const { return mReaders > 0; }
   bool HasWriter() const { return mWriter; }
   bool HasUsers() const { return HasReaders() || HasWriter(); }
 
--- a/image/Downscaler.cpp
+++ b/image/Downscaler.cpp
@@ -19,17 +19,17 @@ namespace mozilla {
 using gfx::IntRect;
 
 namespace image {
 
 Downscaler::Downscaler(const nsIntSize& aTargetSize)
   : mTargetSize(aTargetSize)
   , mOutputBuffer(nullptr)
   , mWindowCapacity(0)
-  , mHasAlpha(true)
+  , mLinesInBuffer{}, mPrevInvalidatedLine{}, mCurrentOutLine{}, mCurrentInLine{}, mHasAlpha(true)
   , mFlipVertically(false)
 {
   MOZ_ASSERT(gfxPrefs::ImageDownscaleDuringDecodeEnabled(),
              "Downscaling even though downscale-during-decode is disabled?");
   MOZ_ASSERT(mTargetSize.width > 0 && mTargetSize.height > 0,
              "Invalid target size");
 }
 
--- a/image/RasterImage.cpp
+++ b/image/RasterImage.cpp
@@ -66,17 +66,17 @@ NS_IMPL_ISUPPORTS(RasterImage, imgIConta
                   imgIContainerDebug)
 #endif
 
 //******************************************************************************
 RasterImage::RasterImage(ImageURL* aURI /* = nullptr */) :
   ImageResource(aURI), // invoke superclass's constructor
   mSize(0,0),
   mLockCount(0),
-  mDecodeCount(0),
+  /* FIXME: initialize mDecoderType */ mDecodeCount(0),
 #ifdef DEBUG
   mFramesNotified(0),
 #endif
   mSourceBuffer(MakeNotNull<SourceBuffer*>()),
   mHasSize(false),
   mTransient(false),
   mSyncLoad(false),
   mDiscardable(false),
--- a/image/VectorImage.cpp
+++ b/image/VectorImage.cpp
@@ -336,17 +336,17 @@ NS_IMPL_ISUPPORTS(VectorImage,
 
 //------------------------------------------------------------------------------
 // Constructor / Destructor
 
 VectorImage::VectorImage(ImageURL* aURI /* = nullptr */) :
   ImageResource(aURI), // invoke superclass's constructor
   mLockCount(0),
   mIsInitialized(false),
-  mIsFullyLoaded(false),
+  mDiscardable{false}, mIsFullyLoaded(false),
   mIsDrawing(false),
   mHaveAnimations(false),
   mHasPendingInvalidation(false)
 { }
 
 VectorImage::~VectorImage()
 {
   CancelAllListeners();
--- a/image/decoders/nsGIFDecoder2.cpp
+++ b/image/decoders/nsGIFDecoder2.cpp
@@ -81,17 +81,17 @@ static const uint8_t PACKED_FIELDS_TABLE
 
 nsGIFDecoder2::nsGIFDecoder2(RasterImage* aImage)
   : Decoder(aImage)
   , mLexer(Transition::To(State::GIF_HEADER, GIF_HEADER_LEN),
            Transition::TerminateSuccess())
   , mOldColor(0)
   , mCurrentFrameIndex(-1)
   , mColorTablePos(0)
-  , mGIFOpen(false)
+  , mColorMask{'\0'}, mGIFOpen(false)
   , mSawTransparency(false)
 {
   // Clear out the structure, excluding the arrays.
   memset(&mGIFStruct, 0, sizeof(mGIFStruct));
 }
 
 nsGIFDecoder2::~nsGIFDecoder2()
 {
--- a/image/decoders/nsJPEGDecoder.cpp
+++ b/image/decoders/nsJPEGDecoder.cpp
@@ -74,18 +74,31 @@ METHODDEF(void) my_error_exit (j_common_
 
 nsJPEGDecoder::nsJPEGDecoder(RasterImage* aImage,
                              Decoder::DecodeStyle aDecodeStyle)
  : Decoder(aImage)
  , mLexer(Transition::ToUnbuffered(State::FINISHED_JPEG_DATA,
                                    State::JPEG_DATA,
                                    SIZE_MAX),
           Transition::TerminateSuccess())
- , mDecodeStyle(aDecodeStyle)
+ , mProfile{nullptr}, mProfileLength{}, mDecodeStyle(aDecodeStyle)
 {
+this->mErr.pub.error_exit = {nullptr};
+this->mErr.pub.emit_message = {nullptr};
+this->mErr.pub.output_message = {nullptr};
+this->mErr.pub.format_message = {nullptr};
+this->mErr.pub.reset_error_mgr = {nullptr};
+this->mErr.pub.msg_code = {};
+this->mErr.pub.trace_level = {};
+this->mErr.pub.num_warnings = {};
+this->mErr.pub.jpeg_message_table = {nullptr};
+this->mErr.pub.last_jpeg_message = {};
+this->mErr.pub.addon_message_table = {nullptr};
+this->mErr.pub.first_addon_message = {};
+this->mErr.pub.last_addon_message = {};
   mState = JPEG_HEADER;
   mReading = true;
   mImageData = nullptr;
 
   mBytesToSkip = 0;
   memset(&mInfo, 0, sizeof(jpeg_decompress_struct));
   memset(&mSourceMgr, 0, sizeof(mSourceMgr));
   mInfo.client_data = (void*)this;
--- a/image/encoders/bmp/nsBMPEncoder.cpp
+++ b/image/encoders/bmp/nsBMPEncoder.cpp
@@ -14,25 +14,28 @@
 
 using namespace mozilla;
 using namespace mozilla::image;
 using namespace mozilla::image::bmp;
 
 NS_IMPL_ISUPPORTS(nsBMPEncoder, imgIEncoder, nsIInputStream,
                   nsIAsyncInputStream)
 
-nsBMPEncoder::nsBMPEncoder() : mImageBufferStart(nullptr),
+nsBMPEncoder::nsBMPEncoder() : mBMPInfoHeader{}, mImageBufferStart(nullptr),
                                mImageBufferCurr(0),
                                mImageBufferSize(0),
                                mImageBufferReadPoint(0),
                                mFinished(false),
                                mCallback(nullptr),
                                mCallbackTarget(nullptr),
                                mNotifyThreshold(0)
 {
+this->mBMPFileHeader.filesize = {};
+this->mBMPFileHeader.reserved = {};
+this->mBMPFileHeader.dataoffset = {};
 }
 
 nsBMPEncoder::~nsBMPEncoder()
 {
   if (mImageBufferStart) {
     free(mImageBufferStart);
     mImageBufferStart = nullptr;
     mImageBufferCurr = nullptr;
--- a/image/encoders/ico/nsICOEncoder.cpp
+++ b/image/encoders/ico/nsICOEncoder.cpp
@@ -12,17 +12,17 @@
 #include "nsTArray.h"
 
 using namespace mozilla;
 using namespace mozilla::image;
 
 NS_IMPL_ISUPPORTS(nsICOEncoder, imgIEncoder, nsIInputStream,
                   nsIAsyncInputStream)
 
-nsICOEncoder::nsICOEncoder() : mImageBufferStart(nullptr),
+nsICOEncoder::nsICOEncoder() : mICOFileHeader{}, mICODirEntry{}, mImageBufferStart(nullptr),
                                mImageBufferCurr(0),
                                mImageBufferSize(0),
                                mImageBufferReadPoint(0),
                                mFinished(false),
                                mUsePNG(true),
                                mNotifyThreshold(0)
 {
 }
--- a/image/imgFrame.cpp
+++ b/image/imgFrame.cpp
@@ -194,17 +194,17 @@ static bool AllowedImageAndFrameDimensio
 
 imgFrame::imgFrame()
   : mMonitor("imgFrame")
   , mDecoded(0, 0, 0, 0)
   , mLockCount(0)
   , mTimeout(FrameTimeout::FromRawMilliseconds(100))
   , mDisposalMethod(DisposalMethod::NOT_SPECIFIED)
   , mBlendMethod(BlendMethod::OVER)
-  , mAborted(false)
+  , /* FIXME: initialize mFormat */ mAborted(false)
   , mFinished(false)
   , mOptimizable(false)
   , mPalettedImageData(nullptr)
   , mPaletteDepth(0)
   , mNonPremult(false)
   , mCompositingFailed(false)
 {
 }
--- a/image/imgFrame.h
+++ b/image/imgFrame.h
@@ -274,17 +274,17 @@ private: // methods
   {
     return mPaletteDepth ? (size_t(1) << mPaletteDepth) * sizeof(uint32_t)
                          : 0;
   }
 
   struct SurfaceWithFormat {
     RefPtr<gfxDrawable> mDrawable;
     SurfaceFormat mFormat;
-    SurfaceWithFormat() { }
+    SurfaceWithFormat()  /* FIXME: initialize mFormat */  { }
     SurfaceWithFormat(gfxDrawable* aDrawable, SurfaceFormat aFormat)
       : mDrawable(aDrawable), mFormat(aFormat)
     { }
     bool IsValid() { return !!mDrawable; }
   };
 
   SurfaceWithFormat SurfaceForDrawing(bool               aDoPartialDecode,
                                       bool               aDoTile,
--- a/intl/chardet/nsCyrillicDetector.cpp
+++ b/intl/chardet/nsCyrillicDetector.cpp
@@ -125,17 +125,17 @@ void nsCyrXPCOMDetector::Report(const ch
   mObserver->Notify(aCharset, eBestAnswer);
 }
 
 //---------------------------------------------------------------------
 nsCyrXPCOMStringDetector:: nsCyrXPCOMStringDetector(uint8_t aItems,
                       const uint8_t ** aCyrillicClass,
                       const char **aCharsets)
 	     : nsCyrillicDetector(aItems, aCyrillicClass, aCharsets)
-{
+, mResult{nullptr} {
 }
 
 //---------------------------------------------------------------------
 nsCyrXPCOMStringDetector::~nsCyrXPCOMStringDetector()
 {
 }
 
 //---------------------------------------------------------------------
--- a/intl/icu/source/common/unicode/bytestrie.h
+++ b/intl/icu/source/common/unicode/bytestrie.h
@@ -100,17 +100,17 @@ public:
      * @stable ICU 4.8
      */
     class State : public UMemory {
     public:
         /**
          * Constructs an empty State.
          * @stable ICU 4.8
          */
-        State() { bytes=NULL; }
+        State()  : pos{nullptr}, remainingMatchLength{} { bytes=NULL; }
     private:
         friend class BytesTrie;
 
         const uint8_t *bytes;
         const uint8_t *pos;
         int32_t remainingMatchLength;
     };
 
--- a/intl/icu/source/common/unicode/stringtriebuilder.h
+++ b/intl/icu/source/common/unicode/stringtriebuilder.h
@@ -317,17 +317,17 @@ protected:
     };
 
 #ifndef U_HIDE_INTERNAL_API
     /**
      * @internal 
      */
     class BranchNode : public Node {
     public:
-        BranchNode(int32_t initialHash) : Node(initialHash) {}
+        BranchNode(int32_t initialHash) : Node(initialHash) , firstEdgeNumber{} {}
     protected:
         int32_t firstEdgeNumber;
     };
 
     /**
      * @internal 
      */
     class ListBranchNode : public BranchNode {
--- a/intl/icu/source/common/unicode/ucharstrie.h
+++ b/intl/icu/source/common/unicode/ucharstrie.h
@@ -100,17 +100,17 @@ public:
      * @stable ICU 4.8
      */
     class State : public UMemory {
     public:
         /**
          * Constructs an empty State.
          * @stable ICU 4.8
          */
-        State() { uchars=NULL; }
+        State()  : pos{nullptr}, remainingMatchLength{} { uchars=NULL; }
     private:
         friend class UCharsTrie;
 
         const char16_t *uchars;
         const char16_t *pos;
         int32_t remainingMatchLength;
     };
 
--- a/intl/icu/source/common/unicode/unistr.h
+++ b/intl/icu/source/common/unicode/unistr.h
@@ -3903,28 +3903,32 @@ UnicodeString::getArrayStart() const {
 }
 
 //========================================
 // Default constructor
 //========================================
 
 inline
 UnicodeString::UnicodeString() {
+this->fUnion.fFields = {};
   fUnion.fStackFields.fLengthAndFlags=kShortString;
 }
 
 inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/) {
+this->fUnion.fFields = {};
   fUnion.fStackFields.fLengthAndFlags=kShortString;
 }
 
 inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/, int32_t /*length*/) {
+this->fUnion.fFields = {};
   fUnion.fStackFields.fLengthAndFlags=kShortString;
 }
 
 inline UnicodeString::UnicodeString(std::nullptr_t /*buffer*/, int32_t /*buffLength*/, int32_t /*buffCapacity*/) {
+this->fUnion.fFields = {};
   fUnion.fStackFields.fLengthAndFlags=kShortString;
 }
 
 //========================================
 // Read-only implementation methods
 //========================================
 inline UBool
 UnicodeString::hasShortLength() const {
--- a/ipc/glue/ProtocolUtils.cpp
+++ b/ipc/glue/ProtocolUtils.cpp
@@ -578,17 +578,17 @@ IProtocol::GetActorEventTargetInternal(I
 }
 
 IToplevelProtocol::IToplevelProtocol(ProtocolId aProtoId, Side aSide)
  : IProtocol(aSide),
    mProtocolId(aProtoId),
    mOtherPid(mozilla::ipc::kInvalidProcessId),
    mLastRouteId(aSide == ParentSide ? kFreedActorId : kNullActorId),
    mLastShmemId(aSide == ParentSide ? kFreedActorId : kNullActorId),
-   mEventTargetMutex("ProtocolEventTargetMutex")
+   mIsMainThreadProtocol{false}, mEventTargetMutex("ProtocolEventTargetMutex")
 {
 }
 
 IToplevelProtocol::~IToplevelProtocol()
 {
   if (mTrans) {
     RefPtr<DeleteTask<Transport>> task = new DeleteTask<Transport>(mTrans.release());
     XRE_GetIOMessageLoop()->PostTask(task.forget());
--- a/ipc/glue/ProtocolUtils.h
+++ b/ipc/glue/ProtocolUtils.h
@@ -601,17 +601,17 @@ void AnnotateSystemError();
 template<class PFooSide>
 class Endpoint
 {
 public:
     typedef base::ProcessId ProcessId;
 
     Endpoint()
       : mValid(false)
-    {}
+     /* FIXME: initialize mMode */ , /* FIXME: initialize mMode */ mMyPid{}, mOtherPid{} {}
 
     Endpoint(const PrivateIPDLInterface&,
              mozilla::ipc::Transport::Mode aMode,
              TransportDescriptor aTransport,
              ProcessId aMyPid,
              ProcessId aOtherPid)
       : mValid(true)
       , mMode(aMode)
--- a/js/public/Proxy.h
+++ b/js/public/Proxy.h
@@ -578,17 +578,17 @@ class JS_FRIEND_API(AutoEnterPolicy)
 {
   public:
     typedef BaseProxyHandler::Action Action;
     AutoEnterPolicy(JSContext* cx, const BaseProxyHandler* handler,
                     HandleObject wrapper, HandleId id, Action act, bool mayThrow)
 #ifdef JS_DEBUG
         : context(nullptr)
 #endif
-    {
+     : rv{false} {
         allow = handler->hasSecurityPolicy() ? handler->enter(cx, wrapper, id, act, mayThrow, &rv)
                                              : true;
         recordEnter(cx, wrapper, id, act);
         // We want to throw an exception if all of the following are true:
         // * The policy disallowed access.
         // * The policy set rv to false, indicating that we should throw.
         // * The caller did not instruct us to ignore exceptions.
         // * The policy did not throw itself.
@@ -602,17 +602,17 @@ class JS_FRIEND_API(AutoEnterPolicy)
 
   protected:
     // no-op constructor for subclass
     AutoEnterPolicy()
 #ifdef JS_DEBUG
         : context(nullptr)
         , enteredAction(BaseProxyHandler::NONE)
 #endif
-        {}
+         : allow{false}, rv{false} {}
     void reportErrorIfExceptionIsNotPending(JSContext* cx, jsid id);
     bool allow;
     bool rv;
 
 #ifdef JS_DEBUG
     JSContext* context;
     mozilla::Maybe<HandleObject> enteredProxy;
     mozilla::Maybe<HandleId> enteredId;
--- a/js/public/RootingAPI.h
+++ b/js/public/RootingAPI.h
@@ -538,17 +538,17 @@ class MOZ_NONHEAP_CLASS Handle : public 
     inline
     MOZ_IMPLICIT Handle(MutableHandle<S>& root,
                         typename mozilla::EnableIf<mozilla::IsConvertible<S, T>::value, int>::Type dummy = 0);
 
     DECLARE_POINTER_CONSTREF_OPS(T);
     DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
 
   private:
-    Handle() {}
+    Handle()  : ptr{nullptr} {}
     DELETE_ASSIGNMENT_OPS(Handle, T);
 
     enum Disambiguator { DeliberatelyChoosingThisOverload = 42 };
     enum CallerIdentity { ImUsingThisOnlyInFromFromMarkedLocation = 17 };
     constexpr Handle(const T* p, Disambiguator, CallerIdentity) : ptr(p) {}
 
     const T* ptr;
 };
@@ -597,17 +597,17 @@ class MOZ_STACK_CLASS MutableHandle : pu
         return h;
     }
 
     DECLARE_POINTER_CONSTREF_OPS(T);
     DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
     DECLARE_NONPOINTER_MUTABLE_ACCESSOR_METHODS(*ptr);
 
   private:
-    MutableHandle() {}
+    MutableHandle()  : ptr{nullptr} {}
     DELETE_ASSIGNMENT_OPS(MutableHandle, T);
 
     T* ptr;
 };
 
 } /* namespace JS */
 
 namespace js {
--- a/js/src/ds/OrderedHashTable.h
+++ b/js/src/ds/OrderedHashTable.h
@@ -100,17 +100,17 @@ class OrderedHashTable
         }
     }
 
   public:
     OrderedHashTable(AllocPolicy& ap, mozilla::HashCodeScrambler hcs)
       : hashTable(nullptr),
         data(nullptr),
         dataLength(0),
-        ranges(nullptr),
+        dataCapacity{}, liveCount{}, hashShift{}, ranges(nullptr),
         nurseryRanges(nullptr),
         alloc(ap),
         hcs(hcs)
     {}
 
     MOZ_MUST_USE bool init() {
         MOZ_ASSERT(!hashTable, "init must be called at most once");
 
--- a/js/src/frontend/BytecodeEmitter.cpp
+++ b/js/src/frontend/BytecodeEmitter.cpp
@@ -1566,17 +1566,17 @@ class MOZ_STACK_CLASS TryEmitter
     TryEmitter(BytecodeEmitter* bce, Kind kind, ShouldUseRetVal retValKind = UseRetVal,
                ShouldUseControl controlKind = UseControl)
       : bce_(bce),
         kind_(kind),
         retValKind_(retValKind),
         depth_(0),
         noteIndex_(0),
         tryStart_(0),
-        state_(Start)
+        tryEnd_{}, state_(Start)
     {
         if (controlKind == UseControl)
             controlInfo_.emplace(bce_, hasFinally() ? StatementKind::Finally : StatementKind::Try);
         finallyStart_.offset = 0;
     }
 
     bool emitJumpOverCatchAndFinally() {
         if (!bce_->emitJump(JSOP_GOTO, &catchAndFinallyJump_))
--- a/js/src/frontend/NameCollections.h
+++ b/js/src/frontend/NameCollections.h
@@ -108,23 +108,22 @@ struct RecyclableAtomMapValueWrapper
         uint64_t dummy;
     };
 
     static void assertInvariant() {
         static_assert(sizeof(Wrapped) <= sizeof(uint64_t),
                       "Can only recycle atom maps with values smaller than uint64");
     }
 
-    RecyclableAtomMapValueWrapper() {
+    RecyclableAtomMapValueWrapper()  : dummy{} {
         assertInvariant();
     }
 
     MOZ_IMPLICIT RecyclableAtomMapValueWrapper(Wrapped w)
-      : wrapped(w)
-    {
+      : wrapped(w) {
         assertInvariant();
     }
 
     MOZ_IMPLICIT operator Wrapped&() {
         return wrapped;
     }
 
     MOZ_IMPLICIT operator Wrapped&() const {
--- a/js/src/frontend/TokenStream.h
+++ b/js/src/frontend/TokenStream.h
@@ -36,17 +36,17 @@ struct KeywordInfo;
 
 namespace js {
 namespace frontend {
 
 struct TokenPos {
     uint32_t    begin;  // Offset of the token's first char.
     uint32_t    end;    // Offset of 1 past the token's last char.
 
-    TokenPos() {}
+    TokenPos()  : begin{}, end{} {}
     TokenPos(uint32_t begin, uint32_t end) : begin(begin), end(end) {}
 
     // Return a TokenPos that covers left, right, and anything in between.
     static TokenPos box(const TokenPos& left, const TokenPos& right) {
         MOZ_ASSERT(left.begin <= left.end);
         MOZ_ASSERT(left.end <= right.begin);
         MOZ_ASSERT(right.begin <= right.end);
         return TokenPos(left.begin, right.end);
@@ -907,17 +907,17 @@ class MOZ_STACK_CLASS TokenStream final 
       public:
         // The Token fields may contain pointers to atoms, so for correct
         // rooting we must ensure collection of atoms is disabled while objects
         // of this class are live.  Do this by requiring a dummy AutoKeepAtoms
         // reference in the constructor.
         //
         // This class is explicity ignored by the analysis, so don't add any
         // more pointers to GC things here!
-        explicit Position(AutoKeepAtoms&) { }
+        explicit Position(AutoKeepAtoms&)  : buf{nullptr}, lineno{}, linebase{}, prevLinebase{}, lookahead{} { }
       private:
         Position(const Position&) = delete;
         friend class TokenStream;
         const CharT* buf;
         Flags flags;
         unsigned lineno;
         size_t linebase;
         size_t prevLinebase;
--- a/js/src/gc/Heap.h
+++ b/js/src/gc/Heap.h
@@ -507,22 +507,22 @@ FreeSpan::checkRange(uintptr_t first, ui
  * The tail of the chunk info is shared between all chunks in the system, both
  * nursery and tenured. This structure is locatable from any GC pointer by
  * aligning to 1MiB.
  */
 struct ChunkTrailer
 {
     // Construct a Nursery ChunkTrailer.
     ChunkTrailer(JSRuntime* rt, StoreBuffer* sb)
-      : location(ChunkLocation::Nursery), storeBuffer(sb), runtime(rt)
+      : location(ChunkLocation::Nursery), padding{}, storeBuffer(sb), runtime(rt)
     {}
 
     // Construct a Tenured heap ChunkTrailer.
     explicit ChunkTrailer(JSRuntime* rt)
-      : location(ChunkLocation::TenuredHeap), storeBuffer(nullptr), runtime(rt)
+      : location(ChunkLocation::TenuredHeap), padding{}, storeBuffer(nullptr), runtime(rt)
     {}
 
   public:
     // The index of the chunk in the nursery, or LocationTenuredHeap.
     ChunkLocation   location;
     uint32_t        padding;
 
     // The store buffer for pointers from tenured things to things in this
--- a/js/src/gc/Nursery.cpp
+++ b/js/src/gc/Nursery.cpp
@@ -119,17 +119,17 @@ js::Nursery::Nursery(JSRuntime* rt)
   , chunkCountLimit_(0)
   , timeInChunkAlloc_(0)
   , previousPromotionRate_(0)
   , profileThreshold_(0)
   , enableProfiling_(false)
   , reportTenurings_(0)
   , minorGCTriggerReason_(JS::gcreason::NO_REASON)
   , minorGcCount_(0)
-  , freeMallocedBuffersTask(nullptr)
+  , previousGC{}, freeMallocedBuffersTask(nullptr)
 #ifdef JS_GC_ZEAL
   , lastCanary_(nullptr)
 #endif
 {}
 
 bool
 js::Nursery::init(uint32_t maxNurseryBytes, AutoLockGCBgAlloc& lock)
 {
--- a/js/src/gc/Rooting.h
+++ b/js/src/gc/Rooting.h
@@ -128,17 +128,17 @@ class FakeMutableHandle : public js::Mut
         *ptr = v;
     }
 
     DECLARE_POINTER_CONSTREF_OPS(T);
     DECLARE_NONPOINTER_ACCESSOR_METHODS(*ptr);
     DECLARE_NONPOINTER_MUTABLE_ACCESSOR_METHODS(*ptr);
 
   private:
-    FakeMutableHandle() {}
+    FakeMutableHandle()  : ptr{nullptr} {}
     DELETE_ASSIGNMENT_OPS(FakeMutableHandle, T);
 
     T* ptr;
 };
 
 template <typename T> class MaybeRooted<T, NoGC>
 {
   public:
--- a/js/src/gc/Statistics.cpp
+++ b/js/src/gc/Statistics.cpp
@@ -678,22 +678,22 @@ Statistics::formatJsonPhaseTimes(const P
         if (!ownTime.IsZero())
             json.property(phases[phase].path, ownTime, JSONPrinter::MILLISECONDS);
     }
 }
 
 Statistics::Statistics(JSRuntime* rt)
   : runtime(rt),
     fp(nullptr),
-    nonincrementalReason_(gc::AbortReason::None),
+    /* FIXME: initialize gckind */ nonincrementalReason_(gc::AbortReason::None),
     preBytes(0),
     thresholdTriggered(false),
     triggerAmount(0.0),
     triggerThreshold(0.0),
-    maxPauseInInterval(0),
+    startingMinorGCNumber{}, startingMajorGCNumber{}, startingSliceNumber{}, maxPauseInInterval(0),
     sliceCallback(nullptr),
     nurseryCollectionCallback(nullptr),
     aborted(false),
     enableProfiling_(false),
     sliceCount_(0)
 {
     for (auto& count : counts)
         count = 0;
--- a/js/src/gc/Statistics.h
+++ b/js/src/gc/Statistics.h
@@ -223,17 +223,17 @@ struct Statistics
         SliceData(SliceBudget budget, JS::gcreason::Reason reason,
                   TimeStamp start, size_t startFaults, gc::State initialState)
           : budget(budget), reason(reason),
             initialState(initialState),
             finalState(gc::State::NotActive),
             resetReason(gc::AbortReason::None),
             start(start),
             startFaults(startFaults)
-        {}
+        , endFaults{} {}
 
         SliceBudget budget;
         JS::gcreason::Reason reason;
         gc::State initialState, finalState;
         gc::AbortReason resetReason;
         TimeStamp start, end;
         size_t startFaults, endFaults;
         PhaseTimeTable phaseTimes;
--- a/js/src/irregexp/RegExpEngine.cpp
+++ b/js/src/irregexp/RegExpEngine.cpp
@@ -1644,17 +1644,17 @@ IsLatin1Equivalent(char16_t c, RegExpCom
 }
 
 // Attempts to compile the regexp using an Irregexp code generator.  Returns
 // a fixed array or a null handle depending on whether it succeeded.
 RegExpCompiler::RegExpCompiler(JSContext* cx, LifoAlloc* alloc, int capture_count,
                                bool ignore_case, bool latin1, bool match_only, bool unicode)
   : next_register_(2 * (capture_count + 1)),
     recursion_depth_(0),
-    ignore_case_(ignore_case),
+    macro_assembler_{nullptr}, ignore_case_(ignore_case),
     latin1_(latin1),
     match_only_(match_only),
     unicode_(unicode),
     reg_exp_too_big_(false),
     current_expansion_factor_(1),
     frequency_collator_(),
     cx_(cx),
     alloc_(alloc)
--- a/js/src/irregexp/RegExpEngine.h
+++ b/js/src/irregexp/RegExpEngine.h
@@ -682,17 +682,17 @@ class ActionNode : public SeqRegExpNode
         BEGIN_SUBMATCH,
         POSITIVE_SUBMATCH_SUCCESS,
         EMPTY_MATCH_CHECK,
         CLEAR_CAPTURES
     };
 
     ActionNode(ActionType action_type, RegExpNode* on_success)
       : SeqRegExpNode(on_success),
-        action_type_(action_type)
+        data_{}, action_type_(action_type)
     {}
 
     static ActionNode* SetRegister(int reg, int val, RegExpNode* on_success);
     static ActionNode* IncrementRegister(int reg, RegExpNode* on_success);
     static ActionNode* StorePosition(int reg,
                                      bool is_capture,
                                      RegExpNode* on_success);
     static ActionNode* ClearCaptures(Interval range, RegExpNode* on_success);
--- a/js/src/jit/BacktrackingAllocator.h
+++ b/js/src/jit/BacktrackingAllocator.h
@@ -526,17 +526,17 @@ class VirtualRegister
     // be introduced before the definition that relaxes the policy.
     bool mustCopyInput_;
 
     void operator=(const VirtualRegister&) = delete;
     VirtualRegister(const VirtualRegister&) = delete;
 
   public:
     explicit VirtualRegister()
-    {
+     : ins_{nullptr}, def_{nullptr}, isTemp_{false}, usedByPhi_{false}, mustCopyInput_{false} {
         // Note: This class is zeroed before it is constructed.
     }
 
     void init(LNode* ins, LDefinition* def, bool isTemp) {
         MOZ_ASSERT(!ins_);
         ins_ = ins;
         def_ = def;
         isTemp_ = isTemp;
--- a/js/src/jit/BaselineFrameInfo.h
+++ b/js/src/jit/BaselineFrameInfo.h
@@ -78,17 +78,17 @@ class StackValue
         struct {
             uint32_t slot;
         } arg;
     } data;
 
     JSValueType knownType_;
 
   public:
-    StackValue() {
+    StackValue()  /* FIXME: initialize kind_ */  /* FIXME: initialize knownType_ */  {
         reset();
     }
 
     Kind kind() const {
         return kind_;
     }
     bool hasKnownType() const {
         return knownType_ != JSVAL_TYPE_UNKNOWN;
--- a/js/src/jit/BaselineJIT.cpp
+++ b/js/src/jit/BaselineJIT.cpp
@@ -74,17 +74,17 @@ BaselineScript::BaselineScript(uint32_t 
 # ifdef DEBUG
     traceLoggerScriptsEnabled_(false),
     traceLoggerEngineEnabled_(false),
 # endif
     traceLoggerScriptEvent_(),
 #endif
     postDebugPrologueOffset_(postDebugPrologueOffset),
     flags_(0),
-    inlinedBytecodeLength_(0),
+    icEntriesOffset_{}, icEntries_{}, pcMappingIndexOffset_{}, pcMappingIndexEntries_{}, pcMappingOffset_{}, pcMappingSize_{}, bytecodeTypeMapOffset_{}, yieldEntriesOffset_{}, traceLoggerToggleOffsetsOffset_{}, numTraceLoggerToggleOffsets_{}, inlinedBytecodeLength_(0),
     maxInliningDepth_(UINT8_MAX),
     pendingBuilder_(nullptr),
     controlFlowGraph_(nullptr)
 { }
 
 static bool
 CheckFrame(InterpreterFrame* fp)
 {
--- a/js/src/jit/BytecodeAnalysis.cpp
+++ b/js/src/jit/BytecodeAnalysis.cpp
@@ -13,17 +13,17 @@
 
 using namespace js;
 using namespace js::jit;
 
 BytecodeAnalysis::BytecodeAnalysis(TempAllocator& alloc, JSScript* script)
   : script_(script),
     infos_(alloc),
     usesEnvironmentChain_(false)
-{
+, hasTryFinally_{false} {
 }
 
 // Bytecode range containing only catch or finally code.
 struct CatchFinallyRange
 {
     uint32_t start; // Inclusive.
     uint32_t end;   // Exclusive.
 
--- a/js/src/jit/CodeGenerator.cpp
+++ b/js/src/jit/CodeGenerator.cpp
@@ -607,17 +607,17 @@ class OutOfLineTestObject : public OutOf
     bool initialized() { return ifEmulatesUndefined_ != nullptr; }
 #endif
 
   public:
     OutOfLineTestObject()
 #ifdef DEBUG
       : ifEmulatesUndefined_(nullptr), ifDoesntEmulateUndefined_(nullptr)
 #endif
-    { }
+     : ifEmulatesUndefined_{nullptr}, ifDoesntEmulateUndefined_{nullptr} { }
 
     void accept(CodeGenerator* codegen) final override {
         MOZ_ASSERT(initialized());
         codegen->emitOOLTestObject(objreg_, ifEmulatesUndefined_, ifDoesntEmulateUndefined_,
                                    scratch_);
     }
 
     // Specify the register where the object to be tested is found, labels to
--- a/js/src/jit/CompileInfo.h
+++ b/js/src/jit/CompileInfo.h
@@ -248,17 +248,17 @@ class CompileInfo
         // If the script uses an environment in body, the environment chain
         // will need to be observable.
         needsBodyEnvironmentObject_ = script->needsBodyEnvironment();
     }
 
     explicit CompileInfo(unsigned nlocals)
       : script_(nullptr), fun_(nullptr), osrPc_(nullptr),
         analysisMode_(Analysis_None), scriptNeedsArgsObj_(false),
-        mayReadFrameArgsDirectly_(false), inlineScriptTree_(nullptr),
+        hadOverflowBailout_{false}, mayReadFrameArgsDirectly_(false), inlineScriptTree_(nullptr),
         needsBodyEnvironmentObject_(false)
     {
         nimplicit_ = 0;
         nargs_ = 0;
         nlocals_ = nlocals;
         nstack_ = 1;  /* For FunctionCompiler::pushPhiInput/popPhiOutput */
         nslots_ = nlocals_ + nstack_;
     }
--- a/js/src/jit/Ion.cpp
+++ b/js/src/jit/Ion.cpp
@@ -858,31 +858,31 @@ IonScript::IonScript()
     runtimeSize_(0),
     icIndex_(0),
     icEntries_(0),
     safepointIndexOffset_(0),
     safepointIndexEntries_(0),
     safepointsStart_(0),
     safepointsSize_(0),
     frameSlots_(0),
-    frameSize_(0),
+    argumentSlots_{}, frameSize_(0),
     bailoutTable_(0),
     bailoutEntries_(0),
     osiIndexOffset_(0),
     osiIndexEntries_(0),
     snapshots_(0),
     snapshotsListSize_(0),
     snapshotsRVATableSize_(0),
-    constantTable_(0),
+    recovers_{}, recoversSize_{}, constantTable_(0),
     constantEntries_(0),
     backedgeList_(0),
     backedgeEntries_(0),
-    invalidationCount_(0),
+    sharedStubList_{}, sharedStubEntries_{}, invalidationCount_(0),
     recompileInfo_(),
-    osrPcMismatchCounter_(0),
+    /* FIXME: initialize optimizationLevel_ */ osrPcMismatchCounter_(0),
     fallbackStubSpace_()
 {
 }
 
 IonScript*
 IonScript::New(JSContext* cx, RecompileInfo recompileInfo,
                uint32_t frameSlots, uint32_t argumentSlots, uint32_t frameSize,
                size_t snapshotsListSize, size_t snapshotsRVATableSize,
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -131,17 +131,17 @@ IonBuilder::IonBuilder(JSContext* analys
     analysisContext(analysisContext),
     baselineFrame_(baselineFrame),
     constraints_(constraints),
     thisTypes(nullptr),
     argTypes(nullptr),
     typeArray(nullptr),
     typeArrayHint(0),
     bytecodeTypeMap(nullptr),
-    loopDepth_(loopDepth),
+    current{nullptr}, loopDepth_(loopDepth),
     blockWorklist(*temp),
     cfgCurrent(nullptr),
     cfg(nullptr),
     trackedOptimizationSites_(*temp),
     lexicalCheck_(nullptr),
     callerResumePoint_(nullptr),
     callerBuilder_(nullptr),
     iterators_(*temp),
--- a/js/src/jit/IonCode.h
+++ b/js/src/jit/IonCode.h
@@ -48,17 +48,17 @@ class JitCode : public gc::TenuredCell
     bool invalidated_ : 1;            // Whether the code object has been invalidated.
                                       // This is necessary to prevent GC tracing.
     bool hasBytecodeMap_ : 1;         // Whether the code object has been registered with
                                       // native=>bytecode mapping tables.
 
     JitCode()
       : code_(nullptr),
         pool_(nullptr)
-    { }
+    , bufferSize_{}, insnSize_{}, dataSize_{}, jumpRelocTableBytes_{}, dataRelocTableBytes_{}, headerSize_{'\0'}, kind_{'\0'}, invalidated_{false}, hasBytecodeMap_{false} { }
     JitCode(uint8_t* code, uint32_t bufferSize, uint32_t headerSize, ExecutablePool* pool,
             CodeKind kind)
       : code_(code),
         pool_(pool),
         bufferSize_(bufferSize),
         insnSize_(0),
         dataSize_(0),
         jumpRelocTableBytes_(0),
--- a/js/src/jit/IonControlFlow.cpp
+++ b/js/src/jit/IonControlFlow.cpp
@@ -10,17 +10,17 @@
 
 using namespace js;
 using namespace js::jit;
 using mozilla::DebugOnly;
 
 ControlFlowGenerator::ControlFlowGenerator(TempAllocator& temp, JSScript* script)
   : script(script),
     current(nullptr),
-    alloc_(temp),
+    pc{nullptr}, alloc_(temp),
     blocks_(temp),
     cfgStack_(temp),
     loops_(temp),
     switches_(temp),
     labels_(temp),
     aborted_(false),
     checkedTryFinally_(false)
 { }
--- a/js/src/jit/IonOptimizationLevels.h
+++ b/js/src/jit/IonOptimizationLevels.h
@@ -146,17 +146,17 @@ class OptimizationInfo
     double inliningWarmUpThresholdFactor_;
 
     // How many invocations or loop iterations are needed before a function
     // is hot enough to recompile the outerScript to inline that function,
     // as a multiplication of inliningWarmUpThreshold.
     uint32_t inliningRecompileThresholdFactor_;
 
     OptimizationInfo()
-    { }
+     /* FIXME: initialize level_ */  : eaa_{false}, ama_{false}, edgeCaseAnalysis_{false}, eliminateRedundantChecks_{false}, inlineInterpreted_{false}, inlineNative_{false}, eagerSimdUnbox_{false}, gvn_{false}, licm_{false}, rangeAnalysis_{false}, loopUnrolling_{false}, reordering_{false}, autoTruncate_{false}, sincos_{false}, sink_{false} /* FIXME: initialize registerAllocator_ */ , inlineMaxBytecodePerCallSiteHelperThread_{}, inlineMaxBytecodePerCallSiteActiveCooperatingThread_{}, inlineMaxCalleeInlinedBytecodeLength_{}, inlineMaxTotalBytecodeLength_{}, inliningMaxCallerBytecodeLength_{}, maxInlineDepth_{}, scalarReplacement_{false}, smallFunctionMaxInlineDepth_{}, compilerWarmUpThreshold_{}, compilerSmallFunctionWarmUpThreshold_{}, inliningWarmUpThresholdFactor_{0.0}, inliningRecompileThresholdFactor_{} { }
 
     void initNormalOptimizationInfo();
     void initWasmOptimizationInfo();
 
     OptimizationLevel level() const {
         return level_;
     }
 
--- a/js/src/jit/JitCompartment.h
+++ b/js/src/jit/JitCompartment.h
@@ -25,19 +25,19 @@
 namespace js {
 namespace jit {
 
 class FrameSizeClass;
 
 struct EnterJitData
 {
     explicit EnterJitData(JSContext* cx)
-      : envChain(cx),
+      : jitcode{nullptr}, osrFrame{nullptr}, calleeToken{nullptr}, maxArgv{nullptr}, maxArgc{}, numActualArgs{}, osrNumStackValues{}, envChain(cx),
         result(cx)
-    {}
+    , constructing{false} {}
 
     uint8_t* jitcode;
     InterpreterFrame* osrFrame;
 
     void* calleeToken;
 
     Value* maxArgv;
     unsigned maxArgc;
--- a/js/src/jit/JitFrames.cpp
+++ b/js/src/jit/JitFrames.cpp
@@ -1517,17 +1517,17 @@ SnapshotIterator::SnapshotIterator(const
     instructionResults_(nullptr)
 {
 }
 
 SnapshotIterator::SnapshotIterator()
   : snapshot_(nullptr, 0, 0, 0),
     recover_(snapshot_, nullptr, 0),
     fp_(nullptr),
-    ionScript_(nullptr),
+    machine_{nullptr}, ionScript_(nullptr),
     instructionResults_(nullptr)
 {
 }
 
 int32_t
 SnapshotIterator::readOuterNumActualArgs() const
 {
     return fp_->numActualArgs();
@@ -2034,28 +2034,28 @@ SnapshotIterator::maybeReadAllocByIndex(
 
     return s;
 }
 
 InlineFrameIterator::InlineFrameIterator(JSContext* cx, const JSJitFrameIter* iter)
   : calleeTemplate_(cx),
     calleeRVA_(),
     script_(cx)
-{
+, pc_{nullptr}, numActualArgs_{} {
     resetOn(iter);
 }
 
 InlineFrameIterator::InlineFrameIterator(JSContext* cx, const InlineFrameIterator* iter)
   : frame_(iter ? iter->frame_ : nullptr),
     framesRead_(0),
     frameCount_(iter ? iter->frameCount_ : UINT32_MAX),
     calleeTemplate_(cx),
     calleeRVA_(),
     script_(cx)
-{
+, pc_{nullptr}, numActualArgs_{} {
     if (frame_) {
         machine_ = iter->machine_;
         start_ = SnapshotIterator(*frame_, &machine_);
 
         // findNextFrame will iterate to the next frame and init. everything.
         // Therefore to settle on the same frame, we report one frame less readed.
         framesRead_ = iter->framesRead_ - 1;
         findNextFrame();
--- a/js/src/jit/JitFrames.h
+++ b/js/src/jit/JitFrames.h
@@ -227,17 +227,17 @@ class FrameSizeClass
 {
     uint32_t class_;
 
     explicit FrameSizeClass(uint32_t class_) : class_(class_)
     { }
 
   public:
     FrameSizeClass()
-    { }
+     : class_{} { }
 
     static FrameSizeClass None() {
         return FrameSizeClass(NO_FRAME_SIZE_CLASS_ID);
     }
     static FrameSizeClass FromClass(uint32_t class_) {
         return FrameSizeClass(class_);
     }
 
--- a/js/src/jit/JitcodeMap.h
+++ b/js/src/jit/JitcodeMap.h
@@ -560,17 +560,17 @@ class JitcodeGlobalEntry
         // When doing queries on the SplayTree for particular addresses,
         // the query addresses are representd using a QueryEntry.
         QueryEntry query_;
     };
 
   public:
     JitcodeGlobalEntry()
       : tower_(nullptr)
-    {
+    , base_{} {
         base_.init();
     }
 
     explicit JitcodeGlobalEntry(const IonEntry& ion)
       : JitcodeGlobalEntry()
     {
         ion_ = ion;
     }
--- a/js/src/jit/LIR.h
+++ b/js/src/jit/LIR.h
@@ -1393,31 +1393,31 @@ class LSnapshot : public TempObject
 
 struct SafepointSlotEntry {
     // Flag indicating whether this is a slot in the stack or argument space.
     uint32_t stack:1;
 
     // Byte offset of the slot, as in LStackSlot or LArgument.
     uint32_t slot:31;
 
-    SafepointSlotEntry() { }
+    SafepointSlotEntry()  : stack{}, slot{} { }
     SafepointSlotEntry(bool stack, uint32_t slot)
       : stack(stack), slot(slot)
     { }
     explicit SafepointSlotEntry(const LAllocation* a)
       : stack(a->isStackSlot()), slot(a->memorySlot())
     { }
 };
 
 struct SafepointNunboxEntry {
     uint32_t typeVreg;
     LAllocation type;
     LAllocation payload;
 
-    SafepointNunboxEntry() { }
+    SafepointNunboxEntry()  : typeVreg{} { }
     SafepointNunboxEntry(uint32_t typeVreg, LAllocation type, LAllocation payload)
       : typeVreg(typeVreg), type(type), payload(payload)
     { }
 };
 
 class LSafepoint : public TempObject
 {
     typedef SafepointSlotEntry SlotEntry;
--- a/js/src/jit/MIRGraph.cpp
+++ b/js/src/jit/MIRGraph.cpp
@@ -483,17 +483,17 @@ MBasicBlock::New(MIRGraph& graph, const 
 
 MBasicBlock::MBasicBlock(MIRGraph& graph, const CompileInfo& info, BytecodeSite* site, Kind kind)
   : unreachable_(false),
     specialized_(false),
     graph_(graph),
     info_(info),
     predecessors_(graph.alloc()),
     stackPosition_(info_.firstStackSlot()),
-    numDominated_(0),
+    id_{}, domIndex_{}, numDominated_(0),
     pc_(site->pc()),
     lir_(nullptr),
     callerResumePoint_(nullptr),
     entryResumePoint_(nullptr),
     outerResumePoint_(nullptr),
     successorWithPhis_(nullptr),
     positionInPhiSuccessor_(0),
     loopDepth_(0),
--- a/js/src/jit/MacroAssembler.cpp
+++ b/js/src/jit/MacroAssembler.cpp
@@ -2479,17 +2479,17 @@ MacroAssembler::alignJitStackBasedOnNArg
 // ===============================================================
 
 MacroAssembler::MacroAssembler(JSContext* cx, IonScript* ion,
                                JSScript* script, jsbytecode* pc)
   : framePushed_(0),
 #ifdef DEBUG
     inCall_(false),
 #endif
-    emitProfilingInstrumentation_(false)
+    dynamicAlignment_{false}, emitProfilingInstrumentation_(false)
 {
     constructRoot(cx);
     jitContext_.emplace(cx, (js::jit::TempAllocator*)nullptr);
     alloc_.emplace(cx);
     moveResolver_.setAllocator(*jitContext_->temp);
 #if defined(JS_CODEGEN_ARM)
     initWithAllocator();
     m_buffer.id = GetJitContext()->getNextAssemblerId();
--- a/js/src/jit/MacroAssembler.h
+++ b/js/src/jit/MacroAssembler.h
@@ -336,17 +336,17 @@ class MacroAssembler : public MacroAssem
     NonAssertingLabel failureLabel_;
 
   public:
     MacroAssembler()
       : framePushed_(0),
 #ifdef DEBUG
         inCall_(false),
 #endif
-        emitProfilingInstrumentation_(false)
+        dynamicAlignment_{false}, emitProfilingInstrumentation_(false)
     {
         JitContext* jcx = GetJitContext();
         JSContext* cx = jcx->cx;
         if (cx)
             constructRoot(cx);
 
         if (!jcx->temp) {
             MOZ_ASSERT(cx);
@@ -371,17 +371,17 @@ class MacroAssembler : public MacroAssem
 
     // wasm compilation handles its own JitContext-pushing
     struct WasmToken {};
     explicit MacroAssembler(WasmToken, TempAllocator& alloc)
       : framePushed_(0),
 #ifdef DEBUG
         inCall_(false),
 #endif
-        emitProfilingInstrumentation_(false)
+        dynamicAlignment_{false}, emitProfilingInstrumentation_(false)
     {
         moveResolver_.setAllocator(alloc);
 
 #if defined(JS_CODEGEN_ARM)
         initWithAllocator();
         m_buffer.id = 0;
 #elif defined(JS_CODEGEN_ARM64)
         initWithAllocator();
@@ -2213,17 +2213,17 @@ class MacroAssembler : public MacroAssem
 
   public:
     class AfterICSaveLive {
         friend class MacroAssembler;
         explicit AfterICSaveLive(uint32_t initialStack)
 #ifdef JS_DEBUG
           : initialStack(initialStack)
 #endif
-        {}
+         : alignmentPadding{} {}
 
       public:
 #ifdef JS_DEBUG
         uint32_t initialStack;
 #endif
         uint32_t alignmentPadding;
     };
 
--- a/js/src/jit/MoveResolver.cpp
+++ b/js/src/jit/MoveResolver.cpp
@@ -10,17 +10,17 @@
 
 #include "jit/MacroAssembler.h"
 #include "jit/RegisterSets.h"
 
 using namespace js;
 using namespace js::jit;
 
 MoveOperand::MoveOperand(MacroAssembler& masm, const ABIArg& arg)
-{
+ : disp_{} {
     switch (arg.kind()) {
       case ABIArg::GPR:
         kind_ = REG;
         code_ = arg.gpr().code();
         break;
 #ifdef JS_CODEGEN_REGISTER_PAIR
       case ABIArg::GPR_PAIR:
         kind_ = REG_PAIR;
--- a/js/src/jit/MoveResolver.h
+++ b/js/src/jit/MoveResolver.h
@@ -41,21 +41,21 @@ class MoveOperand
 
   private:
     Kind kind_;
     uint32_t code_;
     int32_t disp_;
 
   public:
     MoveOperand()
-    { }
+     /* FIXME: initialize kind_ */  : code_{}, disp_{} { }
     explicit MoveOperand(Register reg) : kind_(REG), code_(reg.code())
-    { }
+    , disp_{} { }
     explicit MoveOperand(FloatRegister reg) : kind_(FLOAT_REG), code_(reg.code())
-    { }
+    , disp_{} { }
     MoveOperand(Register reg, int32_t disp, Kind kind = MEMORY)
         : kind_(kind),
         code_(reg.code()),
         disp_(disp)
     {
         MOZ_ASSERT(isMemoryOrEffectiveAddress());
 
         // With a zero offset, this is a plain reg-to-reg move.
@@ -203,17 +203,17 @@ class MoveOp
     //       INT32 move a -> b
     //     GENERAL move b -> a
     // the move resolver starts by copying b into a temporary location, so that
     // the last move can read it. This copy needs to use use type GENERAL.
     Type endCycleType_;
 
   public:
     MoveOp()
-    { }
+     : cycleBegin_{false}, cycleEnd_{false}, cycleBeginSlot_{}, cycleEndSlot_{} /* FIXME: initialize type_ */  /* FIXME: initialize endCycleType_ */  { }
     MoveOp(const MoveOperand& from, const MoveOperand& to, Type type)
       : from_(from),
         to_(to),
         cycleBegin_(false),
         cycleEnd_(false),
         cycleBeginSlot_(-1),
         cycleEndSlot_(-1),
         type_(type),
--- a/js/src/jit/OptimizationTracking.h
+++ b/js/src/jit/OptimizationTracking.h
@@ -450,17 +450,17 @@ struct IonTrackedTypeWithAddendum
             uint32_t offset;
         };
         JSFunction* constructor;
     };
 
     explicit IonTrackedTypeWithAddendum(TypeSet::Type type)
       : type(type),
         hasAddendum(HasNothing)
-    { }
+    , script{nullptr}, offset{} { }
 
     IonTrackedTypeWithAddendum(TypeSet::Type type, JSScript* script, uint32_t offset)
       : type(type),
         hasAddendum(HasAllocationSite),
         script(script),
         offset(offset)
     { }
 
--- a/js/src/jit/RangeAnalysis.cpp
+++ b/js/src/jit/RangeAnalysis.cpp
@@ -581,17 +581,17 @@ Range::unionWith(const Range* other)
 
     rawInitialize(newLower, newHasInt32LowerBound, newUpper, newHasInt32UpperBound,
                   newCanHaveFractionalPart,
                   newMayIncludeNegativeZero,
                   newExponent);
 }
 
 Range::Range(const MDefinition* def)
-  : symbolicLower_(nullptr),
+  : lower_{}, upper_{}, hasInt32LowerBound_{false}, hasInt32UpperBound_{false}, /* FIXME: initialize canHaveFractionalPart_ */ /* FIXME: initialize canBeNegativeZero_ */ max_exponent_{}, symbolicLower_(nullptr),
     symbolicUpper_(nullptr)
 {
     if (const Range* other = def->range()) {
         // The instruction has range information; use it.
         *this = *other;
 
         // Simulate the effect of converting the value to its type.
         // Note: we cannot clamp here, since ranges aren't allowed to shrink
--- a/js/src/jit/RegisterSets.h
+++ b/js/src/jit/RegisterSets.h
@@ -245,17 +245,17 @@ class ConstantOrRegister
     void setDataReg(const TypedOrValueRegister& reg) {
         MOZ_ASSERT(!constant());
         data.reg = reg;
     }
 
   public:
 
     ConstantOrRegister()
-    {}
+     : constant_{false} {}
 
     MOZ_IMPLICIT ConstantOrRegister(const Value& value)
       : constant_(true)
     {
         setDataValue(value);
     }
 
     MOZ_IMPLICIT ConstantOrRegister(TypedOrValueRegister reg)
--- a/js/src/jit/RematerializedFrame.cpp
+++ b/js/src/jit/RematerializedFrame.cpp
@@ -30,24 +30,24 @@ struct CopyValueToRematerializedFrame
         *slots++ = v;
     }
 };
 
 RematerializedFrame::RematerializedFrame(JSContext* cx, uint8_t* top, unsigned numActualArgs,
                                          InlineFrameIterator& iter, MaybeReadFallback& fallback)
   : prevUpToDate_(false),
     isDebuggee_(iter.script()->isDebuggee()),
-    isConstructing_(iter.isConstructing()),
+    hasInitialEnv_{false}, isConstructing_(iter.isConstructing()),
     hasCachedSavedFrame_(false),
     top_(top),
     pc_(iter.pc()),
     frameNo_(iter.frameNo()),
     numActualArgs_(numActualArgs),
     script_(iter.script())
-{
+, envChain_{nullptr}, argsObj_{nullptr} {
     if (iter.isFunctionFrame())
         callee_ = iter.callee(fallback);
     else
         callee_ = nullptr;
 
     CopyValueToRematerializedFrame op(slots_);
     iter.readFrameArgsAndLocals(cx, op, op, &envChain_, &hasInitialEnv_, &returnValue_,
                                 &argsObj_, &thisArgument_, &newTarget_, ReadFrame_Actuals,
--- a/js/src/jit/Safepoints.cpp
+++ b/js/src/jit/Safepoints.cpp
@@ -391,17 +391,17 @@ SafepointWriter::endEntry()
     JitSpew(JitSpew_Safepoints, "    -- entry ended at %d", uint32_t(stream_.length()));
 }
 
 SafepointReader::SafepointReader(IonScript* script, const SafepointIndex* si)
   : stream_(script->safepoints() + si->safepointOffset(),
             script->safepoints() + script->safepointsSize()),
     frameSlots_((script->frameSlots() / sizeof(intptr_t)) + 1), // Stack slot counts are inclusive.
     argumentSlots_(script->argumentSlots() / sizeof(intptr_t))
-{
+, nunboxSlotsRemaining_{}, slotsOrElementsSlotsRemaining_{} {
     osiCallPointOffset_ = stream_.readUnsigned();
 
     // gcSpills is a subset of allGprSpills.
     allGprSpills_ = GeneralRegisterSet(ReadRegisterMask(stream_));
     if (allGprSpills_.empty()) {
         gcSpills_ = allGprSpills_;
         valueSpills_ = allGprSpills_;
         slotsOrElementsSpills_ = allGprSpills_;
--- a/js/src/jit/ScalarReplacement.cpp
+++ b/js/src/jit/ScalarReplacement.cpp
@@ -363,17 +363,17 @@ class ObjectMemoryView : public MDefinit
     void loadOffset(MInstruction* ins, size_t offset);
     void visitOb