Revision: 10868
Author: [email protected]
Date: Wed Feb 29 05:29:17 2012
Log: Revert "Handle CALLBACKS correctly in IsProperty functions."
This reverts r10847.
Review URL: https://chromiumcodereview.appspot.com/9536010
http://code.google.com/p/v8/source/detail?r=10868
Modified:
/branches/bleeding_edge/src/objects-inl.h
/branches/bleeding_edge/src/objects.h
/branches/bleeding_edge/src/property-details.h
/branches/bleeding_edge/src/property.h
=======================================
--- /branches/bleeding_edge/src/objects-inl.h Mon Feb 27 23:16:50 2012
+++ /branches/bleeding_edge/src/objects-inl.h Wed Feb 29 05:29:17 2012
@@ -1988,8 +1988,7 @@
bool DescriptorArray::IsProperty(int descriptor_number) {
- Entry entry(this, descriptor_number);
- return IsPropertyDescriptor(&entry);
+ return IsRealProperty(GetType(descriptor_number));
}
=======================================
--- /branches/bleeding_edge/src/objects.h Mon Feb 27 23:16:50 2012
+++ /branches/bleeding_edge/src/objects.h Wed Feb 29 05:29:17 2012
@@ -2589,20 +2589,6 @@
static const int kMaxNumberOfDescriptors = 1024 + 512;
private:
- // An entry in a DescriptorArray, represented as an (array, index) pair.
- class Entry {
- public:
- inline explicit Entry(DescriptorArray* descs, int index) :
- descs_(descs), index_(index) { }
-
- inline PropertyType type() { return descs_->GetType(index_); }
- inline Object* GetCallbackObject() { return descs_->GetValue(index_); }
-
- private:
- DescriptorArray* descs_;
- int index_;
- };
-
// Conversion from descriptor number to array indices.
static int ToKeyIndex(int descriptor_number) {
return descriptor_number+kFirstIndex;
@@ -7932,10 +7918,6 @@
set_setter(value);
}
}
-
- bool ContainsAccessor() {
- return IsJSAccessor(getter()) || IsJSAccessor(setter());
- }
#ifdef OBJECT_PRINT
void AccessorPairPrint(FILE* out = stdout);
@@ -7949,15 +7931,6 @@
static const int kSize = kSetterOffset + kPointerSize;
private:
- // Strangely enough, in addition to functions and harmony proxies, the
spec
- // requires us to consider undefined as a kind of accessor, too:
- // var obj = {};
- // Object.defineProperty(obj, "foo", {get: undefined});
- // assertTrue("foo" in obj);
- bool IsJSAccessor(Object* obj) {
- return obj->IsSpecFunction() || obj->IsUndefined();
- }
-
DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorPair);
};
=======================================
--- /branches/bleeding_edge/src/property-details.h Mon Feb 27 23:16:50 2012
+++ /branches/bleeding_edge/src/property-details.h Wed Feb 29 05:29:17 2012
@@ -73,6 +73,26 @@
};
+inline bool IsRealProperty(PropertyType type) {
+ switch (type) {
+ case NORMAL:
+ case FIELD:
+ case CONSTANT_FUNCTION:
+ case CALLBACKS:
+ case HANDLER:
+ case INTERCEPTOR:
+ return true;
+ case MAP_TRANSITION:
+ case ELEMENTS_TRANSITION:
+ case CONSTANT_TRANSITION:
+ case NULL_DESCRIPTOR:
+ return false;
+ }
+ UNREACHABLE(); // keep the compiler happy
+ return false;
+}
+
+
// PropertyDetails captures type and attributes for a property.
// They are used both in property dictionaries and instance descriptors.
class PropertyDetails BASE_EMBEDDED {
=======================================
--- /branches/bleeding_edge/src/property.h Mon Feb 27 23:16:50 2012
+++ /branches/bleeding_edge/src/property.h Wed Feb 29 05:29:17 2012
@@ -162,35 +162,6 @@
int index = 0)
: Descriptor(key, foreign, attributes, CALLBACKS, index) {}
};
-
-
-template <class T>
-bool IsPropertyDescriptor(T* desc) {
- switch (desc->type()) {
- case NORMAL:
- case FIELD:
- case CONSTANT_FUNCTION:
- case HANDLER:
- case INTERCEPTOR:
- return true;
- case CALLBACKS: {
- Object* callback_object = desc->GetCallbackObject();
- // Non-JavaScript (i.e. native) accessors are always a property,
otherwise
- // either the getter or the setter must be an accessor. Put another
way:
- // If we only see map transitions and holes in a pair, this is not a
- // property.
- return (!callback_object->IsAccessorPair() ||
- AccessorPair::cast(callback_object)->ContainsAccessor());
- }
- case MAP_TRANSITION:
- case ELEMENTS_TRANSITION:
- case CONSTANT_TRANSITION:
- case NULL_DESCRIPTOR:
- return false;
- }
- UNREACHABLE(); // keep the compiler happy
- return false;
-}
class LookupResult BASE_EMBEDDED {
@@ -290,9 +261,10 @@
bool IsFound() { return lookup_type_ != NOT_FOUND; }
bool IsHandler() { return lookup_type_ == HANDLER_TYPE; }
- // Is the result is a property excluding transitions and the null
descriptor?
+ // Is the result is a property excluding transitions and the null
+ // descriptor?
bool IsProperty() {
- return IsFound() && IsPropertyDescriptor(this);
+ return IsFound() && IsRealProperty(GetPropertyDetails().type());
}
bool IsCacheable() { return cacheable_; }
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev