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 {
const js::Class *clasp;
const js::Class *clasp_;
JSObject *parent;
JSObject *_1;
JSCompartment *compartment;

View File

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

View File

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