diff --git a/CLOBBER b/CLOBBER index 0b5d463f6717..b3590c1bf9f1 100644 --- a/CLOBBER +++ b/CLOBBER @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Bug 973238 part 5 needs clobber due to self-hosted code (bug 1019955). +Bug 973238 part 6 needs clobber due to self-hosted code (bug 1019955). diff --git a/js/src/jit/IonBuilder.cpp b/js/src/jit/IonBuilder.cpp index f06c202edab6..b4327b9b5423 100644 --- a/js/src/jit/IonBuilder.cpp +++ b/js/src/jit/IonBuilder.cpp @@ -10264,14 +10264,20 @@ IonBuilder::typeSetToTypeDescrSet(types::TemporaryTypeSet *types, TypeDescrSetBuilder set; for (uint32_t i = 0; i < types->getObjectCount(); i++) { types::TypeObject *type = types->getTypeObject(i); - if (!type || type->unknownProperties()) + if (!type) return true; - if (!type->hasTypedObject()) + if (!IsTypedObjectClass(type->clasp())) return true; - TypeDescr &descr = type->typedObject()->descr(); - if (!set.insert(&descr)) + TaggedProto proto = type->proto(); + + // typed objects have immutable prototypes, and they are + // always instances of TypedProto + JS_ASSERT(proto.isObject() && proto.toObject()->is()); + + TypedProto &typedProto = proto.toObject()->as(); + if (!set.insert(&typedProto.typeDescr())) return false; }