[INFER] Fix build breaks, orange.

This commit is contained in:
Brian Hackett 2011-07-21 17:17:25 -07:00
parent 6cedc75bac
commit baf48d73e8
4 changed files with 11 additions and 13 deletions

View File

@ -2245,6 +2245,7 @@ ScriptAnalysis::addTypeBarrier(JSContext *cx, const jsbytecode *pc, TypeSet *tar
code.typeBarriers = barrier; code.typeBarriers = barrier;
} }
#ifdef DEBUG
static void static void
PrintObjectCallback(JSContext *cx, void *data, void *thing, PrintObjectCallback(JSContext *cx, void *data, void *thing,
size_t traceKind, size_t thingSize) size_t traceKind, size_t thingSize)
@ -2252,6 +2253,7 @@ PrintObjectCallback(JSContext *cx, void *data, void *thing,
TypeObject *object = (TypeObject *) thing; TypeObject *object = (TypeObject *) thing;
object->print(cx); object->print(cx);
} }
#endif
void void
TypeCompartment::print(JSContext *cx) TypeCompartment::print(JSContext *cx)
@ -2269,7 +2271,10 @@ TypeCompartment::print(JSContext *cx)
} }
#ifdef DEBUG #ifdef DEBUG
IterateCells(cx, compartment, gc::FINALIZE_TYPE_OBJECT, NULL, PrintObjectCallback); {
AutoUnlockGC unlock(cx->runtime);
IterateCells(cx, compartment, gc::FINALIZE_TYPE_OBJECT, NULL, PrintObjectCallback);
}
#endif #endif
printf("Counts: "); printf("Counts: ");

View File

@ -575,7 +575,7 @@ struct AllocationSiteKey {
typedef AllocationSiteKey Lookup; typedef AllocationSiteKey Lookup;
static inline uint32 hash(AllocationSiteKey key) { static inline uint32 hash(AllocationSiteKey key) {
return (uint32) (key.script->code + key.offset) ^ key.kind; return (uint32) size_t(key.script->code + key.offset) ^ key.kind;
} }
static inline bool match(const AllocationSiteKey &a, const AllocationSiteKey &b) { static inline bool match(const AllocationSiteKey &a, const AllocationSiteKey &b) {

View File

@ -1757,12 +1757,6 @@ do { \
NULL, NULL); \ NULL, NULL); \
if (!proto) \ if (!proto) \
return NULL; \ return NULL; \
AddTypePropertyId(cx, proto, JSID_VOID, \
types::Type::Int32Type()); \
if (_typedArray::ArrayElementTypeMayBeDouble()) { \
AddTypePropertyId(cx, proto, JSID_VOID, \
types::Type::DoubleType()); \
} \
JSObject *ctor = JS_GetConstructor(cx, proto); \ JSObject *ctor = JS_GetConstructor(cx, proto); \
if (!ctor || \ if (!ctor || \
!JS_DefineProperty(cx, ctor, "BYTES_PER_ELEMENT", \ !JS_DefineProperty(cx, ctor, "BYTES_PER_ELEMENT", \

View File

@ -1869,15 +1869,13 @@ mjit::Compiler::jsop_getelem_typed(int atype)
// can't load into an FP-register for other arrays). // can't load into an FP-register for other arrays).
// 2) The result is definitely a double (the result type set can include // 2) The result is definitely a double (the result type set can include
// other types after reading out-of-bound values). // other types after reading out-of-bound values).
// 3) There's no type barrier (we need separate type and data regs for
// type barriers).
AnyRegisterID dataReg; AnyRegisterID dataReg;
MaybeRegisterID typeReg, tempReg; MaybeRegisterID typeReg, tempReg;
JSValueType type = knownPushedType(0); JSValueType type = knownPushedType(0);
bool maybeReadFloat = (atype == TypedArray::TYPE_FLOAT32 || bool maybeReadFloat = (atype == TypedArray::TYPE_FLOAT32 ||
atype == TypedArray::TYPE_FLOAT64 || atype == TypedArray::TYPE_FLOAT64 ||
atype == TypedArray::TYPE_UINT32); atype == TypedArray::TYPE_UINT32);
if (maybeReadFloat && type == JSVAL_TYPE_DOUBLE && !hasTypeBarriers(PC)) { if (maybeReadFloat && type == JSVAL_TYPE_DOUBLE) {
dataReg = frame.allocFPReg(); dataReg = frame.allocFPReg();
// Need an extra reg to convert uint32 to double. // Need an extra reg to convert uint32 to double.
if (atype == TypedArray::TYPE_UINT32) if (atype == TypedArray::TYPE_UINT32)
@ -1888,7 +1886,7 @@ mjit::Compiler::jsop_getelem_typed(int atype)
// float arrays. Also allocate a type register if the result may not // float arrays. Also allocate a type register if the result may not
// be int32 (due to reading out-of-bound values) or if there's a // be int32 (due to reading out-of-bound values) or if there's a
// type barrier. // type barrier.
if (maybeReadFloat || type != JSVAL_TYPE_INT32 || hasTypeBarriers(PC)) if (maybeReadFloat || type != JSVAL_TYPE_INT32)
typeReg = frame.allocReg(); typeReg = frame.allocReg();
} }
@ -1969,7 +1967,8 @@ mjit::Compiler::jsop_getelem(bool isCall)
#ifdef JS_METHODJIT_TYPED_ARRAY #ifdef JS_METHODJIT_TYPED_ARRAY
if (obj->mightBeType(JSVAL_TYPE_OBJECT) && if (obj->mightBeType(JSVAL_TYPE_OBJECT) &&
!types->hasObjectFlags(cx, types::OBJECT_FLAG_NON_TYPED_ARRAY)) { !types->hasObjectFlags(cx, types::OBJECT_FLAG_NON_TYPED_ARRAY) &&
pushedTypeSet(0)->baseFlags() != 0) {
// Inline typed array path. // Inline typed array path.
int atype = types->getTypedArrayType(cx); int atype = types->getTypedArrayType(cx);
if (atype != TypedArray::TYPE_MAX) { if (atype != TypedArray::TYPE_MAX) {