/* -*- 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/. */
JS::ubi::Node DeserializedNode::getEdgeReferent(const DeserializedEdge& edge) { auto ptr = owner->nodes.lookup(edge.referent);
MOZ_ASSERT(ptr);
// `HashSets` only provide const access to their values, because mutating a // value might change its hash, rendering it unfindable in the set. // Unfortunately, the `ubi::Node` constructor requires a non-const pointer to // its referent. However, the only aspect of a `DeserializedNode` we hash on // is its id, which can't be changed via `ubi::Node`, so this cast can't cause // the trouble `HashSet` is concerned a non-const reference would cause. return JS::ubi::Node(const_cast<DeserializedNode*>(&*ptr));
}
JS::ubi::StackFrame DeserializedStackFrame::getParentStackFrame() const {
MOZ_ASSERT(parent.isSome()); auto ptr = owner->frames.lookup(parent.ref());
MOZ_ASSERT(ptr); // See above comment in DeserializedNode::getEdgeReferent about why this // const_cast is needed and safe. return JS::ubi::StackFrame(const_cast<DeserializedStackFrame*>(&*ptr));
}
StackFrame Concrete<DeserializedNode>::allocationStack() const {
MOZ_ASSERT(hasAllocationStack()); auto id = get().allocationStack.ref(); auto ptr = get().owner->frames.lookup(id);
MOZ_ASSERT(ptr); // See above comment in DeserializedNode::getEdgeReferent about why this // const_cast is needed and safe. return JS::ubi::StackFrame(const_cast<DeserializedStackFrame*>(&*ptr));
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.