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

View File

@ -168,14 +168,14 @@ typedef enum JSValueMask16
: uint16 : uint16
# endif # endif
{ {
JSVAL_MASK16_NULL = (uint16)0x0001, JSVAL_MASK16_INT32 = (uint16)0x0001,
JSVAL_MASK16_UNDEFINED = (uint16)0x0002, JSVAL_MASK16_UNDEFINED = (uint16)0x0002,
JSVAL_MASK16_INT32 = (uint16)0x0004, JSVAL_MASK16_STRING = (uint16)0x0004,
JSVAL_MASK16_STRING = (uint16)0x0008, JSVAL_MASK16_BOOLEAN = (uint16)0x0008,
JSVAL_MASK16_NONFUNOBJ = (uint16)0x0010, JSVAL_MASK16_MAGIC = (uint16)0x0010,
JSVAL_MASK16_FUNOBJ = (uint16)0x0020, JSVAL_MASK16_NULL = (uint16)0x2000,
JSVAL_MASK16_BOOLEAN = (uint16)0x0040, JSVAL_MASK16_NONFUNOBJ = (uint16)0x4000,
JSVAL_MASK16_MAGIC = (uint16)0x0080, JSVAL_MASK16_FUNOBJ = (uint16)0x8000,
JSVAL_MASK16_SINGLETON = JSVAL_MASK16_NULL | JSVAL_MASK16_UNDEFINED, JSVAL_MASK16_SINGLETON = JSVAL_MASK16_NULL | JSVAL_MASK16_UNDEFINED,
JSVAL_MASK16_OBJECT = JSVAL_MASK16_NONFUNOBJ | JSVAL_MASK16_FUNOBJ, JSVAL_MASK16_OBJECT = JSVAL_MASK16_NONFUNOBJ | JSVAL_MASK16_FUNOBJ,
@ -203,14 +203,14 @@ JSValueMask16;
typedef uint16 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_UNDEFINED ((uint16)0x0002)
#define JSVAL_MASK16_INT32 ((uint16)0x0004) #define JSVAL_MASK16_STRING ((uint16)0x0004)
#define JSVAL_MASK16_STRING ((uint16)0x0008) #define JSVAL_MASK16_BOOLEAN ((uint16)0x0008)
#define JSVAL_MASK16_NONFUNOBJ ((uint16)0x0010) #define JSVAL_MASK16_MAGIC ((uint16)0x0010)
#define JSVAL_MASK16_FUNOBJ ((uint16)0x0020) #define JSVAL_MASK16_NULL ((uint16)0x2000)
#define JSVAL_MASK16_BOOLEAN ((uint16)0x0040) #define JSVAL_MASK16_NONFUNOBJ ((uint16)0x4000)
#define JSVAL_MASK16_MAGIC ((uint16)0x0080) #define JSVAL_MASK16_FUNOBJ ((uint16)0x8000)
#define JSVAL_MASK16_SINGLETON (JSVAL_MASK16_NULL | JSVAL_MASK16_UNDEFINED) #define JSVAL_MASK16_SINGLETON (JSVAL_MASK16_NULL | JSVAL_MASK16_UNDEFINED)
#define JSVAL_MASK16_OBJECT (JSVAL_MASK16_NONFUNOBJ | JSVAL_MASK16_FUNOBJ) #define JSVAL_MASK16_OBJECT (JSVAL_MASK16_NONFUNOBJ | JSVAL_MASK16_FUNOBJ)
#define JSVAL_MASK16_OBJORNULL (JSVAL_MASK16_OBJECT | JSVAL_MASK16_NULL) #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_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_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_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_BOOLEAN ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_BOOLEAN))
#define JSVAL_MASK32_MAGIC ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_MAGIC)) #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_SINGLETON ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_SINGLETON))
#define JSVAL_MASK32_OBJECT ((uint32)(JSVAL_MASK32_CLEAR | JSVAL_MASK16_OBJECT)) #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) JSVAL_IS_NUMBER_IMPL(jsval_layout l)
{ {
JSValueMask32 mask = l.s.u.mask32; 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 static JS_ALWAYS_INLINE JSBool
JSVAL_IS_OBJECT_IMPL(jsval_layout l) 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 static JS_ALWAYS_INLINE JSBool
JSVAL_IS_OBJECT_OR_NULL_IMPL(jsval_layout l) 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 static JS_ALWAYS_INLINE JSBool
JSVAL_IS_PRIMITIVE_IMPL(jsval_layout l) 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 static JS_ALWAYS_INLINE JSBool

View File

@ -86,6 +86,7 @@ XPCTraceableVariant::~XPCTraceableVariant()
if(!JSVAL_IS_STRING(mJSVal)) if(!JSVAL_IS_STRING(mJSVal))
nsVariant::Cleanup(&mData); nsVariant::Cleanup(&mData);
if (!JSVAL_IS_NULL(mJSVal))
RemoveFromRootSet(nsXPConnect::GetRuntimeInstance()->GetJSRuntime()); RemoveFromRootSet(nsXPConnect::GetRuntimeInstance()->GetJSRuntime());
} }