v8: backport codereview.chromium.org/11362182
authorsvenpanne@chromium.org <svenpanne@chromium.org>
Fri, 9 Nov 2012 11:30:05 +0000 (11:30 +0000)
committerFedor Indutny <fedor.indutny@gmail.com>
Fri, 10 Jan 2014 23:32:08 +0000 (23:32 +0000)
Keep the number of descriptors below
DescriptorArray::kMaxNumberOfDescriptors even for accessors

Review URL: https://codereview.chromium.org/11362182

deps/v8/src/objects.cc

index 37f8361..9935c22 100644 (file)
@@ -4453,7 +4453,9 @@ MaybeObject* JSObject::DefinePropertyAccessor(String* name,
   // to do a lookup, which seems to be a bit of overkill.
   Heap* heap = GetHeap();
   bool only_attribute_changes = getter->IsNull() && setter->IsNull();
-  if (HasFastProperties() && !only_attribute_changes) {
+  if (HasFastProperties() && !only_attribute_changes &&
+      (map()->NumberOfOwnDescriptors() <
+       DescriptorArray::kMaxNumberOfDescriptors)) {
     MaybeObject* getterOk = heap->undefined_value();
     if (!getter->IsNull()) {
       getterOk = DefineFastAccessor(name, ACCESSOR_GETTER, getter, attributes);