| Index: test/mjsunit/delete.js | 
| =================================================================== | 
| --- test/mjsunit/delete.js	(revision 4757) | 
| +++ test/mjsunit/delete.js	(working copy) | 
| @@ -44,16 +44,11 @@ | 
| assertTrue(delete x); | 
| assertTrue(typeof x === 'undefined', "x is gone"); | 
|  | 
| -/**** | 
| - * This test relies on DontDelete attributes. This is not | 
| - * working yet. | 
| - | 
| var y = 87; // should have DontDelete attribute | 
| assertEquals(87, y); | 
| assertFalse(delete y, "don't delete"); | 
| assertFalse(typeof y === 'undefined'); | 
| assertEquals(87, y); | 
| -*/ | 
|  | 
| var o = { x: 42, y: 87 }; | 
| assertTrue(has(o, 'x')); | 
| @@ -161,3 +156,25 @@ | 
| assertFalse(has(a, Math.pow(2,30)-1), "delete 2^30-1"); | 
| assertFalse(has(a, Math.pow(2,31)-1), "delete 2^31-1"); | 
| assertEquals(Math.pow(2,31), a.length); | 
| + | 
| +// Check that a LoadIC for a dictionary field works, even | 
| +// when the dictionary probe misses. | 
| +function load_deleted_property_using_IC() { | 
| +  var x = new Object(); | 
| +  x.a = 3; | 
| +  x.b = 4; | 
| +  x.c = 5; | 
| + | 
| +  delete x.c; | 
| +  assertEquals(3, load_a(x)); | 
| +  assertEquals(3, load_a(x)); | 
| +  delete x.a; | 
| +  assertTrue(typeof load_a(x) === 'undefined', "x.a is gone"); | 
| +  assertTrue(typeof load_a(x) === 'undefined', "x.a is gone"); | 
| +} | 
| + | 
| +function load_a(x) { | 
| +  return x.a; | 
| +} | 
| + | 
| +load_deleted_property_using_IC(); | 
|  |