7131f4d
From 196184d332ba2d2defc56ad0b37653659a7d3ec0 Mon Sep 17 00:00:00 2001
7131f4d
From: "svenpanne@chromium.org" <svenpanne@chromium.org>
7131f4d
Date: Fri, 9 Nov 2012 11:30:05 +0000
7131f4d
Subject: [PATCH] v8: backport codereview.chromium.org/11362182
7131f4d
7131f4d
Keep the number of descriptors below
7131f4d
DescriptorArray::kMaxNumberOfDescriptors even for accessors
7131f4d
7131f4d
Review URL: https://codereview.chromium.org/11362182
7131f4d
---
7131f4d
 src/objects.cc | 4 +++-
7131f4d
 1 file changed, 3 insertions(+), 1 deletion(-)
7131f4d
7131f4d
diff --git a/src/objects.cc b/src/objects.cc
7131f4d
--- a/src/objects.cc
7131f4d
+++ b/src/objects.cc
7131f4d
@@ -4453,7 +4453,9 @@ MaybeObject* JSObject::DefinePropertyAccessor(String* name,
7131f4d
   // to do a lookup, which seems to be a bit of overkill.
7131f4d
   Heap* heap = GetHeap();
7131f4d
   bool only_attribute_changes = getter->IsNull() && setter->IsNull();
7131f4d
-  if (HasFastProperties() && !only_attribute_changes) {
7131f4d
+  if (HasFastProperties() && !only_attribute_changes &&
7131f4d
+      (map()->NumberOfOwnDescriptors() <
7131f4d
+       DescriptorArray::kMaxNumberOfDescriptors)) {
7131f4d
     MaybeObject* getterOk = heap->undefined_value();
7131f4d
     if (!getter->IsNull()) {
7131f4d
       getterOk = DefineFastAccessor(name, ACCESSOR_GETTER, getter, attributes);
7131f4d
--
7131f4d
1.8.5.1
7131f4d