This commit is contained in:
Luke Wagner 2010-06-18 01:02:26 -07:00
commit cc9eacee25
3 changed files with 30 additions and 25 deletions

View File

@ -251,7 +251,7 @@ MapAlignedPages(size_t size, size_t alignment)
*/
// TODO: this is totally a hack for now; need to replace
void *p = mmap((caddr_t) alignment, size, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_NOSYNC | MAP_ALIGN | MAP_ANON | MAP_32BIT, -1, 0);
MAP_PRIVATE | MAP_NOSYNC | MAP_ALIGN | MAP_ANON, -1, 0);
if (p == MAP_FAILED)
return NULL;
return p;
@ -314,7 +314,7 @@ MapPages(void *addr, size_t size)
* of existing mappings, and we only want to create new mappings.
*/
// TODO: this is totally a hack for now; need to replace
void *p = mmap(addr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_32BIT,
void *p = mmap(addr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON,
-1, 0);
if (p == MAP_FAILED)
return NULL;

View File

@ -168,14 +168,14 @@ typedef enum JSValueMask16
: uint16
# endif
{
JSVAL_MASK16_NULL = (uint16)0x0001,
JSVAL_MASK16_INT32 = (uint16)0x0001,
JSVAL_MASK16_UNDEFINED = (uint16)0x0002,
JSVAL_MASK16_INT32 = (uint16)0x0004,
JSVAL_MASK16_STRING = (uint16)0x0008,
JSVAL_MASK16_NONFUNOBJ = (uint16)0x0010,
JSVAL_MASK16_FUNOBJ = (uint16)0x0020,
JSVAL_MASK16_BOOLEAN = (uint16)0x0040,
JSVAL_MASK16_MAGIC = (uint16)0x0080,
JSVAL_MASK16_STRING = (uint16)0x0004,
JSVAL_MASK16_BOOLEAN = (uint16)0x0008,
JSVAL_MASK16_MAGIC = (uint16)0x0010,
JSVAL_MASK16_NULL = (uint16)0x2000,
JSVAL_MASK16_NONFUNOBJ = (uint16)0x4000,
JSVAL_MASK16_FUNOBJ = (uint16)0x8000,
JSVAL_MASK16_SINGLETON = JSVAL_MASK16_NULL | JSVAL_MASK16_UNDEFINED,
JSVAL_MASK16_OBJECT = JSVAL_MASK16_NONFUNOBJ | JSVAL_MASK16_FUNOBJ,
@ -203,14 +203,14 @@ JSValueMask16;
typedef uint16 JSValueMask16;
#define JSVAL_MASK16_NULL ((uint16)0x0001)
#define JSVAL_MASK16_INT32 ((uint16)0x0001)
#define JSVAL_MASK16_UNDEFINED ((uint16)0x0002)
#define JSVAL_MASK16_INT32 ((uint16)0x0004)
#define JSVAL_MASK16_STRING ((uint16)0x0008)
#define JSVAL_MASK16_NONFUNOBJ ((uint16)0x0010)
#define JSVAL_MASK16_FUNOBJ ((uint16)0x0020)
#define JSVAL_MASK16_BOOLEAN ((uint16)0x0040)
#define JSVAL_MASK16_MAGIC ((uint16)0x0080)
#define JSVAL_MASK16_STRING ((uint16)0x0004)
#define JSVAL_MASK16_BOOLEAN ((uint16)0x0008)
#define JSVAL_MASK16_MAGIC ((uint16)0x0010)
#define JSVAL_MASK16_NULL ((uint16)0x2000)
#define JSVAL_MASK16_NONFUNOBJ ((uint16)0x4000)
#define JSVAL_MASK16_FUNOBJ ((uint16)0x8000)
#define JSVAL_MASK16_SINGLETON (JSVAL_MASK16_NULL | JSVAL_MASK16_UNDEFINED)
#define JSVAL_MASK16_OBJECT (JSVAL_MASK16_NONFUNOBJ | JSVAL_MASK16_FUNOBJ)
#define JSVAL_MASK16_OBJORNULL (JSVAL_MASK16_OBJECT | JSVAL_MASK16_NULL)
@ -221,14 +221,14 @@ typedef uint16 JSValueMask16;
#define JSVAL_MASK32_CLEAR ((uint32)0xFFFF0000)
#define JSVAL_MASK32_NULL ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_NULL))
#define JSVAL_MASK32_UNDEFINED ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_UNDEFINED))
#define JSVAL_MASK32_INT32 ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_INT32))
#define JSVAL_MASK32_UNDEFINED ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_UNDEFINED))
#define JSVAL_MASK32_STRING ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_STRING))
#define JSVAL_MASK32_NONFUNOBJ ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_NONFUNOBJ))
#define JSVAL_MASK32_FUNOBJ ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_FUNOBJ))
#define JSVAL_MASK32_BOOLEAN ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_BOOLEAN))
#define JSVAL_MASK32_MAGIC ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_MAGIC))
#define JSVAL_MASK32_NULL ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_NULL))
#define JSVAL_MASK32_NONFUNOBJ ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_NONFUNOBJ))
#define JSVAL_MASK32_FUNOBJ ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_FUNOBJ))
#define JSVAL_MASK32_SINGLETON ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_SINGLETON))
#define JSVAL_MASK32_OBJECT ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_OBJECT))
@ -590,25 +590,29 @@ static JS_ALWAYS_INLINE JSBool
JSVAL_IS_NUMBER_IMPL(jsval_layout l)
{
JSValueMask32 mask = l.s.u.mask32;
return mask < JSVAL_MASK32_CLEAR || mask == JSVAL_MASK32_INT32;
JS_ASSERT(mask != JSVAL_MASK32_CLEAR);
return mask <= JSVAL_MASK32_INT32;
}
static JS_ALWAYS_INLINE JSBool
JSVAL_IS_OBJECT_IMPL(jsval_layout l)
{
return (l.s.u.mask32 & JSVAL_MASK32_OBJECT) > JSVAL_MASK32_CLEAR;
JSValueMask32 mask = l.s.u.mask32;
return mask >= JSVAL_MASK32_NONFUNOBJ;
}
static JS_ALWAYS_INLINE JSBool
JSVAL_IS_OBJECT_OR_NULL_IMPL(jsval_layout l)
{
return (l.s.u.mask32 & JSVAL_MASK32_OBJORNULL) > JSVAL_MASK32_CLEAR;
JSValueMask32 mask = l.s.u.mask32;
return mask >= JSVAL_MASK32_NULL;
}
static JS_ALWAYS_INLINE JSBool
JSVAL_IS_PRIMITIVE_IMPL(jsval_layout l)
{
return (l.s.u.mask32 & JSVAL_MASK32_OBJECT) <= JSVAL_MASK32_CLEAR;
JSValueMask32 mask = l.s.u.mask32;
return mask < JSVAL_MASK32_NONFUNOBJ;
}
static JS_ALWAYS_INLINE JSBool

View File

@ -86,7 +86,8 @@ XPCTraceableVariant::~XPCTraceableVariant()
if(!JSVAL_IS_STRING(mJSVal))
nsVariant::Cleanup(&mData);
RemoveFromRootSet(nsXPConnect::GetRuntimeInstance()->GetJSRuntime());
if (!JSVAL_IS_NULL(mJSVal))
RemoveFromRootSet(nsXPConnect::GetRuntimeInstance()->GetJSRuntime());
}
void XPCTraceableVariant::TraceJS(JSTracer* trc)