Files
palemoon27/toolkit/devtools/server/DominatorTree.cpp
T
roytam1 6a4edbe796 import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1221716 - Part 1: Make the simpler parts of BytecodeEmitter::emitTree() use the `ok` boolean consistently. r=Waldo. (8b2eae4dcf)
- Bug 1221716 - Part 2: Factor out all remaining complex cases from the switch statement in emitTree(). r=Waldo. (805c9a96da)
- Bug 1221737 - Drop some BytecodeEmitter checks for cases that the Parser rules out. r=jonco. (9726a6527b)
- Bug 1224460 - Use pwd -W to fill _topsrcdir in configure. r=gps (cc7bf71652)
- Bug 1221737 followup - Bump XDR_BYTECODE_VERSION_SUBTRAHEND to fix build errors on a CLOSED TREE. r=bustage (d2d2f41a14)
- Bug 1170913, full-update target in tools/update-packaging/ always runs automation-partial-patch, r=glandium DONTBUILD (12e5e212d8)
- Bug 1137756 - Use absolute paths in complete-patch.patch. r=gps (62fc37688b)
- Bug 1173998 - use localized package for previous mar; r=nthomas (fb6c95955c)
- Bug 1173459 - Stop generating partial MAR files and publishing complete MARs to balrog as a part of nightly automation. r=mshal (4c427b9f7f)
- Bug 1164580 - Preprocess ua-update.json via slashslash filter. r=fabrice (d934f84f15)
- Bug 1200021 - Part 2: more diagnostics. r=bas (e1cfecbbd4)
- Bug 1200021 - crash in mozilla::layers::ContentClientDoubleBuffered::FinalizeFrame(nsIntRegion const&): Diagnostics to get more data. r=bas (d782b24501)
- Bug 1222569 - fix initialization order in DataTextureSourceD3D9; r=Bas (028939600b)
- Bug 1209801 - Part 1: Add TextureFlags parameter to TextureClientPool. r=mattwoodrow (c5b73613f9)
- Bug 1209801 - Part 2: Do not allow big image textures to be used with TiledLayerBuffers. r=mattwoodrow (cb553ccdea)
- Bug 1211615: Upload the full texture on the first upload for component alpha textures. r=nical (3bd6688679)
- minor (928a95b259)
- Bug 1222569 - remove unused variable in TextureD3D9.cpp; r=Bas (ac5a86be1c)
- Bug 1223928 - Make the horizontal scrollbar on the root scrollable shift correctly with the dynamic toolbar. r=botond (6c6c0b8c24)
- Bug 1216349: Upload the old valid region as well if our texture host changed. r=nical (7d4d041bd2)
- Bug 1236227, don't OOM in TextDecoder, r=baku (9bef90eada)
- Bug 1218594 - r=smaug (de39570c72)
- remove include (62e582fe3d)
- Bug 1226176 - Compute retained sizes in dominator trees and expose them to JavaScript; r=bz,sfink (92bb08a674)
2023-01-27 10:51:45 +08:00

62 lines
1.9 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/devtools/DominatorTree.h"
#include "js/Debug.h"
#include "mozilla/CycleCollectedJSRuntime.h"
#include "mozilla/dom/DominatorTreeBinding.h"
namespace mozilla {
namespace devtools {
dom::Nullable<uint64_t>
DominatorTree::GetRetainedSize(uint64_t aNodeId, ErrorResult& aRv)
{
JS::ubi::Node::Id id(aNodeId);
auto node = mHeapSnapshot->getNodeById(id);
if (node.isNothing())
return dom::Nullable<uint64_t>();
auto ccrt = CycleCollectedJSRuntime::Get();
MOZ_ASSERT(ccrt);
auto rt = ccrt->Runtime();
MOZ_ASSERT(rt);
auto mallocSizeOf = JS::dbg::GetDebuggerMallocSizeOf(rt);
MOZ_ASSERT(mallocSizeOf);
JS::ubi::Node::Size size = 0;
if (!mDominatorTree.getRetainedSize(*node, mallocSizeOf, size)) {
aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
return dom::Nullable<uint64_t>();
}
MOZ_ASSERT(size != 0,
"The node should not have been unknown since we got it from the heap snapshot.");
return dom::Nullable<uint64_t>(size);
}
/*** Cycle Collection Boilerplate *****************************************************************/
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(DominatorTree, mParent, mHeapSnapshot)
NS_IMPL_CYCLE_COLLECTING_ADDREF(DominatorTree)
NS_IMPL_CYCLE_COLLECTING_RELEASE(DominatorTree)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DominatorTree)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_END
/* virtual */ JSObject*
DominatorTree::WrapObject(JSContext* aCx, JS::HandleObject aGivenProto)
{
return dom::DominatorTreeBinding::Wrap(aCx, this, aGivenProto);
}
} // namespace devtools
} // namespace mozilla