| Index: test/mjsunit/object-freeze.js
 | 
| diff --git a/test/mjsunit/object-freeze.js b/test/mjsunit/object-freeze.js
 | 
| index 5d1f8b7c5b0abb092639c90945c70aec48753a44..23f5af0f0c2c9de4489828fa5f0e628ad5d05d3d 100644
 | 
| --- a/test/mjsunit/object-freeze.js
 | 
| +++ b/test/mjsunit/object-freeze.js
 | 
| @@ -25,33 +25,20 @@
 | 
|  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
|  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
|  
 | 
| -// Tests the Object.freeze and Object.isFrozen methods - ES 15.2.3.9 and
 | 
| -// ES 15.2.3.12
 | 
| +// Tests the Object.freeze and Object.isFrozen methods - ES 19.1.2.5 and
 | 
| +// ES 19.1.2.12
 | 
|  
 | 
|  // Flags: --allow-natives-syntax
 | 
|  
 | 
| -// Test that we throw an error if an object is not passed as argument.
 | 
| -var non_objects = new Array(undefined, null, 1, -1, 0, 42.43);
 | 
| +// Test that we return obj if non-object is passed as argument
 | 
| +var non_objects = new Array(undefined, null, 1, -1, 0, 42.43, Symbol("test"));
 | 
|  for (var key in non_objects) {
 | 
| -  var exception = false;
 | 
| -  try {
 | 
| -    Object.freeze(non_objects[key]);
 | 
| -  } catch(e) {
 | 
| -    exception = true;
 | 
| -    assertTrue(/Object.freeze called on non-object/.test(e));
 | 
| -  }
 | 
| -  assertTrue(exception);
 | 
| +  assertSame(non_objects[key], Object.freeze(non_objects[key]));
 | 
|  }
 | 
|  
 | 
| +// Test that isFrozen always returns true for non-objects
 | 
|  for (var key in non_objects) {
 | 
| -  exception = false;
 | 
| -  try {
 | 
| -    Object.isFrozen(non_objects[key]);
 | 
| -  } catch(e) {
 | 
| -    exception = true;
 | 
| -    assertTrue(/Object.isFrozen called on non-object/.test(e));
 | 
| -  }
 | 
| -  assertTrue(exception);
 | 
| +  assertTrue(Object.isFrozen(non_objects[key]));
 | 
|  }
 | 
|  
 | 
|  // Test normal data properties.
 | 
| @@ -348,3 +335,64 @@ assertFalse(Object.isFrozen(obj));
 | 
|  Object.freeze(obj);
 | 
|  assertTrue(Object.isSealed(obj));
 | 
|  assertTrue(Object.isFrozen(obj));
 | 
| +
 | 
| +
 | 
| +(function propertiesOfFrozenObjectNotFrozen() {
 | 
| +  function Frozen() {}
 | 
| +  Object.freeze(Frozen);
 | 
| +  assertDoesNotThrow(function() { return new Frozen(); });
 | 
| +  Frozen.prototype.prototypeExists = true;
 | 
| +  assertTrue((new Frozen()).prototypeExists);
 | 
| +})();
 | 
| +
 | 
| +
 | 
| +(function frozenPrototypePreventsPUT() {
 | 
| +  // A read-only property on the prototype should prevent a [[Put]] .
 | 
| +  function Constructor() {}
 | 
| +  Constructor.prototype.foo = 1;
 | 
| +  Object.freeze(Constructor.prototype);
 | 
| +  var obj = new Constructor();
 | 
| +  obj.foo = 2;
 | 
| +  assertSame(1, obj.foo);
 | 
| +})();
 | 
| +
 | 
| +
 | 
| +(function frozenFunctionSloppy() {
 | 
| +  // Check that freezing a function works correctly.
 | 
| +  var func = Object.freeze(function foo(){});
 | 
| +  assertTrue(Object.isFrozen(func));
 | 
| +  func.prototype = 42;
 | 
| +  assertFalse(func.prototype === 42);
 | 
| +  assertFalse(Object.getOwnPropertyDescriptor(func, "prototype").writable);
 | 
| +})();
 | 
| +
 | 
| +
 | 
| +(function frozenFunctionStrict() {
 | 
| +  // Check that freezing a strict function works correctly.
 | 
| +  var func = Object.freeze(function foo(){ "use strict"; });
 | 
| +  assertTrue(Object.isFrozen(func));
 | 
| +  func.prototype = 42;
 | 
| +  assertFalse(func.prototype === 42);
 | 
| +  assertFalse(Object.getOwnPropertyDescriptor(func, "prototype").writable);
 | 
| +})();
 | 
| +
 | 
| +
 | 
| +(function frozenArrayObject() {
 | 
| +  // Check that freezing array objects works correctly.
 | 
| +  var array = Object.freeze([0,1,2]);
 | 
| +  assertTrue(Object.isFrozen(array));
 | 
| +  array[0] = 3;
 | 
| +  assertEquals(0, array[0]);
 | 
| +  assertFalse(Object.getOwnPropertyDescriptor(array, "length").writable);
 | 
| +})();
 | 
| +
 | 
| +
 | 
| +(function frozenArgumentsObject() {
 | 
| +  // Check that freezing arguments objects works correctly.
 | 
| +  var args = Object.freeze((function(){ return arguments; })(0,1,2));
 | 
| +  assertTrue(Object.isFrozen(args));
 | 
| +  args[0] = 3;
 | 
| +  assertEquals(0, args[0]);
 | 
| +  assertFalse(Object.getOwnPropertyDescriptor(args, "length").writable);
 | 
| +  assertFalse(Object.getOwnPropertyDescriptor(args, "callee").writable);
 | 
| +})();
 | 
| 
 |