Reviewers: Jakob,
Message:
PTAL.
Description:
Fix CNLT for enum indices.
Please review this at https://chromiumcodereview.appspot.com/10958015/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/objects.h
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: 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