summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h
index ad7c056..40bec86 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h
@@ -32,29 +32,48 @@ namespace JSC {
class PropertyDescriptor {
public:
PropertyDescriptor()
- : m_attributes(0)
+ : m_attributes(defaultAttributes)
+ , m_seenAttributes(0)
{
}
bool writable() const;
bool enumerable() const;
bool configurable() const;
- bool hasAccessors() const;
+ bool isDataDescriptor() const;
+ bool isGenericDescriptor() const;
+ bool isAccessorDescriptor() const;
unsigned attributes() const { return m_attributes; }
-#ifndef NDEBUG
- bool isValid() const { return m_value || ((m_getter || m_setter) && hasAccessors()); }
-#endif
- JSValue value() const { ASSERT(m_value); return m_value; }
+ JSValue value() const { return m_value; }
JSValue getter() const;
JSValue setter() const;
void setUndefined();
void setDescriptor(JSValue value, unsigned attributes);
void setAccessorDescriptor(JSValue getter, JSValue setter, unsigned attributes);
+ void setWritable(bool);
+ void setEnumerable(bool);
+ void setConfigurable(bool);
+ void setValue(JSValue value) { m_value = value; }
+ void setSetter(JSValue);
+ void setGetter(JSValue);
+ bool isEmpty() const { return !(m_value || m_getter || m_setter || m_seenAttributes); }
+ bool writablePresent() const { return m_seenAttributes & WritablePresent; }
+ bool enumerablePresent() const { return m_seenAttributes & EnumerablePresent; }
+ bool configurablePresent() const { return m_seenAttributes & ConfigurablePresent; }
+ bool setterPresent() const { return m_setter; }
+ bool getterPresent() const { return m_getter; }
+ bool equalTo(const PropertyDescriptor& other) const;
+ bool attributesEqual(const PropertyDescriptor& other) const;
+ unsigned attributesWithOverride(const PropertyDescriptor& other) const;
private:
+ static unsigned defaultAttributes;
+ bool operator==(const PropertyDescriptor&){ return false; }
+ enum { WritablePresent = 1, EnumerablePresent = 2, ConfigurablePresent = 4};
// May be a getter/setter
JSValue m_value;
JSValue m_getter;
JSValue m_setter;
unsigned m_attributes;
+ unsigned m_seenAttributes;
};
}