[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;
}
#ifdef DEBUG
static void
PrintObjectCallback(JSContext *cx, void *data, void *thing,
size_t traceKind, size_t thingSize)
@ -2252,6 +2253,7 @@ PrintObjectCallback(JSContext *cx, void *data, void *thing,
TypeObject *object = (TypeObject *) thing;
object->print(cx);
}
#endif
void
TypeCompartment::print(JSContext *cx)
@ -2269,7 +2271,10 @@ TypeCompartment::print(JSContext *cx)
}
#ifdef DEBUG
{
AutoUnlockGC unlock(cx->runtime);
IterateCells(cx, compartment, gc::FINALIZE_TYPE_OBJECT, NULL, PrintObjectCallback);
}
#endif
printf("Counts: ");

View File

@ -575,7 +575,7 @@ struct AllocationSiteKey {
typedef AllocationSiteKey Lookup;
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) {

View File

@ -1757,12 +1757,6 @@ do { \
NULL, NULL); \
if (!proto) \
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); \
if (!ctor || \
!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).
// 2) The result is definitely a double (the result type set can include
// 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;
MaybeRegisterID typeReg, tempReg;
JSValueType type = knownPushedType(0);
bool maybeReadFloat = (atype == TypedArray::TYPE_FLOAT32 ||
atype == TypedArray::TYPE_FLOAT64 ||
atype == TypedArray::TYPE_UINT32);
if (maybeReadFloat && type == JSVAL_TYPE_DOUBLE && !hasTypeBarriers(PC)) {
if (maybeReadFloat && type == JSVAL_TYPE_DOUBLE) {
dataReg = frame.allocFPReg();
// Need an extra reg to convert uint32 to double.
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
// be int32 (due to reading out-of-bound values) or if there's a
// type barrier.
if (maybeReadFloat || type != JSVAL_TYPE_INT32 || hasTypeBarriers(PC))
if (maybeReadFloat || type != JSVAL_TYPE_INT32)
typeReg = frame.allocReg();
}
@ -1969,7 +1967,8 @@ mjit::Compiler::jsop_getelem(bool isCall)
#ifdef JS_METHODJIT_TYPED_ARRAY
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.
int atype = types->getTypedArrayType(cx);
if (atype != TypedArray::TYPE_MAX) {