Bug 973238 Part 9 -- Move kind to type namespace, insert some const qualifiers r=sfink

This commit is contained in:
Nicholas D. Matsakis 2014-03-26 20:16:00 -04:00
parent b9e4d229bf
commit 6b054db63c
8 changed files with 192 additions and 169 deletions

View File

@ -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 8 needs clobber due to self-hosted code (bug 1019955).
Bug 973238 part 9 needs clobber due to self-hosted code (bug 1019955).

View File

@ -51,7 +51,7 @@ static bool GetX4Lane(JSContext *cx, unsigned argc, Value *vp) {
TypedObject &typedObj = args.thisv().toObject().as<TypedObject>();
TypeDescr &descr = typedObj.typeDescr();
if (descr.kind() != TypeDescr::X4 || descr.as<X4TypeDescr>().type() != Type32x4::type) {
if (descr.kind() != type::X4 || descr.as<X4TypeDescr>().type() != Type32x4::type) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_PROTO,
X4TypeDescr::class_.name, laneNames[lane],
InformalValueTypeName(args.thisv()));
@ -94,7 +94,7 @@ static bool SignMask(JSContext *cx, unsigned argc, Value *vp) {
TypedObject &typedObj = args.thisv().toObject().as<TypedObject>();
TypeDescr &descr = typedObj.typeDescr();
if (descr.kind() != TypeDescr::X4 || descr.as<X4TypeDescr>().type() != Type32x4::type) {
if (descr.kind() != type::X4 || descr.as<X4TypeDescr>().type() != Type32x4::type) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_PROTO,
X4TypeDescr::class_.name, "signMask",
InformalValueTypeName(args.thisv()));
@ -216,7 +216,7 @@ CreateX4Class(JSContext *cx,
if (!x4)
return nullptr;
x4->initReservedSlot(JS_DESCR_SLOT_KIND, Int32Value(TypeDescr::X4));
x4->initReservedSlot(JS_DESCR_SLOT_KIND, Int32Value(type::X4));
x4->initReservedSlot(JS_DESCR_SLOT_STRING_REPR, StringValue(stringRepr));
x4->initReservedSlot(JS_DESCR_SLOT_ALIGNMENT, Int32Value(X4TypeDescr::size(type)));
x4->initReservedSlot(JS_DESCR_SLOT_SIZE, Int32Value(X4TypeDescr::alignment(type)));
@ -399,7 +399,7 @@ IsVectorObject(HandleValue v)
return false;
TypeDescr &typeRepr = obj.as<TypedObject>().typeDescr();
if (typeRepr.kind() != TypeDescr::X4)
if (typeRepr.kind() != type::X4)
return false;
return typeRepr.as<X4TypeDescr>().type() == V::type;

View File

@ -1015,7 +1015,7 @@ StructMetaTypeDescr::create(JSContext *cx,
if (!descr)
return nullptr;
descr->initReservedSlot(JS_DESCR_SLOT_KIND, Int32Value(TypeDescr::Struct));
descr->initReservedSlot(JS_DESCR_SLOT_KIND, Int32Value(type::Struct));
descr->initReservedSlot(JS_DESCR_SLOT_STRING_REPR, StringValue(stringRepr));
descr->initReservedSlot(JS_DESCR_SLOT_ALIGNMENT, Int32Value(alignment));
descr->initReservedSlot(JS_DESCR_SLOT_SIZE, Int32Value(totalSize.value()));
@ -1120,13 +1120,13 @@ StructMetaTypeDescr::construct(JSContext *cx, unsigned int argc, Value *vp)
}
size_t
StructTypeDescr::fieldCount()
StructTypeDescr::fieldCount() const
{
return getReservedSlot(JS_DESCR_SLOT_STRUCT_FIELD_NAMES).toObject().getDenseInitializedLength();
}
bool
StructTypeDescr::fieldIndex(jsid id, size_t *out)
StructTypeDescr::fieldIndex(jsid id, size_t *out) const
{
JSObject &fieldNames = getReservedSlot(JS_DESCR_SLOT_STRUCT_FIELD_NAMES).toObject();
size_t l = fieldNames.getDenseInitializedLength();
@ -1141,14 +1141,14 @@ StructTypeDescr::fieldIndex(jsid id, size_t *out)
}
JSAtom &
StructTypeDescr::fieldName(size_t index)
StructTypeDescr::fieldName(size_t index) const
{
JSObject &fieldNames = getReservedSlot(JS_DESCR_SLOT_STRUCT_FIELD_NAMES).toObject();
return fieldNames.getDenseElement(index).toString()->asAtom();
}
int32_t
StructTypeDescr::fieldOffset(size_t index)
StructTypeDescr::fieldOffset(size_t index) const
{
JSObject &fieldOffsets =
getReservedSlot(JS_DESCR_SLOT_STRUCT_FIELD_OFFSETS).toObject();
@ -1157,7 +1157,7 @@ StructTypeDescr::fieldOffset(size_t index)
}
SizedTypeDescr&
StructTypeDescr::fieldDescr(size_t index)
StructTypeDescr::fieldDescr(size_t index) const
{
JSObject &fieldDescrs =
getReservedSlot(JS_DESCR_SLOT_STRUCT_FIELD_TYPES).toObject();
@ -1513,16 +1513,16 @@ static int32_t
TypedObjLengthFromType(TypeDescr &descr)
{
switch (descr.kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::X4:
case type::Scalar:
case type::Reference:
case type::Struct:
case type::X4:
return 0;
case TypeDescr::SizedArray:
case type::SizedArray:
return descr.as<SizedArrayTypeDescr>().length();
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
MOZ_ASSUME_UNREACHABLE("TypedObjLengthFromType() invoked on unsized type");
}
MOZ_ASSUME_UNREACHABLE("Invalid kind");
@ -1562,11 +1562,11 @@ TypedObject::createZeroed(JSContext *cx,
// Allocate and initialize the memory for this instance.
// Also initialize the JS_TYPEDOBJ_SLOT_LENGTH slot.
switch (descr->kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::X4:
case TypeDescr::SizedArray:
case type::Scalar:
case type::Reference:
case type::Struct:
case type::X4:
case type::SizedArray:
{
size_t totalSize = descr->as<SizedTypeDescr>().size();
Rooted<ArrayBufferObject*> buffer(cx);
@ -1578,7 +1578,7 @@ TypedObject::createZeroed(JSContext *cx,
return obj;
}
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
{
Rooted<SizedTypeDescr*> elementTypeRepr(cx);
elementTypeRepr = &descr->as<UnsizedArrayTypeDescr>().elementType();
@ -1639,15 +1639,15 @@ TypedObject::obj_trace(JSTracer *trace, JSObject *object)
return;
switch (descr.kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::SizedArray:
case TypeDescr::X4:
case type::Scalar:
case type::Reference:
case type::Struct:
case type::SizedArray:
case type::X4:
descr.as<SizedTypeDescr>().traceInstances(trace, mem, 1);
break;
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
descr.as<UnsizedArrayTypeDescr>().elementType().traceInstances(trace, mem, typedObj.length());
break;
}
@ -1662,13 +1662,13 @@ TypedObject::obj_lookupGeneric(JSContext *cx, HandleObject obj, HandleId id,
Rooted<TypeDescr*> descr(cx, &obj->as<TypedObject>().typeDescr());
switch (descr->kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::X4:
case type::Scalar:
case type::Reference:
case type::X4:
break;
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
{
uint32_t index;
if (js_IdIsIndex(id, &index))
@ -1682,7 +1682,7 @@ TypedObject::obj_lookupGeneric(JSContext *cx, HandleObject obj, HandleId id,
break;
}
case TypeDescr::Struct:
case type::Struct:
{
StructTypeDescr &structDescr = descr->as<StructTypeDescr>();
size_t index;
@ -1788,15 +1788,15 @@ TypedObject::obj_getGeneric(JSContext *cx, HandleObject obj, HandleObject receiv
// Handle everything else here:
switch (typedObj->typeDescr().kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case type::Scalar:
case type::Reference:
break;
case TypeDescr::X4:
case type::X4:
break;
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
if (JSID_IS_ATOM(id, cx->names().length)) {
if (typedObj->owner().isNeutered() || !typedObj->typedMem()) { // unattached
JS_ReportErrorNumber(
@ -1810,7 +1810,7 @@ TypedObject::obj_getGeneric(JSContext *cx, HandleObject obj, HandleObject receiv
}
break;
case TypeDescr::Struct: {
case type::Struct: {
Rooted<StructTypeDescr*> descr(cx, &typedObj->typeDescr().as<StructTypeDescr>());
size_t fieldIndex;
@ -1849,17 +1849,17 @@ TypedObject::obj_getElement(JSContext *cx, HandleObject obj, HandleObject receiv
Rooted<TypeDescr *> descr(cx, &typedObj->typeDescr());
switch (descr->kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::X4:
case TypeDescr::Struct:
case type::Scalar:
case type::Reference:
case type::X4:
case type::Struct:
break;
case TypeDescr::SizedArray:
case type::SizedArray:
return obj_getArrayElement<SizedArrayTypeDescr>(cx, typedObj, descr,
index, vp);
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
return obj_getArrayElement<UnsizedArrayTypeDescr>(cx, typedObj, descr,
index, vp);
}
@ -1905,15 +1905,15 @@ TypedObject::obj_setGeneric(JSContext *cx, HandleObject obj, HandleId id,
return obj_setElement(cx, obj, index, vp, strict);
switch (typedObj->typeDescr().kind()) {
case ScalarTypeDescr::Scalar:
case TypeDescr::Reference:
case type::Scalar:
case type::Reference:
break;
case ScalarTypeDescr::X4:
case type::X4:
break;
case ScalarTypeDescr::SizedArray:
case ScalarTypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
if (JSID_IS_ATOM(id, cx->names().length)) {
JS_ReportErrorNumber(cx, js_GetErrorMessage,
nullptr, JSMSG_CANT_REDEFINE_ARRAY_LENGTH);
@ -1921,7 +1921,7 @@ TypedObject::obj_setGeneric(JSContext *cx, HandleObject obj, HandleId id,
}
break;
case ScalarTypeDescr::Struct: {
case type::Struct: {
Rooted<StructTypeDescr*> descr(cx, &typedObj->typeDescr().as<StructTypeDescr>());
size_t fieldIndex;
@ -1955,16 +1955,16 @@ TypedObject::obj_setElement(JSContext *cx, HandleObject obj, uint32_t index,
Rooted<TypeDescr *> descr(cx, &typedObj->typeDescr());
switch (descr->kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::X4:
case TypeDescr::Struct:
case type::Scalar:
case type::Reference:
case type::X4:
case type::Struct:
break;
case TypeDescr::SizedArray:
case type::SizedArray:
return obj_setArrayElement<SizedArrayTypeDescr>(cx, typedObj, descr, index, vp);
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
return obj_setArrayElement<UnsizedArrayTypeDescr>(cx, typedObj, descr, index, vp);
}
@ -2000,15 +2000,15 @@ TypedObject::obj_getGenericAttributes(JSContext *cx, HandleObject obj,
uint32_t index;
Rooted<TypedObject *> typedObj(cx, &obj->as<TypedObject>());
switch (typedObj->typeDescr().kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case type::Scalar:
case type::Reference:
break;
case TypeDescr::X4:
case type::X4:
break;
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
if (js_IdIsIndex(id, &index)) {
*attrsp = JSPROP_ENUMERATE | JSPROP_PERMANENT;
return true;
@ -2019,7 +2019,7 @@ TypedObject::obj_getGenericAttributes(JSContext *cx, HandleObject obj,
}
break;
case TypeDescr::Struct:
case type::Struct:
size_t index;
if (typedObj->typeDescr().as<StructTypeDescr>().fieldIndex(id, &index)) {
*attrsp = JSPROP_ENUMERATE | JSPROP_PERMANENT;
@ -2043,16 +2043,16 @@ IsOwnId(JSContext *cx, HandleObject obj, HandleId id)
uint32_t index;
Rooted<TypedObject *> typedObj(cx, &obj->as<TypedObject>());
switch (typedObj->typeDescr().kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::X4:
case type::Scalar:
case type::Reference:
case type::X4:
return false;
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
return js_IdIsIndex(id, &index) || JSID_IS_ATOM(id, cx->names().length);
case TypeDescr::Struct:
case type::Struct:
size_t index;
if (typedObj->typeDescr().as<StructTypeDescr>().fieldIndex(id, &index))
return true;
@ -2102,9 +2102,9 @@ TypedObject::obj_enumerate(JSContext *cx, HandleObject obj, JSIterateOp enum_op,
Rooted<TypedObject *> typedObj(cx, &obj->as<TypedObject>());
Rooted<TypeDescr *> descr(cx, &typedObj->typeDescr());
switch (descr->kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::X4:
case type::Scalar:
case type::Reference:
case type::X4:
switch (enum_op) {
case JSENUMERATE_INIT_ALL:
case JSENUMERATE_INIT:
@ -2118,8 +2118,8 @@ TypedObject::obj_enumerate(JSContext *cx, HandleObject obj, JSIterateOp enum_op,
}
break;
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
switch (enum_op) {
case JSENUMERATE_INIT_ALL:
case JSENUMERATE_INIT:
@ -2146,7 +2146,7 @@ TypedObject::obj_enumerate(JSContext *cx, HandleObject obj, JSIterateOp enum_op,
}
break;
case TypeDescr::Struct:
case type::Struct:
switch (enum_op) {
case JSENUMERATE_INIT_ALL:
case JSENUMERATE_INIT:
@ -2262,16 +2262,16 @@ static int32_t
LengthForType(TypeDescr &descr)
{
switch (descr.kind()) {
case TypeDescr::Scalar:
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::X4:
case type::Scalar:
case type::Reference:
case type::Struct:
case type::X4:
return 0;
case TypeDescr::SizedArray:
case type::SizedArray:
return descr.as<SizedArrayTypeDescr>().length();
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
return 0;
}
@ -3080,15 +3080,15 @@ visitReferences(SizedTypeDescr &descr,
return;
switch (descr.kind()) {
case TypeDescr::Scalar:
case TypeDescr::X4:
case type::Scalar:
case type::X4:
return;
case TypeDescr::Reference:
case type::Reference:
visitor.visitReference(descr.as<ReferenceTypeDescr>(), mem);
return;
case TypeDescr::SizedArray:
case type::SizedArray:
{
SizedArrayTypeDescr &arrayDescr = descr.as<SizedArrayTypeDescr>();
SizedTypeDescr &elementDescr = arrayDescr.elementType();
@ -3099,12 +3099,12 @@ visitReferences(SizedTypeDescr &descr,
return;
}
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
{
MOZ_ASSUME_UNREACHABLE("Only Sized Type representations");
}
case TypeDescr::Struct:
case type::Struct:
{
StructTypeDescr &structDescr = descr.as<StructTypeDescr>();
for (size_t i = 0; i < structDescr.fieldCount(); i++) {

View File

@ -126,6 +126,33 @@ static T ConvertScalar(double d)
}
}
namespace type {
enum Kind {
Scalar = JS_TYPEREPR_SCALAR_KIND,
Reference = JS_TYPEREPR_REFERENCE_KIND,
X4 = JS_TYPEREPR_X4_KIND,
Struct = JS_TYPEREPR_STRUCT_KIND,
SizedArray = JS_TYPEREPR_SIZED_ARRAY_KIND,
UnsizedArray = JS_TYPEREPR_UNSIZED_ARRAY_KIND,
};
static inline bool isSized(type::Kind kind) {
return kind > JS_TYPEREPR_MAX_UNSIZED_KIND;
}
}
///////////////////////////////////////////////////////////////////////////
// Typed Prototypes
class SizedTypeDescr;
class SimpleTypeDescr;
class ComplexTypeDescr;
class X4TypeDescr;
class StructTypeDescr;
class SizedTypedProto;
/*
* The prototype for a typed object. Currently, carries a link to the
* type descriptor. Eventually will carry most of the type information
@ -154,25 +181,21 @@ class TypeDescr : public JSObject
// fun and rejoicing.
static const Class class_;
enum Kind {
Scalar = JS_TYPEREPR_SCALAR_KIND,
Reference = JS_TYPEREPR_REFERENCE_KIND,
X4 = JS_TYPEREPR_X4_KIND,
Struct = JS_TYPEREPR_STRUCT_KIND,
SizedArray = JS_TYPEREPR_SIZED_ARRAY_KIND,
UnsizedArray = JS_TYPEREPR_UNSIZED_ARRAY_KIND,
};
static bool isSized(Kind kind) {
public:
static bool isSized(type::Kind kind) {
return kind > JS_TYPEREPR_MAX_UNSIZED_KIND;
}
TypedProto &typedProto() const {
return getReservedSlot(JS_DESCR_SLOT_TYPROTO).toObject().as<TypedProto>();
}
JSAtom &stringRepr() const {
return getReservedSlot(JS_DESCR_SLOT_STRING_REPR).toString()->asAtom();
}
TypeDescr::Kind kind() const {
return (TypeDescr::Kind) getReservedSlot(JS_DESCR_SLOT_KIND).toInt32();
type::Kind kind() const {
return (type::Kind) getReservedSlot(JS_DESCR_SLOT_KIND).toInt32();
}
bool opaque() const {
@ -183,7 +206,7 @@ class TypeDescr : public JSObject
return !opaque();
}
int32_t alignment() {
int32_t alignment() const {
return getReservedSlot(JS_DESCR_SLOT_ALIGNMENT).toInt32();
}
};
@ -193,7 +216,7 @@ typedef Handle<TypeDescr*> HandleTypeDescr;
class SizedTypeDescr : public TypeDescr
{
public:
int32_t size() {
int32_t size() const {
return getReservedSlot(JS_DESCR_SLOT_SIZE).toInt32();
}
@ -233,7 +256,7 @@ class ScalarTypeDescr : public SimpleTypeDescr
};
static const int32_t TYPE_MAX = TYPE_UINT8_CLAMPED + 1;
static const TypeDescr::Kind Kind = TypeDescr::Scalar;
static const type::Kind Kind = type::Scalar;
static const bool Opaque = false;
static int32_t size(Type t);
static int32_t alignment(Type t);
@ -282,7 +305,7 @@ class ReferenceTypeDescr : public SimpleTypeDescr
static const int32_t TYPE_MAX = TYPE_STRING + 1;
static const char *typeName(Type type);
static const TypeDescr::Kind Kind = TypeDescr::Reference;
static const type::Kind Kind = type::Reference;
static const bool Opaque = true;
static const Class class_;
static int32_t size(Type t);
@ -328,7 +351,7 @@ class X4TypeDescr : public ComplexTypeDescr
TYPE_FLOAT32 = JS_X4TYPEREPR_FLOAT32,
};
static const TypeDescr::Kind Kind = TypeDescr::X4;
static const type::Kind Kind = type::X4;
static const bool Opaque = false;
static const Class class_;
static int32_t size(Type t);
@ -407,13 +430,13 @@ class UnsizedArrayTypeDescr : public TypeDescr
{
public:
static const Class class_;
static const TypeDescr::Kind Kind = TypeDescr::UnsizedArray;
static const type::Kind Kind = type::UnsizedArray;
// This is the sized method on unsized array type objects. It
// produces a sized variant.
static bool dimension(JSContext *cx, unsigned int argc, jsval *vp);
SizedTypeDescr &elementType() {
SizedTypeDescr &elementType() const {
return getReservedSlot(JS_DESCR_SLOT_ARRAY_ELEM_TYPE).toObject().as<SizedTypeDescr>();
}
};
@ -425,13 +448,13 @@ class SizedArrayTypeDescr : public ComplexTypeDescr
{
public:
static const Class class_;
static const TypeDescr::Kind Kind = TypeDescr::SizedArray;
static const type::Kind Kind = type::SizedArray;
SizedTypeDescr &elementType() {
SizedTypeDescr &elementType() const {
return getReservedSlot(JS_DESCR_SLOT_ARRAY_ELEM_TYPE).toObject().as<SizedTypeDescr>();
}
int32_t length() {
int32_t length() const {
return getReservedSlot(JS_DESCR_SLOT_SIZED_ARRAY_LENGTH).toInt32();
}
};
@ -469,20 +492,20 @@ class StructTypeDescr : public ComplexTypeDescr
static const Class class_;
// Returns the number of fields defined in this struct.
size_t fieldCount();
size_t fieldCount() const;
// Set `*out` to the index of the field named `id` and returns true,
// or return false if no such field exists.
bool fieldIndex(jsid id, size_t *out);
bool fieldIndex(jsid id, size_t *out) const;
// Return the name of the field at index `index`.
JSAtom &fieldName(size_t index);
JSAtom &fieldName(size_t index) const;
// Return the type descr of the field at index `index`.
SizedTypeDescr &fieldDescr(size_t index);
SizedTypeDescr &fieldDescr(size_t index) const;
// Return the offset of the field at index `index`.
int32_t fieldOffset(size_t index);
int32_t fieldOffset(size_t index) const;
};
typedef Handle<StructTypeDescr*> HandleStructTypeDescr;
@ -670,14 +693,14 @@ class TypedObject : public ArrayBufferViewObject
int32_t size() const {
switch (typeDescr().kind()) {
case TypeDescr::Scalar:
case TypeDescr::X4:
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::SizedArray:
case type::Scalar:
case type::X4:
case type::Reference:
case type::Struct:
case type::SizedArray:
return typeDescr().as<SizedTypeDescr>().size();
case TypeDescr::UnsizedArray: {
case type::UnsizedArray: {
SizedTypeDescr &elementType = typeDescr().as<UnsizedArrayTypeDescr>().elementType();
return elementType.size() * length();
}

View File

@ -6770,19 +6770,19 @@ IonBuilder::getElemTryTypedObject(bool *emitted, MDefinition *obj, MDefinition *
return true;
switch (elemDescrs.kind()) {
case TypeDescr::X4:
case type::X4:
// FIXME (bug 894105): load into a MIRType_float32x4 etc
return true;
case TypeDescr::Struct:
case TypeDescr::SizedArray:
case type::Struct:
case type::SizedArray:
return getElemTryComplexElemOfTypedObject(emitted,
obj,
index,
objDescrs,
elemDescrs,
elemSize);
case TypeDescr::Scalar:
case type::Scalar:
return getElemTryScalarElemOfTypedObject(emitted,
obj,
index,
@ -6790,10 +6790,10 @@ IonBuilder::getElemTryTypedObject(bool *emitted, MDefinition *obj, MDefinition *
elemDescrs,
elemSize);
case TypeDescr::Reference:
case type::Reference:
return true;
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
MOZ_ASSUME_UNREACHABLE("Unsized arrays cannot be element types");
}
@ -7683,18 +7683,18 @@ IonBuilder::setElemTryTypedObject(bool *emitted, MDefinition *obj,
return true;
switch (elemTypeDescrs.kind()) {
case TypeDescr::X4:
case type::X4:
// FIXME (bug 894105): store a MIRType_float32x4 etc
return true;
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::Reference:
case type::Struct:
case type::SizedArray:
case type::UnsizedArray:
// For now, only optimize storing scalars.
return true;
case TypeDescr::Scalar:
case type::Scalar:
return setElemTryScalarElemOfTypedObject(emitted,
obj,
index,
@ -8708,15 +8708,15 @@ IonBuilder::getPropTryTypedObject(bool *emitted, MDefinition *obj, PropertyName
return true;
switch (fieldDescrs.kind()) {
case TypeDescr::Reference:
case type::Reference:
return true;
case TypeDescr::X4:
case type::X4:
// FIXME (bug 894104): load into a MIRType_float32x4 etc
return true;
case TypeDescr::Struct:
case TypeDescr::SizedArray:
case type::Struct:
case type::SizedArray:
return getPropTryComplexPropOfTypedObject(emitted,
obj,
fieldOffset,
@ -8724,14 +8724,14 @@ IonBuilder::getPropTryTypedObject(bool *emitted, MDefinition *obj, PropertyName
fieldIndex,
resultTypes);
case TypeDescr::Scalar:
case type::Scalar:
return getPropTryScalarPropOfTypedObject(emitted,
obj,
fieldOffset,
fieldDescrs,
resultTypes);
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
MOZ_ASSUME_UNREACHABLE("Field of unsized array type");
}
@ -9362,18 +9362,18 @@ IonBuilder::setPropTryTypedObject(bool *emitted, MDefinition *obj,
return true;
switch (fieldDescrs.kind()) {
case TypeDescr::X4:
case type::X4:
// FIXME (bug 894104): store into a MIRType_float32x4 etc
return true;
case TypeDescr::Reference:
case TypeDescr::Struct:
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::Reference:
case type::Struct:
case type::SizedArray:
case type::UnsizedArray:
// For now, only optimize storing scalars.
return true;
case TypeDescr::Scalar:
case type::Scalar:
return setPropTryScalarPropOfTypedObject(emitted, obj, fieldOffset,
value, fieldDescrs);
}
@ -10402,7 +10402,7 @@ IonBuilder::lookupTypedObjectField(MDefinition *typedObj,
return false;
// Must be accessing a struct.
if (!objDescrs.allOfKind(TypeDescr::Struct))
if (!objDescrs.allOfKind(type::Struct))
return true;
// Determine the type/offset of the field `name`, if any.

View File

@ -1460,7 +1460,7 @@ IonBuilder::elementAccessIsTypedObjectArrayOfScalarType(MDefinition* obj, MDefin
if (!objDescrs.arrayElementType(*this, &elemDescrs))
return false;
if (elemDescrs.empty() || elemDescrs.kind() != TypeDescr::Scalar)
if (elemDescrs.empty() || elemDescrs.kind() != type::Scalar)
return false;
JS_ASSERT(TypeDescr::isSized(elemDescrs.kind()));

View File

@ -176,14 +176,14 @@ TypeDescrSet::allOfArrayKind()
return false;
switch (kind()) {
case TypeDescr::SizedArray:
case TypeDescr::UnsizedArray:
case type::SizedArray:
case type::UnsizedArray:
return true;
case TypeDescr::X4:
case TypeDescr::Reference:
case TypeDescr::Scalar:
case TypeDescr::Struct:
case type::X4:
case type::Reference:
case type::Scalar:
case type::Struct:
return false;
}
@ -191,7 +191,7 @@ TypeDescrSet::allOfArrayKind()
}
bool
TypeDescrSet::allOfKind(TypeDescr::Kind aKind)
TypeDescrSet::allOfKind(type::Kind aKind)
{
if (empty())
return false;
@ -226,7 +226,7 @@ TypeDescrSet::knownPrototype() const
return &get(0)->as<ComplexTypeDescr>().instancePrototype();
}
TypeDescr::Kind
type::Kind
TypeDescrSet::kind()
{
JS_ASSERT(!empty());
@ -237,7 +237,7 @@ template<typename T>
bool
TypeDescrSet::genericType(typename T::Type *out)
{
JS_ASSERT(allOfKind(TypeDescr::Scalar));
JS_ASSERT(allOfKind(type::Scalar));
typename T::Type type = get(0)->as<T>().type();
for (size_t i = 1; i < length(); i++) {
@ -271,10 +271,10 @@ bool
TypeDescrSet::hasKnownArrayLength(int32_t *l)
{
switch (kind()) {
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
return false;
case TypeDescr::SizedArray:
case type::SizedArray:
{
const size_t result = get(0)->as<SizedArrayTypeDescr>().length();
for (size_t i = 1; i < length(); i++) {
@ -297,12 +297,12 @@ TypeDescrSet::arrayElementType(IonBuilder &builder, TypeDescrSet *out)
TypeDescrSetBuilder elementTypes;
for (size_t i = 0; i < length(); i++) {
switch (kind()) {
case TypeDescr::UnsizedArray:
case type::UnsizedArray:
if (!elementTypes.insert(&get(i)->as<UnsizedArrayTypeDescr>().elementType()))
return false;
break;
case TypeDescr::SizedArray:
case type::SizedArray:
if (!elementTypes.insert(&get(i)->as<SizedArrayTypeDescr>().elementType()))
return false;
break;
@ -321,7 +321,7 @@ TypeDescrSet::fieldNamed(IonBuilder &builder,
TypeDescrSet *out,
size_t *index)
{
JS_ASSERT(kind() == TypeDescr::Struct);
JS_ASSERT(kind() == type::Struct);
// Initialize `*offset` and `*out` for the case where incompatible
// or absent fields are found.

View File

@ -86,7 +86,7 @@ class TypeDescrSet {
// Query the set
bool empty() const;
bool allOfKind(TypeDescr::Kind kind);
bool allOfKind(type::Kind kind);
// Returns true only when non-empty and `kind()` is
// `TypeDescr::Array`
@ -108,7 +108,7 @@ class TypeDescrSet {
//////////////////////////////////////////////////////////////////////
// The following operations are only valid on a non-empty set:
TypeDescr::Kind kind();
type::Kind kind();
// Returns the prototype that a typed object whose type is within
// this TypeDescrSet would have. Returns `null` if this cannot be
@ -118,7 +118,7 @@ class TypeDescrSet {
//////////////////////////////////////////////////////////////////////
// Scalar operations
//
// Only valid when `kind() == TypeDescr::Scalar`
// Only valid when `kind() == type::Scalar`
// If all type descrs in this set have a single type, returns true
// and sets *out. Else returns false.
@ -127,7 +127,7 @@ class TypeDescrSet {
//////////////////////////////////////////////////////////////////////
// Reference operations
//
// Only valid when `kind() == TypeDescr::Reference`
// Only valid when `kind() == type::Reference`
// If all type descrs in this set have a single type, returns true
// and sets *out. Else returns false.
@ -136,7 +136,7 @@ class TypeDescrSet {
//////////////////////////////////////////////////////////////////////
// Reference operations
//
// Only valid when `kind() == TypeDescr::X4`
// Only valid when `kind() == type::X4`
// If all type descrs in this set have a single type, returns true
// and sets *out. Else returns false.
@ -145,7 +145,7 @@ class TypeDescrSet {
//////////////////////////////////////////////////////////////////////
// SizedArray operations
//
// Only valid when `kind() == TypeDescr::SizedArray`
// Only valid when `kind() == type::SizedArray`
// Determines whether all arrays in this set have the same,
// statically known, array length and return that length
@ -160,7 +160,7 @@ class TypeDescrSet {
//////////////////////////////////////////////////////////////////////
// Struct operations
//
// Only valid when `kind() == TypeDescr::Struct`
// Only valid when `kind() == type::Struct`
// Searches the type in the set for a field named `id`. All
// possible types must agree on the offset of the field within the