Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(284)

Unified Diff: test/mjsunit/regress/regress-1493017.js

Issue 43004: Simplify the map collection regression test. This test is the minimal... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/regress/regress-1493017.js
===================================================================
--- test/mjsunit/regress/regress-1493017.js (revision 1466)
+++ test/mjsunit/regress/regress-1493017.js (working copy)
@@ -1,4 +1,4 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 2009 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
@@ -25,62 +25,28 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Test for collection of abandoned maps
+// Test collection of abandoned maps. Tests that deleted map
+// transitions do not show up as properties in for in.
-// This test makes a wide, shallow tree of map transitions and maps
-// by adding the properties "a" through "j" in a pseudorandom order
-// to a new A() object. This should create map transitions forming
-// a partial denary tree. These objects only stick around for about
-// 1000 iterations, with each iteration creating a new object. Therefore,
-// some of the maps going to leaves will become abandoned.
-// There are still map transitions going to them though, so
-// only the new map-collection code will remove them.
+// Flags: --expose-gc --collect-maps
-// Every 101 object creations, the object is created again, and tested
-// after each property addition to make sure that no map transitions
-// are visible as properties. This is a regression test for a bug.
+function C() {}
-// Flags: --expose-gc --collect-maps
-function dotest() {
- function A() {
- }
+// Create an instance of C. Add a property to the instance and then
+// remove all references to instances of C.
+var o = new C();
+o.x = 42;
+o = null;
- function B() {
- this.x = 3;
- }
+// Force a global GC. This will collect the maps starting from C and
+// delete map transitions.
+gc();
- var a_B = new B();
- var r = 1;
- var i = 0;
- var holder = new Array();
- while (i++ < 2001) {
- if (i == 1400) {
- gc();
- }
- var s = r % 100000000;
- var obj = new A();
- holder[i % 1000] = obj;
- while (s > 0) {
- var property_name = String.fromCharCode(s % 10 + 97);
- obj[property_name] = a_B;
- s = s / 10;
- }
- if (i % 101 == 0) {
- // Check that all object maps have no undefined properties
- s = r % 100000000;
- obj = new A();
- while (s > 0) {
- for (var p in obj) {
- assertEquals(a_B, obj[p] );
- }
- property_name = String.fromCharCode(s % 10 + 97);
- obj[property_name] = a_B;
- s = s / 10;
- }
- }
- r = r * 7 % 100000000;
- }
-}
+// Create a new instance of C.
+o = new C();
-dotest();
+// Test that the deleted map transitions do not show up in for in.
+for (var p in o) {
+ assertTrue(false);
+}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698