Bug 872185 - Annotate a couple of rooting analysis false positives r=sfink

This commit is contained in:
Jon Coppeard 2013-05-14 16:11:17 -07:00
parent 2f6b68ae57
commit 2a7dbf9c88
3 changed files with 14 additions and 3 deletions

View File

@ -63,6 +63,7 @@ var ignoreCallees = {
"js::ion::MDefinition.opName" : true, // macro generated virtuals just return a constant
"js::ion::LInstruction.getDef" : true, // virtual but no implementation can GC
"js::ion::IonCache.kind" : true, // macro generated virtuals just return a constant
"icu_50::UObject.__deleting_dtor" : true, // destructors in ICU code can't cause GC
};
function fieldCallCannotGC(csu, fullfield)
@ -133,7 +134,8 @@ function isRootedTypeName(name)
{
if (name == "mozilla::ErrorResult" ||
name == "js::frontend::TokenStream" ||
name == "js::frontend::TokenStream::Position")
name == "js::frontend::TokenStream::Position" ||
name == "ModuleCompiler")
{
return true;
}

View File

@ -436,7 +436,7 @@ class StrictModeGetter {
//
// The methods seek() and tell() allow to rescan from a previous visited
// location of the buffer.
class TokenStream
class MOZ_STACK_CLASS TokenStream
{
/* Unicode separators that are treated as line terminators, in addition to \n, \r */
enum {

View File

@ -894,7 +894,16 @@ typedef Vector<MBasicBlock*,16> CaseVector;
// to add a new exit or reuse an existing one. The key is an ExitDescriptor
// (which holds the exit pairing) and the value is an index into the
// Vector<Exit> stored in the AsmJSModule.
class ModuleCompiler
//
// Rooting note: ModuleCompiler is a stack class that contains unrooted
// PropertyName (JSAtom) pointers. This is safe because it cannot be
// constructed without a TokenStream reference. TokenStream is itself a stack
// class that cannot be constructed without an AutoKeepAtoms being live on the
// stack, which prevents collection of atoms.
//
// ModuleCompiler is marked as rooted in the rooting analysis. Don't add
// non-JSAtom pointers, or this will break!
class MOZ_STACK_CLASS ModuleCompiler
{
public:
class Func