diff --git a/test/built-ins/ArrayBuffer/prototype/Symbol.toStringTag.js b/test/built-ins/ArrayBuffer/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..e096acf395321edd1e2fd738fe003b08c9c73b0b
--- /dev/null
+++ b/test/built-ins/ArrayBuffer/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 24.1.4.4
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "ArrayBuffer".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(ArrayBuffer.prototype[Symbol.toStringTag], 'ArrayBuffer');
+
+verifyNotEnumerable(ArrayBuffer.prototype, Symbol.toStringTag);
+verifyNotWritable(ArrayBuffer.prototype, Symbol.toStringTag);
+verifyConfigurable(ArrayBuffer.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/property-descriptor.js b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/property-descriptor.js
index a146fe49de986bdc5f34603c2a8e6c8fbf7fbe89..776df3a5a9c0a6a5d8626cd27924ca542be7d1d3 100644
--- a/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/property-descriptor.js
+++ b/test/built-ins/ArrayIteratorPrototype/Symbol.toStringTag/property-descriptor.js
@@ -2,12 +2,18 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-  description: >
-      `Object.prototype.getOwnPropertyDescriptor` should reflect the value and
-      writability of the @@toStringTag attribute.
-  includes: [propertyHelper.js]
-  es6id: 22.1.5.2.2
- ---*/
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value "Array
+    Iterator".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+features: [Symbol.iterator, Symbol.toStringTag]
+includes: [propertyHelper.js]
+es6id: 22.1.5.2.2
+---*/
 
 var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]());
 
