| Index: test/mjsunit/strong/object-delete.js | 
| diff --git a/test/mjsunit/strong/object-delete.js b/test/mjsunit/strong/object-delete.js | 
| deleted file mode 100644 | 
| index a655b65c78fa2bfedd08d767bb43760765ce7167..0000000000000000000000000000000000000000 | 
| --- a/test/mjsunit/strong/object-delete.js | 
| +++ /dev/null | 
| @@ -1,255 +0,0 @@ | 
| -// Copyright 2015 the V8 project authors. All rights reserved. | 
| -// Use of this source code is governed by a BSD-style license that can be | 
| -// found in the LICENSE file. | 
| - | 
| -// Flags: --strong-mode --allow-natives-syntax | 
| - | 
| -// TODO(conradw): Track implementation of strong bit for other objects, add | 
| -// tests. | 
| - | 
| -function getSloppyObjects() { | 
| -  return [(function(){}), ({})]; | 
| -} | 
| - | 
| -function getStrictObjects() { | 
| -  "use strict"; | 
| -  return [(function(){}), ({})]; | 
| -} | 
| - | 
| -function getWeakObjects() { | 
| -  return getSloppyObjects().concat(getStrictObjects()); | 
| -} | 
| - | 
| -function getStrongObjects() { | 
| -  "use strong"; | 
| -// Strong functions can't have properties added to them, and will be tested as a | 
| -// special case. | 
| -  return [({})]; | 
| -} | 
| - | 
| -function strongFunction() { | 
| -  "use strong"; | 
| -} | 
| - | 
| -function deleteFromObjectSloppy(o) { | 
| -  return delete o.foo; | 
| -} | 
| - | 
| -function deleteFromObjectKeyedSloppy(o) { | 
| -  return delete o["foo"]; | 
| -} | 
| - | 
| -function deleteFromObjectKeyedVarSloppy(o) { | 
| -  var a = "foo"; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function deleteFromObjectKeyedComputedSloppy(o) { | 
| -  var a = "o"; | 
| -  return delete o["fo" + a]; | 
| -} | 
| - | 
| -function deleteFromObjectWith(o) { | 
| -  with (o) { | 
| -    return delete foo; | 
| -  } | 
| -} | 
| - | 
| -function deleteFromObjectElementSloppy(o) { | 
| -  return delete o[0]; | 
| -} | 
| - | 
| -function deleteFromObjectElementVarSloppy(o) { | 
| -  var a = 0; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function deleteFromObjectElementSparseSloppy(o) { | 
| -  return delete o[100000]; | 
| -} | 
| - | 
| -function deleteFromObjectElementVarSloppy(o) { | 
| -  var a = 0; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function deleteFromObjectElementSparseVarSloppy(o) { | 
| -  var a = 100000; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function deleteFromObjectStrict(o) { | 
| -  "use strict"; | 
| -  return delete o.foo; | 
| -} | 
| - | 
| -function deleteFromObjectKeyedStrict(o) { | 
| -  "use strict"; | 
| -  return delete o["foo"]; | 
| -} | 
| - | 
| -function deleteFromObjectKeyedVarStrict(o) { | 
| -  "use strict"; | 
| -  var a = "foo"; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function deleteFromObjectKeyedComputedStrict(o) { | 
| -  "use strict"; | 
| -  var a = "o"; | 
| -  return delete o["fo" + a]; | 
| -} | 
| - | 
| -function deleteFromObjectElementStrict(o) { | 
| -  "use strict"; | 
| -  return delete o[0]; | 
| -} | 
| - | 
| -function deleteFromObjectElementSparseStrict(o) { | 
| -  "use strict"; | 
| -  return delete o[100000]; | 
| -} | 
| - | 
| -function deleteFromObjectElementVarStrict(o) { | 
| -  "use strict"; | 
| -  var a = 0; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function deleteFromObjectElementSparseVarStrict(o) { | 
| -  "use strict"; | 
| -  var a = 100000; | 
| -  return delete o[a]; | 
| -} | 
| - | 
| -function testStrongObjectDelete() { | 
| -  "use strict"; | 
| - | 
| -  let deletePropertyFuncsSloppy = [ | 
| -    deleteFromObjectSloppy, | 
| -    deleteFromObjectKeyedSloppy, | 
| -    deleteFromObjectKeyedVarSloppy, | 
| -    deleteFromObjectKeyedComputedSloppy, | 
| -    deleteFromObjectWith | 
| -  ]; | 
| -  let deletePropertyFuncsStrict = [ | 
| -    deleteFromObjectStrict, | 
| -    deleteFromObjectKeyedStrict, | 
| -    deleteFromObjectKeyedVarStrict, | 
| -    deleteFromObjectKeyedComputedStrict | 
| -  ]; | 
| -  let deleteElementFuncsSloppy = [ | 
| -    deleteFromObjectElementSloppy, | 
| -    deleteFromObjectElementVarSloppy | 
| -  ]; | 
| -  let deleteElementSparseFuncsSloppy = [ | 
| -    deleteFromObjectElementSparseSloppy, | 
| -    deleteFromObjectElementSparseVarSloppy | 
| -  ]; | 
| -  let deleteElementFuncsStrict = [ | 
| -    deleteFromObjectElementStrict, | 
| -    deleteFromObjectElementVarStrict | 
| -  ]; | 
| -  let deleteElementSparseFuncsStrict = [ | 
| -    deleteFromObjectElementSparseStrict, | 
| -    deleteFromObjectElementSparseVarStrict | 
| -  ]; | 
| -  let deleteFuncs = deletePropertyFuncsSloppy.concat( | 
| -    deletePropertyFuncsStrict, deleteElementFuncsSloppy, | 
| -    deleteElementSparseFuncsSloppy, deleteElementFuncsStrict, | 
| -    deleteElementSparseFuncsStrict); | 
| - | 
| -  for (let deleteFunc of deleteFuncs) { | 
| -    assertTrue(deleteFunc(strongFunction)); | 
| -  } | 
| - | 
| -  let testCasesSloppy = [ | 
| -    [deletePropertyFuncsSloppy, "foo"], | 
| -    [deleteElementFuncsSloppy, "0"], | 
| -    [deleteElementSparseFuncsSloppy, "100000"] | 
| -  ]; | 
| - | 
| -  let testCasesStrict = [ | 
| -    [deletePropertyFuncsStrict, "foo"], | 
| -    [deleteElementFuncsStrict, "0"], | 
| -    [deleteElementSparseFuncsStrict, "100000"] | 
| -  ]; | 
| - | 
| -  let propDescs = [ | 
| -     {configurable: true, value: "bar"}, | 
| -     {configurable: true, value: 1}, | 
| -     {configurable: true, enumerable: true, writable: true, value: "bar"}, | 
| -     {configurable: true, enumerable: true, writable: true, value: 1}, | 
| -     {configurable: true, get: (function(){return 0}), set: (function(x){})} | 
| -  ]; | 
| - | 
| -  for (let propDesc of propDescs) { | 
| -    for (let testCase of testCasesSloppy) { | 
| -      let name = testCase[1]; | 
| -      for (let deleteFunc of testCase[0]) { | 
| -        for (let o of getWeakObjects()) { | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(delete o["bar"]); | 
| -          assertTrue(delete o[5000]); | 
| -          assertTrue(deleteFunc(o)); | 
| -          assertFalse(o.hasOwnProperty(name)); | 
| -          %OptimizeFunctionOnNextCall(deleteFunc); | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(deleteFunc(o)); | 
| -          assertFalse(o.hasOwnProperty(name)); | 
| -          %DeoptimizeFunction(deleteFunc); | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(deleteFunc(o)); | 
| -          assertFalse(o.hasOwnProperty(name)); | 
| -        } | 
| -        for (let o of getStrongObjects()) { | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(delete o["bar"]); | 
| -          assertTrue(delete o[5000]); | 
| -          assertFalse(deleteFunc(o)); | 
| -          assertTrue(o.hasOwnProperty(name)); | 
| -          %OptimizeFunctionOnNextCall(deleteFunc); | 
| -          assertFalse(deleteFunc(o)); | 
| -          assertTrue(o.hasOwnProperty(name)); | 
| -          %DeoptimizeFunction(deleteFunc); | 
| -          assertFalse(deleteFunc(o)); | 
| -          assertTrue(o.hasOwnProperty(name)); | 
| -        } | 
| -      } | 
| -    } | 
| -    for (let testCase of testCasesStrict) { | 
| -      let name = testCase[1]; | 
| -      for (let deleteFunc of testCase[0]) { | 
| -        for (let o of getWeakObjects()) { | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(delete o["bar"]); | 
| -          assertTrue(delete o[5000]); | 
| -          assertTrue(deleteFunc(o)); | 
| -          assertFalse(o.hasOwnProperty(name)); | 
| -          %OptimizeFunctionOnNextCall(deleteFunc); | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(deleteFunc(o)); | 
| -          assertFalse(o.hasOwnProperty(name)); | 
| -          %DeoptimizeFunction(deleteFunc); | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(deleteFunc(o)); | 
| -          assertFalse(o.hasOwnProperty(name)); | 
| -        } | 
| -        for (let o of getStrongObjects()) { | 
| -          Object.defineProperty(o, name, propDesc); | 
| -          assertTrue(delete o["bar"]); | 
| -          assertTrue(delete o[5000]); | 
| -          assertThrows(function(){deleteFunc(o)}, TypeError); | 
| -          assertTrue(o.hasOwnProperty(name)); | 
| -          %OptimizeFunctionOnNextCall(deleteFunc); | 
| -          assertThrows(function(){deleteFunc(o)}, TypeError); | 
| -          assertTrue(o.hasOwnProperty(name)); | 
| -          %DeoptimizeFunction(deleteFunc); | 
| -          assertThrows(function(){deleteFunc(o)}, TypeError); | 
| -          assertTrue(o.hasOwnProperty(name)); | 
| -        } | 
| -      } | 
| -    } | 
| -  } | 
| -} | 
| -testStrongObjectDelete(); | 
|  |