Bug 972712 (part 5) - Add BaseShape::clasp(). r=till.

--HG--
extra : rebase_source : 7eab6753c6c5b248446783132f84b07460aefef6
This commit is contained in:
Nicholas Nethercote 2014-02-26 18:34:02 -08:00
parent 0f9f39e3f1
commit fb405e0a1f
3 changed files with 13 additions and 11 deletions

View File

@ -551,7 +551,7 @@ struct TypeObject {
}; };
struct BaseShape { struct BaseShape {
const js::Class *clasp; const js::Class *clasp_;
JSObject *parent; JSObject *parent;
JSObject *_1; JSObject *_1;
JSCompartment *compartment; JSCompartment *compartment;

View File

@ -1438,7 +1438,7 @@ StackBaseShape::hash(const StackBaseShape *base)
StackBaseShape::match(UnownedBaseShape *key, const StackBaseShape *lookup) StackBaseShape::match(UnownedBaseShape *key, const StackBaseShape *lookup)
{ {
return key->flags == lookup->flags return key->flags == lookup->flags
&& key->clasp == lookup->clasp && key->clasp_ == lookup->clasp
&& key->parent == lookup->parent && key->parent == lookup->parent
&& key->metadata == lookup->metadata && key->metadata == lookup->metadata
&& key->rawGetter == lookup->rawGetter && key->rawGetter == lookup->rawGetter

View File

@ -581,7 +581,7 @@ class BaseShape : public gc::BarrieredCell<BaseShape>
}; };
private: private:
const Class *clasp; /* Class of referring object. */ const Class *clasp_; /* Class of referring object. */
HeapPtrObject parent; /* Parent of referring object. */ HeapPtrObject parent; /* Parent of referring object. */
HeapPtrObject metadata; /* Optional holder of metadata about HeapPtrObject metadata; /* Optional holder of metadata about
* the referring object. */ * the referring object. */
@ -618,7 +618,7 @@ class BaseShape : public gc::BarrieredCell<BaseShape>
{ {
JS_ASSERT(!(objectFlags & ~OBJECT_FLAG_MASK)); JS_ASSERT(!(objectFlags & ~OBJECT_FLAG_MASK));
mozilla::PodZero(this); mozilla::PodZero(this);
this->clasp = clasp; this->clasp_ = clasp;
this->parent = parent; this->parent = parent;
this->metadata = metadata; this->metadata = metadata;
this->flags = objectFlags; this->flags = objectFlags;
@ -631,7 +631,7 @@ class BaseShape : public gc::BarrieredCell<BaseShape>
{ {
JS_ASSERT(!(objectFlags & ~OBJECT_FLAG_MASK)); JS_ASSERT(!(objectFlags & ~OBJECT_FLAG_MASK));
mozilla::PodZero(this); mozilla::PodZero(this);
this->clasp = clasp; this->clasp_ = clasp;
this->parent = parent; this->parent = parent;
this->metadata = metadata; this->metadata = metadata;
this->flags = objectFlags; this->flags = objectFlags;
@ -654,7 +654,7 @@ class BaseShape : public gc::BarrieredCell<BaseShape>
~BaseShape(); ~BaseShape();
BaseShape &operator=(const BaseShape &other) { BaseShape &operator=(const BaseShape &other) {
clasp = other.clasp; clasp_ = other.clasp_;
parent = other.parent; parent = other.parent;
metadata = other.metadata; metadata = other.metadata;
flags = other.flags; flags = other.flags;
@ -679,6 +679,8 @@ class BaseShape : public gc::BarrieredCell<BaseShape>
return *this; return *this;
} }
const Class *clasp() const { return clasp_; }
bool isOwned() const { return !!(flags & OWNED_SHAPE); } bool isOwned() const { return !!(flags & OWNED_SHAPE); }
bool matchesGetterSetter(PropertyOp rawGetter, StrictPropertyOp rawSetter) const { bool matchesGetterSetter(PropertyOp rawGetter, StrictPropertyOp rawSetter) const {
@ -760,7 +762,7 @@ class BaseShape : public gc::BarrieredCell<BaseShape>
private: private:
static void staticAsserts() { static void staticAsserts() {
JS_STATIC_ASSERT(offsetof(BaseShape, clasp) == offsetof(js::shadow::BaseShape, clasp)); JS_STATIC_ASSERT(offsetof(BaseShape, clasp_) == offsetof(js::shadow::BaseShape, clasp_));
} }
}; };
@ -817,7 +819,7 @@ struct StackBaseShape
explicit StackBaseShape(BaseShape *base) explicit StackBaseShape(BaseShape *base)
: flags(base->flags & BaseShape::OBJECT_FLAG_MASK), : flags(base->flags & BaseShape::OBJECT_FLAG_MASK),
clasp(base->clasp), clasp(base->clasp_),
parent(base->parent), parent(base->parent),
metadata(base->metadata), metadata(base->metadata),
rawGetter(nullptr), rawGetter(nullptr),
@ -856,7 +858,7 @@ inline
BaseShape::BaseShape(const StackBaseShape &base) BaseShape::BaseShape(const StackBaseShape &base)
{ {
mozilla::PodZero(this); mozilla::PodZero(this);
this->clasp = base.clasp; this->clasp_ = base.clasp;
this->parent = base.parent; this->parent = base.parent;
this->metadata = base.metadata; this->metadata = base.metadata;
this->flags = base.flags; this->flags = base.flags;
@ -1030,7 +1032,7 @@ class Shape : public gc::BarrieredCell<Shape>
}; };
const Class *getObjectClass() const { const Class *getObjectClass() const {
return base()->clasp; return base()->clasp_;
} }
JSObject *getObjectParent() const { return base()->parent; } JSObject *getObjectParent() const { return base()->parent; }
JSObject *getObjectMetadata() const { return base()->metadata; } JSObject *getObjectMetadata() const { return base()->metadata; }
@ -1481,7 +1483,7 @@ struct StackShape
uint32_t maybeSlot() const { return slot_; } uint32_t maybeSlot() const { return slot_; }
uint32_t slotSpan() const { uint32_t slotSpan() const {
uint32_t free = JSSLOT_FREE(base->clasp); uint32_t free = JSSLOT_FREE(base->clasp_);
return hasMissingSlot() ? free : (maybeSlot() + 1); return hasMissingSlot() ? free : (maybeSlot() + 1);
} }