diff --git a/test/built-ins/DataView/prototype/Symbol.toStringTag.js b/test/built-ins/DataView/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..87fa3275926a3be8cbe0dca7ccf37dd2f7859f83
--- /dev/null
+++ b/test/built-ins/DataView/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 24.2.4.21
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "DataView".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(DataView.prototype[Symbol.toStringTag], 'DataView');
+
+verifyNotEnumerable(DataView.prototype, Symbol.toStringTag);
+verifyNotWritable(DataView.prototype, Symbol.toStringTag);
+verifyConfigurable(DataView.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/GeneratorFunction/prototype/toStringTag.js b/test/built-ins/GeneratorFunction/prototype/Symbol.toStringTag.js
similarity index 66%
rename from test/built-ins/GeneratorFunction/prototype/toStringTag.js
rename to test/built-ins/GeneratorFunction/prototype/Symbol.toStringTag.js
index 3008a506085683efc02d94cf6ab3cc8ca9115287..e542b8dd113963ded18a284aa853dcfcba8c031c 100644
--- a/test/built-ins/GeneratorFunction/prototype/toStringTag.js
+++ b/test/built-ins/GeneratorFunction/prototype/Symbol.toStringTag.js
@@ -3,9 +3,16 @@
 
 /*---
 description: >
-    The GeneratorFunctionPrototype defines an `@@toStringTag` property.
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "GeneratorFunction".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
 es6id: 25.2.3.3
 includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
 ---*/
 
 var GeneratorFunctionPrototype = Object.getPrototypeOf(function*() {});
diff --git a/test/built-ins/GeneratorPrototype/Symbol.toStringTag.js b/test/built-ins/GeneratorPrototype/Symbol.toStringTag.js
index f684cd9c7245dea1ba4812882867c0e83976fe9e..29a62affd66835f6adaf587887dc3d18202020b1 100644
--- a/test/built-ins/GeneratorPrototype/Symbol.toStringTag.js
+++ b/test/built-ins/GeneratorPrototype/Symbol.toStringTag.js
@@ -3,9 +3,16 @@
 
 /*---
 description: >
-    The Generator prototype defines a `@@toStringTag` attribute.
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Generator".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
 es6id: 25.3.1.5
 includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
 ---*/
 
 var GeneratorPrototype = Object.getPrototypeOf(
diff --git a/test/built-ins/JSON/Symbol.toStringTag.js b/test/built-ins/JSON/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c37ee9c2d63297db77c1808c946cc0c207e3c59
--- /dev/null
+++ b/test/built-ins/JSON/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 24.3.3
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "JSON".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(JSON[Symbol.toStringTag], 'JSON');
+
+verifyNotEnumerable(JSON, Symbol.toStringTag);
+verifyNotWritable(JSON, Symbol.toStringTag);
+verifyConfigurable(JSON, Symbol.toStringTag);
diff --git a/test/built-ins/Map/prototype/Symbol.toStringTag.js b/test/built-ins/Map/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf9a86f70b7a6f736d4bfcf6fab1cb4916734e7d
--- /dev/null
+++ b/test/built-ins/Map/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 23.1.3.13
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Map".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(Map.prototype[Symbol.toStringTag], 'Map');
+
+verifyNotEnumerable(Map.prototype, Symbol.toStringTag);
+verifyNotWritable(Map.prototype, Symbol.toStringTag);
+verifyConfigurable(Map.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/Map/prototype/Symbol.toStringTag/property-descriptor.js b/test/built-ins/Map/prototype/Symbol.toStringTag/property-descriptor.js
deleted file mode 100644
index efc2514cf993bd5b610ee429292d9ff7dbcb4798..0000000000000000000000000000000000000000
--- a/test/built-ins/Map/prototype/Symbol.toStringTag/property-descriptor.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (C) 2015 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-es6id: 23.1.3.13
-description: >
-  Map.prototype[ @@toStringTag ] value and descriptor.
-includes: [propertyHelper.js]
-features: [Symbol.toStringTag]
- ---*/
-
-var MapProto = Object.getPrototypeOf(new Map());
-
-assert.sameValue(
-  MapProto[Symbol.toStringTag],
-  'Map',
-  'The value of MapProto[Symbol.toStringTag] is Map'
-);
-
-verifyNotEnumerable(MapProto, Symbol.toStringTag);
-verifyNotWritable(MapProto, Symbol.toStringTag);
-verifyConfigurable(MapProto, Symbol.toStringTag);
diff --git a/test/built-ins/MapIteratorPrototype/Symbol.toStringTag.js b/test/built-ins/MapIteratorPrototype/Symbol.toStringTag.js
index d69331c9cc4f11139b1a609e95bb4ed917081bb9..3139c5fa21cd5eadf45202b3c4c908e0584230dd 100644
--- a/test/built-ins/MapIteratorPrototype/Symbol.toStringTag.js
+++ b/test/built-ins/MapIteratorPrototype/Symbol.toStringTag.js
@@ -3,10 +3,16 @@
 /*---
 es6id: 23.1.5.2.2
 description: >
-  `Object.prototype.getOwnPropertyDescriptor` should reflect the value and
-  writability of the @@toStringTag attribute.
+   `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Map Iterator".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
- ---*/
+features: [Symbol.iterator, Symbol.toStringTag]
+---*/
 
 var MapIteratorProto = Object.getPrototypeOf(new Map()[Symbol.iterator]());
 
diff --git a/test/built-ins/Math/Symbol.toStringTag.js b/test/built-ins/Math/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ba869e3af0c3c6110f0e3b187db3cdbb68d4498
--- /dev/null
+++ b/test/built-ins/Math/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 20.2.1.9
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Math".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(Math[Symbol.toStringTag], 'Math');
+
+verifyNotEnumerable(Math, Symbol.toStringTag);
+verifyNotWritable(Math, Symbol.toStringTag);
+verifyConfigurable(Math, Symbol.toStringTag);
diff --git a/test/built-ins/Object/prototype/toString/get-symbol-tag-err.js b/test/built-ins/Object/prototype/toString/get-symbol-tag-err.js
new file mode 100644
index 0000000000000000000000000000000000000000..0634763d9f48d8793c1eeff3653a19f7fedc8a99
--- /dev/null
+++ b/test/built-ins/Object/prototype/toString/get-symbol-tag-err.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Behavior if error is thrown when accessing `Symbol.toStringTag` property
+es6id: 19.1.3.6
+info: >
+    16. Let tag be Get (O, @@toStringTag).
+    17. ReturnIfAbrupt(tag).
+features: [Symbol.toStringTag]
+---*/
+
+var poisonedToStringTag = Object.defineProperty({}, Symbol.toStringTag, {
+  get: function() {
+    throw new Test262Error();
+  }
+});
+
+assert.throws(Test262Error, function() {
+  poisonedToStringTag.toString();
+});
diff --git a/test/built-ins/Object/prototype/toString/symbol-tag-non-str.js b/test/built-ins/Object/prototype/toString/symbol-tag-non-str.js
new file mode 100644
index 0000000000000000000000000000000000000000..556444fdda4973ef87bb07f7e77d2cb3c42d9918
--- /dev/null
+++ b/test/built-ins/Object/prototype/toString/symbol-tag-non-str.js
@@ -0,0 +1,38 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Non-string values of `Symbol.toStringTag` property are ignored
+es6id: 19.1.3.6
+info: >
+    16. Let tag be Get (O, @@toStringTag).
+    17. ReturnIfAbrupt(tag).
+    18. If Type(tag) is not String, let tag be builtinTag.
+    19. Return the String that is the result of concatenating "[object ", tag,
+        and "]".
+features: [Symbol.toStringTag]
+---*/
+
+var custom = {};
+
+custom[Symbol.toStringTag] = undefined;
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
+
+custom[Symbol.toStringTag] = null;
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
+
+custom[Symbol.toStringTag] = Symbol.toStringTag;
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
+
+custom[Symbol.toStringTag] = 86;
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
+
+custom[Symbol.toStringTag] = new String('test262');
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
+
+custom[Symbol.toStringTag] = {};
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
+
+custom[Symbol.toStringTag] = { toString: function() { return 'str'; } };
+assert.sameValue(Object.prototype.toString.call(custom), '[object Object]');
diff --git a/test/built-ins/Object/prototype/toString/symbol-tag-override.js b/test/built-ins/Object/prototype/toString/symbol-tag-override.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a30e22acdf7fe337a9dab7215a7ba5feff50c41
--- /dev/null
+++ b/test/built-ins/Object/prototype/toString/symbol-tag-override.js
@@ -0,0 +1,53 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    String values of `Symbol.toStringTag` property override built-in tags
+es6id: 19.1.3.6
+info: >
+    16. Let tag be Get (O, @@toStringTag).
+    17. ReturnIfAbrupt(tag).
+    18. If Type(tag) is not String, let tag be builtinTag.
+    19. Return the String that is the result of concatenating "[object ", tag,
+        and "]".
+features: [Symbol.toStringTag]
+---*/
+
+var custom;
+
+custom = [];
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = new String();
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = (function() { return arguments; }());
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = function() {};
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = new Error();
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = new Boolean();
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = new Number();
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = new Date();
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
+
+custom = /./;
+custom[Symbol.toStringTag] = 'test262';
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
diff --git a/test/built-ins/Object/prototype/toString/symbol-tag-str.js b/test/built-ins/Object/prototype/toString/symbol-tag-str.js
new file mode 100644
index 0000000000000000000000000000000000000000..ec7191c02f8a118de574bfaa41d6430c7aaffb80
--- /dev/null
+++ b/test/built-ins/Object/prototype/toString/symbol-tag-str.js
@@ -0,0 +1,20 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    String values of `Symbol.toStringTag` property are honored
+es6id: 19.1.3.6
+info: >
+    16. Let tag be Get (O, @@toStringTag).
+    17. ReturnIfAbrupt(tag).
+    18. If Type(tag) is not String, let tag be builtinTag.
+    19. Return the String that is the result of concatenating "[object ", tag,
+        and "]".
+features: [Symbol.toStringTag]
+---*/
+
+var custom = {};
+custom[Symbol.toStringTag] = 'test262';
+
+assert.sameValue(Object.prototype.toString.call(custom), '[object test262]');
diff --git a/test/built-ins/Promise/prototype/Symbol.toStringTag.js b/test/built-ins/Promise/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..96d5f23c4f8470f032666da1e405c9043f4d5a83
--- /dev/null
+++ b/test/built-ins/Promise/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 25.4.5.4
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Promise".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(Promise.prototype[Symbol.toStringTag], 'Promise');
+
+verifyNotEnumerable(Promise.prototype, Symbol.toStringTag);
+verifyNotWritable(Promise.prototype, Symbol.toStringTag);
+verifyConfigurable(Promise.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/Set/prototype/Symbol.toStringTag.js b/test/built-ins/Set/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9e5850fd2db7caebaa5d2e56621c14a2b8fd92d
--- /dev/null
+++ b/test/built-ins/Set/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 23.2.3.12
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Set".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(Set.prototype[Symbol.toStringTag], 'Set');
+
+verifyNotEnumerable(Set.prototype, Symbol.toStringTag);
+verifyNotWritable(Set.prototype, Symbol.toStringTag);
+verifyConfigurable(Set.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/SetIteratorPrototype/Symbol.toStringTag.js b/test/built-ins/SetIteratorPrototype/Symbol.toStringTag.js
index 83a389f86fdc05f3444f857ba9902a8cb5c6205b..ac5c54812aa83fd227c51b799df865d1859e1190 100644
--- a/test/built-ins/SetIteratorPrototype/Symbol.toStringTag.js
+++ b/test/built-ins/SetIteratorPrototype/Symbol.toStringTag.js
@@ -1,15 +1,20 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 23.2.3.12
+es6id: 23.2.5.2.2
 description: >
-  `Object.prototype.getOwnPropertyDescriptor` should reflect the value and
-  writability of the @@toStringTag attribute.
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Set Iterator".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
 features:
   - Symbol.toStringTag
   - Symbol.iterator
- ---*/
+---*/
 
 var SetIteratorProto = Object.getPrototypeOf(new Set()[Symbol.iterator]());
 
diff --git a/test/built-ins/StringIteratorPrototype/Symbol.toStringTag.js b/test/built-ins/StringIteratorPrototype/Symbol.toStringTag.js
index 43d591a4306a6581124a58980b54f82885c37d5a..98ea785a17d3795f325f1ad4196241c741715d01 100644
--- a/test/built-ins/StringIteratorPrototype/Symbol.toStringTag.js
+++ b/test/built-ins/StringIteratorPrototype/Symbol.toStringTag.js
@@ -1,11 +1,16 @@
 // Copyright (C) 2014 the V8 project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-es6id: 21.1.5.2.1
+es6id: 21.1.5.2.2
 description: >
+    `Symbol.toStringTag` property descriptor
+info: >
     The initial value of the @@toStringTag property is the string value "String
-    Iterator". This property has the attributes { [[Writable]]: false,
-    [[Enumerable]]: false, [[Configurable]]: true }.
+    Iterator".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+features: [Symbol.iterator, Symbol.toStringTag]
 includes: [propertyHelper.js]
 ---*/
 
diff --git a/test/built-ins/Symbol/prototype/@@toStringTag/@@toStringTag.js b/test/built-ins/Symbol/prototype/@@toStringTag/@@toStringTag.js
deleted file mode 100644
index 4e90dff4359f89924c21d49e4f8fe902009fa009..0000000000000000000000000000000000000000
--- a/test/built-ins/Symbol/prototype/@@toStringTag/@@toStringTag.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (C) 2013 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-es6id: 19.4.3.2
-description: >
-    toStringTag return value
----*/
-assert.sameValue(
-    Object.prototype.toString.call(Symbol('66')),
-    '[object Symbol]',
-    "`Object.prototype.toString.call(Symbol('66'))` returns `'[object Symbol]'`"
-);
diff --git a/test/built-ins/Symbol/prototype/Symbol.toStringTag.js b/test/built-ins/Symbol/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..29296ae181e37035fe20bd6e00d81fd7d013b8cd
--- /dev/null
+++ b/test/built-ins/Symbol/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.4.3.5
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "Symbol".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(Symbol.prototype[Symbol.toStringTag], 'Symbol');
+
+verifyNotEnumerable(Symbol.prototype, Symbol.toStringTag);
+verifyNotWritable(Symbol.prototype, Symbol.toStringTag);
+verifyConfigurable(Symbol.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/Symbol/toStringTag/prop-desc.js b/test/built-ins/Symbol/toStringTag/prop-desc.js
new file mode 100644
index 0000000000000000000000000000000000000000..f675309dc7ccf30f73a03245cd967f64d9307c11
--- /dev/null
+++ b/test/built-ins/Symbol/toStringTag/prop-desc.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 19.4.2.13
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(typeof Symbol.toStringTag, 'symbol');
+verifyNotEnumerable(Symbol, 'toStringTag');
+verifyNotWritable(Symbol, 'toStringTag');
+verifyNotConfigurable(Symbol, 'toStringTag');
diff --git a/test/built-ins/WeakMap/prototype/Symbol.toStringTag.js b/test/built-ins/WeakMap/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..a5fb0227b061d3fc806fa61f32abca432027be88
--- /dev/null
+++ b/test/built-ins/WeakMap/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 23.3.3.6
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "WeakMap".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(WeakMap.prototype[Symbol.toStringTag], 'WeakMap');
+
+verifyNotEnumerable(WeakMap.prototype, Symbol.toStringTag);
+verifyNotWritable(WeakMap.prototype, Symbol.toStringTag);
+verifyConfigurable(WeakMap.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/WeakMap/prototype/Symbol.toStringTag/property-descriptor.js b/test/built-ins/WeakMap/prototype/Symbol.toStringTag/property-descriptor.js
deleted file mode 100644
index ef26cc6af667514cedaccde938f2c935cba18c21..0000000000000000000000000000000000000000
--- a/test/built-ins/WeakMap/prototype/Symbol.toStringTag/property-descriptor.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2015 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-es6id: 23.3.3.6
-description: "WeakMap#@@toStringTag value and writability"
-info: >
-  WeakMap.prototype [ @@toStringTag ]
-
-  The initial value of the @@toStringTag property is the String value "WeakMap".
-
-  This property has the attributes { [[Writable]]: false, [[Enumerable]]: false,
-  [[Configurable]]: true }.
-includes: [propertyHelper.js]
- ---*/
-
-var WeakMapProto = WeakMap.prototype;
-
-assert.sameValue(
-  WeakMapProto[Symbol.toStringTag],
-  'WeakMap',
-  'The value of WeakMap.prototype[Symbol.toStringTag] is "WeakMap"'
-);
-
-verifyNotEnumerable(WeakMapProto, Symbol.toStringTag);
-verifyNotWritable(WeakMapProto, Symbol.toStringTag);
-verifyConfigurable(WeakMapProto, Symbol.toStringTag);
diff --git a/test/built-ins/WeakSet/prototype/Symbol.toStringTag.js b/test/built-ins/WeakSet/prototype/Symbol.toStringTag.js
new file mode 100644
index 0000000000000000000000000000000000000000..33f9c1eff1a21bebf505dc522c9a7b3f7129faaf
--- /dev/null
+++ b/test/built-ins/WeakSet/prototype/Symbol.toStringTag.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 23.4.3.5
+description: >
+    `Symbol.toStringTag` property descriptor
+info: >
+    The initial value of the @@toStringTag property is the String value
+    "WeakSet".
+
+    This property has the attributes { [[Writable]]: false, [[Enumerable]]:
+    false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [Symbol.toStringTag]
+---*/
+
+assert.sameValue(WeakSet.prototype[Symbol.toStringTag], 'WeakSet');
+
+verifyNotEnumerable(WeakSet.prototype, Symbol.toStringTag);
+verifyNotWritable(WeakSet.prototype, Symbol.toStringTag);
+verifyConfigurable(WeakSet.prototype, Symbol.toStringTag);
diff --git a/test/built-ins/WeakSet/prototype/Symbol.toStringTag/property-descriptor.js b/test/built-ins/WeakSet/prototype/Symbol.toStringTag/property-descriptor.js
deleted file mode 100644
index 22637245d7acf799ad65441d97b498ba5c3ef031..0000000000000000000000000000000000000000
--- a/test/built-ins/WeakSet/prototype/Symbol.toStringTag/property-descriptor.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (C) 2015 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-es6id: 23.4.3.5
-description: "WeakSet#@@toStringTag value and writability"
-info: >
-  23.4.3.5 WeakSet.prototype [ @@toStringTag ]
-
-  The initial value of the @@toStringTag property is the string value
-  "WeakSet".
-
-  This property has the attributes { [[Writable]]: false, [[Enumerable]]:
-  false, [[Configurable]]: true }.
-includes: [propertyHelper.js]
- ---*/
-
-var WeakSetProto = WeakSet.prototype;
-
-assert.sameValue(
-  WeakSetProto[Symbol.toStringTag],
-  'WeakSet',
-  'The value of WeakSet.prototype[Symbol.toStringTag] is "WeakSet"'
-);
-
-verifyNotEnumerable(WeakSetProto, Symbol.toStringTag);
-verifyNotWritable(WeakSetProto, Symbol.toStringTag);
-verifyConfigurable(WeakSetProto, Symbol.toStringTag);