Reviewers: Toon Verwaest,

Description:
Merged r12569 into trunk branch.

Fix CNLT for enum indices.

[email protected]


Please review this at https://chromiumcodereview.appspot.com/10957018/

SVN Base: https://v8.googlecode.com/svn/trunk

Affected files:
  M src/objects.h
  M src/version.cc
  A + test/mjsunit/regress/regress-cnlt-enum-indices.js


Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index 141db175e97706461bf4d5491c4bd45e8656e4e7..5c607fe349a630919f759171d7060943d75272a6 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -2528,7 +2528,7 @@ class DescriptorArray: public FixedArray {
     Object* object = get(kEnumCacheIndex);
     if (object->IsSmi()) return false;
     FixedArray* bridge = FixedArray::cast(object);
-    return bridge->get(kEnumCacheBridgeIndicesCacheIndex)->IsSmi();
+    return !bridge->get(kEnumCacheBridgeIndicesCacheIndex)->IsSmi();
   }

   FixedArray* GetEnumIndicesCache() {
Index: src/version.cc
diff --git a/src/version.cc b/src/version.cc
index 477d925f221dc22e6685e3df079ee8649947001f..21e4e6ed84e7c929d2ec90b6c4e602ed8f386ce1 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -35,7 +35,7 @@
 #define MAJOR_VERSION     3
 #define MINOR_VERSION     14
 #define BUILD_NUMBER      0
-#define PATCH_LEVEL       0
+#define PATCH_LEVEL       1
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
 #define IS_CANDIDATE_VERSION 0
Index: test/mjsunit/regress/regress-cnlt-enum-indices.js
diff --git a/test/mjsunit/regress/regress-cntl-descriptors-enum.js b/test/mjsunit/regress/regress-cnlt-enum-indices.js
similarity index 87%
copy from test/mjsunit/regress/regress-cntl-descriptors-enum.js
copy to test/mjsunit/regress/regress-cnlt-enum-indices.js
index ee72fafc8a7c67f2b1ab6cc22a734ef8033a5697..03582bbbe424b10487fab13a6473e9b62781845e 100644
--- a/test/mjsunit/regress/regress-cntl-descriptors-enum.js
+++ b/test/mjsunit/regress/regress-cnlt-enum-indices.js
@@ -27,20 +27,19 @@

 // Flags: --allow-natives-syntax --expose-gc

-DontEnum = 2;
-
 var o = {};
-%SetProperty(o, "a", 0, DontEnum);
-
 var o2 = {};
-%SetProperty(o2, "a", 0, DontEnum);

+o.a = 1;
+o2.a = 1;
+function f() { return 10; }
+// Adds a non-field enumerable property.
+Object.defineProperty(o, "b", { get: f, enumerable: true });
+Object.defineProperty(o2, "b", { get: f, enumerable: true });
 assertTrue(%HaveSameMap(o, o2));
+o.c = 2;

-o.y = 2;
+for (var x in o) { }
+o = null;

-for (var v in o) { print(v); }
-o = {};
 gc();
-
-for (var v in o2) { print(v); }


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to