本文整理汇总了C++中CacheIRWriter::guardType方法的典型用法代码示例。如果您正苦于以下问题:C++ CacheIRWriter::guardType方法的具体用法?C++ CacheIRWriter::guardType怎么用?C++ CacheIRWriter::guardType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CacheIRWriter
的用法示例。
在下文中一共展示了CacheIRWriter::guardType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetProxyExtra
// Callers are expected to have already guarded on the shape of the
// object, which guarantees the object is a DOM proxy.
static void
CheckDOMProxyExpandoDoesNotShadow(CacheIRWriter& writer, JSObject* obj, jsid id,
ObjOperandId objId)
{
MOZ_ASSERT(IsCacheableDOMProxy(obj));
Value expandoVal = GetProxyExtra(obj, GetDOMProxyExpandoSlot());
ValOperandId expandoId;
if (!expandoVal.isObject() && !expandoVal.isUndefined()) {
ExpandoAndGeneration* expandoAndGeneration = (ExpandoAndGeneration*)expandoVal.toPrivate();
expandoId = writer.guardDOMExpandoGeneration(objId, expandoAndGeneration,
expandoAndGeneration->generation);
expandoVal = expandoAndGeneration->expando;
} else {
expandoId = writer.loadDOMExpandoValue(objId);
}
if (expandoVal.isUndefined()) {
// Guard there's no expando object.
writer.guardType(expandoId, JSVAL_TYPE_UNDEFINED);
} else if (expandoVal.isObject()) {
// Guard the proxy either has no expando object or, if it has one, that
// the shape matches the current expando object.
NativeObject& expandoObj = expandoVal.toObject().as<NativeObject>();
MOZ_ASSERT(!expandoObj.containsPure(id));
writer.guardDOMExpandoObject(expandoId, expandoObj.lastProperty());
} else {
MOZ_CRASH("Invalid expando value");
}
}