diff --git a/test/built-ins/ArrayBuffer/length-is-absent.js b/test/built-ins/ArrayBuffer/length-is-absent.js
index fd657ec2dbb9004723e03623173103b780b2a17b..dfeeed0eeb85870add76094817087a13e490a384 100755
--- a/test/built-ins/ArrayBuffer/length-is-absent.js
+++ b/test/built-ins/ArrayBuffer/length-is-absent.js
@@ -1,21 +1,18 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
+// Copyright (C) 2016 The V8 Project authors. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-es6id: 24.1.2.1
+esid: sec-arraybuffer-length
 description: >
-  The `length` parameter must be a positive, numeric integral value.
-info: >
+  Returns an empty instance if length is absent
+info: |
   ArrayBuffer( length )
 
-  ...
-  2. Let numberLength be ToNumber(length).
-  3. Let byteLength be ToLength(numberLength).
-  4. ReturnIfAbrupt(byteLength).
-  5. If SameValueZero(numberLength, byteLength) is false, throw a RangeError exception.
-  ...
+  1. If NewTarget is undefined, throw a TypeError exception.
+  2. Let byteLength be ? ToIndex(length).
+  3. Return ? AllocateArrayBuffer(NewTarget, byteLength).
 ---*/
 
-assert.throws(RangeError, function() {
-  new ArrayBuffer();
-}, "`length` parameter absent");
+var buffer = new ArrayBuffer();
+
+assert.sameValue(buffer.byteLength, 0);
diff --git a/test/built-ins/ArrayBuffer/length-is-not-number.js b/test/built-ins/ArrayBuffer/length-is-not-number.js
deleted file mode 100755
index f40a44588ea0b864ee095efb28508ce6c5e2dba5..0000000000000000000000000000000000000000
--- a/test/built-ins/ArrayBuffer/length-is-not-number.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.1.2.1
-description: >
-  The `length` parameter is converted to a number value.
-info: >
-  ArrayBuffer( length )
-
-  ...
-  2. Let numberLength be ToNumber(length).
-  3. Let byteLength be ToLength(numberLength).
-  4. ReturnIfAbrupt(byteLength).
-  5. If SameValueZero(numberLength, byteLength) is false, throw a RangeError exception.
-  ...
-features: [Symbol]
----*/
-
-assert.throws(RangeError, function() {
-  new ArrayBuffer(undefined);
-}, "`length` parameter is undefined");
-
-var result = new ArrayBuffer(null);
-assert.sameValue(result.byteLength, 0, "`length` parameter is null");
-
-var result = new ArrayBuffer(true);
-assert.sameValue(result.byteLength, 1, "`length` parameter is a Boolean");
-
-var result = new ArrayBuffer("");
-assert.sameValue(result.byteLength, 0, "`length` parameter is a String");
-
-assert.throws(TypeError, function() {
-  new ArrayBuffer(Symbol());
-}, "`length` parameter is a Symbol");
diff --git a/test/built-ins/ArrayBuffer/length-is-too-large-throws.js b/test/built-ins/ArrayBuffer/length-is-too-large-throws.js
new file mode 100644
index 0000000000000000000000000000000000000000..915796019cd47a4161c43b4794a17320a36092e0
--- /dev/null
+++ b/test/built-ins/ArrayBuffer/length-is-too-large-throws.js
@@ -0,0 +1,32 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 24.1.2.1
+esid: sec-arraybuffer-length
+description: >
+  Throws a RangeError if length >= 2 ** 53
+info: >
+  ArrayBuffer( length )
+
+  1. If NewTarget is undefined, throw a TypeError exception.
+  2. Let byteLength be ? ToIndex(length).
+
+  ToIndex( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+  ...
+---*/
+
+assert.throws(RangeError, function() {
+  // Math.pow(2, 53) = 9007199254740992
+  new ArrayBuffer(9007199254740992);
+}, "`length` parameter is too large");
+
+assert.throws(RangeError, function() {
+  new ArrayBuffer(Infinity);
+}, "`length` parameter is positive Infinity");
diff --git a/test/built-ins/ArrayBuffer/negative-length-throws.js b/test/built-ins/ArrayBuffer/negative-length-throws.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c0302e525bae34e9de67385bcfa2e4e0ff8f5e0
--- /dev/null
+++ b/test/built-ins/ArrayBuffer/negative-length-throws.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2016 The V8 Project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-arraybuffer-length
+description: >
+  Throws a Range Error if length represents an integer < 0
+info: |
+  ArrayBuffer( length )
+
+  1. If NewTarget is undefined, throw a TypeError exception.
+  2. Let byteLength be ? ToIndex(length).
+
+  ToIndex( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+  ...
+---*/
+
+assert.throws(RangeError, function() {
+  new ArrayBuffer(-1);
+});
+
+assert.throws(RangeError, function() {
+  new ArrayBuffer(-1.1);
+});
+
+assert.throws(RangeError, function() {
+  new ArrayBuffer(-Infinity);
+});
diff --git a/test/built-ins/ArrayBuffer/number-conversion.js b/test/built-ins/ArrayBuffer/number-conversion.js
deleted file mode 100755
index 75bbb3b8f643b4d87bf355a69c8c771800c0e2a7..0000000000000000000000000000000000000000
--- a/test/built-ins/ArrayBuffer/number-conversion.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.1.2.1
-description: >
-  The `length` parameter is converted to a number value.
-info: >
-  ArrayBuffer( length )
-
-  ...
-  2. Let numberLength be ToNumber(length).
-  ...
----*/
-
-var log = "";
-var lengthValue = {
-  valueOf: function() {
-    log += "ok";
-    return 10;
-  }
-};
-
-var arrayBuffer = new ArrayBuffer(lengthValue);
-
-assert.sameValue(log, "ok");
-assert.sameValue(arrayBuffer.byteLength, 10);
diff --git a/test/built-ins/ArrayBuffer/positive-integer-length.js b/test/built-ins/ArrayBuffer/positive-integer-length.js
deleted file mode 100755
index f1f40800e30f05ec6aea47648cbbdba023e49684..0000000000000000000000000000000000000000
--- a/test/built-ins/ArrayBuffer/positive-integer-length.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.1.2.1
-description: >
-  The `length` parameter must be a positive, numeric integral value.
-info: >
-  ArrayBuffer( length )
-
-  ...
-  2. Let numberLength be ToNumber(length).
-  3. Let byteLength be ToLength(numberLength).
-  4. ReturnIfAbrupt(byteLength).
-  5. If SameValueZero(numberLength, byteLength) is false, throw a RangeError exception.
-  ...
----*/
-
-assert.throws(RangeError, function() {
-  new ArrayBuffer(-10);
-}, "`length` parameter is negative");
-
-assert.throws(RangeError, function() {
-  new ArrayBuffer(3.8);
-}, "`length` parameter is not integral value");
-
-assert.throws(RangeError, function() {
-  // Math.pow(2, 53) = 9007199254740992
-  new ArrayBuffer(9007199254740992);
-}, "`length` parameter is too large");
-
-assert.throws(RangeError, function() {
-  new ArrayBuffer(+Infinity);
-}, "`length` parameter is positive Infinity");
-
-assert.throws(RangeError, function() {
-  new ArrayBuffer(-Infinity);
-}, "`length` parameter is negative Infinity");
-
-assert.throws(RangeError, function() {
-  new ArrayBuffer(NaN);
-}, "`length` parameter is NaN");
diff --git a/test/built-ins/ArrayBuffer/return-abrupt-from-length-symbol.js b/test/built-ins/ArrayBuffer/return-abrupt-from-length-symbol.js
new file mode 100755
index 0000000000000000000000000000000000000000..d14d80068097434eb1035f470975fdb34c34eb6e
--- /dev/null
+++ b/test/built-ins/ArrayBuffer/return-abrupt-from-length-symbol.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 The V8 Project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-arraybuffer-length
+description: >
+  Throws a TypeError if length is a symbol
+info: |
+  ArrayBuffer( length )
+
+  1. If NewTarget is undefined, throw a TypeError exception.
+  2. Let byteLength be ? ToIndex(length).
+  ...
+features: [Symbol]
+---*/
+
+var s = Symbol();
+
+assert.throws(TypeError, function() {
+  new ArrayBuffer(s);
+}, "`length` parameter is a Symbol");
diff --git a/test/built-ins/ArrayBuffer/return-abrupt-from-length.js b/test/built-ins/ArrayBuffer/return-abrupt-from-length.js
new file mode 100644
index 0000000000000000000000000000000000000000..620c134d0dcfd5bf6db1275888eb87eb09efa352
--- /dev/null
+++ b/test/built-ins/ArrayBuffer/return-abrupt-from-length.js
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 The V8 Project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-arraybuffer-length
+description: >
+  Return abrupt from ToIndex(length)
+info: |
+  ArrayBuffer( length )
+
+  1. If NewTarget is undefined, throw a TypeError exception.
+  2. Let byteLength be ? ToIndex(length).
+  ...
+---*/
+
+var len = {
+  valueOf: function() {
+    throw new Test262Error();
+  }
+};
+
+assert.throws(Test262Error, function() {
+  new ArrayBuffer(len);
+});
diff --git a/test/built-ins/ArrayBuffer/toindex-length.js b/test/built-ins/ArrayBuffer/toindex-length.js
new file mode 100755
index 0000000000000000000000000000000000000000..b22694186bd0bbed6756c0c4f8b1e705a8d2e7e7
--- /dev/null
+++ b/test/built-ins/ArrayBuffer/toindex-length.js
@@ -0,0 +1,87 @@
+// Copyright (C) 2016 The V8 Project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-arraybuffer-length
+description: >
+  The `length` parameter is converted to a value numeric index value.
+info: |
+  ArrayBuffer( length )
+
+  1. If NewTarget is undefined, throw a TypeError exception.
+  2. Let byteLength be ? ToIndex(length).
+  3. Return ? AllocateArrayBuffer(NewTarget, byteLength).
+
+  ToIndex( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+    c. Let index be ! ToLength(integerIndex).
+    d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception.
+  3. Return index.
+---*/
+
+var obj1 = {
+  valueOf: function() {
+    return 42;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 42;
+  }
+};
+
+var buffer;
+
+buffer = new ArrayBuffer(obj1);
+assert.sameValue(buffer.byteLength, 42, "object's valueOf");
+
+buffer = new ArrayBuffer(obj2);
+assert.sameValue(buffer.byteLength, 42, "object's toString");
+
+buffer = new ArrayBuffer("");
+assert.sameValue(buffer.byteLength, 0, "the Empty string");
+
+buffer = new ArrayBuffer("0");
+assert.sameValue(buffer.byteLength, 0, "string '0'");
+
+buffer = new ArrayBuffer("1");
+assert.sameValue(buffer.byteLength, 1, "string '1'");
+
+buffer = new ArrayBuffer(true);
+assert.sameValue(buffer.byteLength, 1, "true");
+
+buffer = new ArrayBuffer(false);
+assert.sameValue(buffer.byteLength, 0, "false");
+
+buffer = new ArrayBuffer(NaN);
+assert.sameValue(buffer.byteLength, 0, "NaN");
+
+buffer = new ArrayBuffer(null);
+assert.sameValue(buffer.byteLength, 0, "null");
+
+buffer = new ArrayBuffer(undefined);
+assert.sameValue(buffer.byteLength, 0, "undefined");
+
+buffer = new ArrayBuffer(0.1);
+assert.sameValue(buffer.byteLength, 0, "0.1");
+
+buffer = new ArrayBuffer(0.9);
+assert.sameValue(buffer.byteLength, 0, "0.9");
+
+buffer = new ArrayBuffer(1.1);
+assert.sameValue(buffer.byteLength, 1, "1.1");
+
+buffer = new ArrayBuffer(1.9);
+assert.sameValue(buffer.byteLength, 1, "1.9");
+
+buffer = new ArrayBuffer(-0.1);
+assert.sameValue(buffer.byteLength, 0, "-0.1");
+
+buffer = new ArrayBuffer(-0.99999);
+assert.sameValue(buffer.byteLength, 0, "-0.99999");
diff --git a/test/built-ins/ArrayBuffer/undefined-newtarget.js b/test/built-ins/ArrayBuffer/undefined-newtarget-throws.js
similarity index 100%
rename from test/built-ins/ArrayBuffer/undefined-newtarget.js
rename to test/built-ins/ArrayBuffer/undefined-newtarget-throws.js
diff --git a/test/built-ins/DataView/byteoffset-tonumber-diffs-tointeger-throws.js b/test/built-ins/DataView/byteoffset-tonumber-diffs-tointeger-throws.js
deleted file mode 100644
index 58d63d819279e8bb4aa853dcac849fba3a233bbe..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/byteoffset-tonumber-diffs-tointeger-throws.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.2.1
-esid: sec-dataview-buffer-byteoffset-bytelength
-description: >
-  Throws a RangeError if ToNumber(byteOffset) diffs ToInteger(byteOffset)
-info: |
-  24.2.2.1 DataView (buffer, byteOffset, byteLength )
-
-  ...
-  4. Let numberOffset be ? ToNumber(byteOffset).
-  5. Let offset be ToInteger(numberOffset).
-  6. If numberOffset ≠ offset or offset < 0, throw a RangeError exception.
-  ...
----*/
-
-var ab = new ArrayBuffer(42);
-
-assert.throws(RangeError, function() {
-  new DataView(ab, 1.1);
-}, "1.1");
-
-assert.throws(RangeError, function() {
-  new DataView(ab, 0.0000001);
-}, "0.0000001");
-
-assert.throws(RangeError, function() {
-  new DataView(ab, NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  new DataView(ab, -1.1);
-}, "-1.1");
-
-assert.throws(RangeError, function() {
-  new DataView(ab, undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  new DataView(ab);
-}, "no byteOffset arg");
diff --git a/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js b/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js
index 6430e4df376f8e5a8aabf603cac22e742b5657e3..de0180c979bbbaeb5ecb61bf8ee0896012270611 100644
--- a/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js
+++ b/test/built-ins/DataView/defined-byteoffset-undefined-bytelength.js
@@ -9,6 +9,9 @@ description: >
 info: |
   24.2.2.1 DataView (buffer, byteOffset, byteLength )
 
+  ...
+  8. If byteLength is either not present or undefined, then
+    a. Let viewByteLength be bufferByteLength - offset.
   ...
   17. Return O.
 ---*/
diff --git a/test/built-ins/DataView/defined-negative-bytelength.js b/test/built-ins/DataView/defined-negative-bytelength.js
deleted file mode 100644
index 808435659d2beb8db647d4d7d9753f0c8e02ec10..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/defined-negative-bytelength.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.2.1
-esid: sec-dataview-buffer-byteoffset-bytelength
-description: >
-  Return new instance from negative lengths
-info: |
-  24.2.2.1 DataView (buffer, byteOffset, byteLength )
-
-  ...
-  17. Return O.
----*/
-
-var sample;
-var buffer = new ArrayBuffer(2);
-
-sample = new DataView(buffer, 0, -1);
-assert.sameValue(sample.byteLength, 0, "sample.byteLength");
-assert.sameValue(sample.byteOffset, 0, "sample.byteOffset");
-assert.sameValue(sample.buffer, buffer);
-assert.sameValue(sample.constructor, DataView);
-assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype);
-
-sample = new DataView(buffer, 0, -Infinity);
-assert.sameValue(sample.byteLength, 0, "sample.byteLength");
-assert.sameValue(sample.byteOffset, 0, "sample.byteOffset");
-assert.sameValue(sample.buffer, buffer);
-assert.sameValue(sample.constructor, DataView);
-assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype);
-
-sample = new DataView(buffer, 1, -1);
-assert.sameValue(sample.byteLength, 0, "sample.byteLength");
-assert.sameValue(sample.byteOffset, 1, "sample.byteOffset");
-assert.sameValue(sample.buffer, buffer);
-assert.sameValue(sample.constructor, DataView);
-assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype);
-
-sample = new DataView(buffer, 2, -Infinity);
-assert.sameValue(sample.byteLength, 0, "sample.byteLength");
-assert.sameValue(sample.byteOffset, 2, "sample.byteOffset");
-assert.sameValue(sample.buffer, buffer);
-assert.sameValue(sample.constructor, DataView);
-assert.sameValue(Object.getPrototypeOf(sample), DataView.prototype);
diff --git a/test/built-ins/DataView/negative-bytelength-throws.js b/test/built-ins/DataView/negative-bytelength-throws.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce11b03c5577e8be7fdce6974eb4fd1323d54fc3
--- /dev/null
+++ b/test/built-ins/DataView/negative-bytelength-throws.js
@@ -0,0 +1,44 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview-buffer-byteoffset-bytelength
+description: >
+  Throws a RangeError if ToInteger(byteLength) < 0
+info: |
+  24.2.2.1 DataView (buffer, byteOffset, byteLength )
+
+  ...
+  8. If byteLength is either not present or undefined, then
+    a. Let viewByteLength be bufferByteLength - offset.
+  9. Else,
+    a. Let viewByteLength be ? ToIndex(byteLength).
+  ...
+
+  ToIndex ( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+    ...
+---*/
+
+var buffer = new ArrayBuffer(2);
+
+assert.throws(RangeError, function() {
+  new DataView(buffer, 0, -1);
+}, "new DataView(buffer, 0, -1);");
+
+assert.throws(RangeError, function() {
+  new DataView(buffer, 0, -Infinity);
+}, "new DataView(buffer, 0, -Infinity);");
+
+assert.throws(RangeError, function() {
+  new DataView(buffer, 1, -1);
+}, "new DataView(buffer, 1, -1);");
+
+assert.throws(RangeError, function() {
+  new DataView(buffer, 2, -Infinity);
+}, "new DataView(buffer, 2, -Infinity);");
diff --git a/test/built-ins/DataView/negative-byteoffset-throws.js b/test/built-ins/DataView/negative-byteoffset-throws.js
new file mode 100644
index 0000000000000000000000000000000000000000..18f53dbb3196b4f11789f059a77aa6c4d88eb03e
--- /dev/null
+++ b/test/built-ins/DataView/negative-byteoffset-throws.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview-buffer-byteoffset-bytelength
+description: >
+  Throws a RangeError if ToInteger(byteOffset) < 0
+info: |
+  24.2.2.1 DataView (buffer, byteOffset, byteLength )
+
+  ...
+  4. Let offset be ? ToIndex(byteOffset).
+  ...
+
+  ToIndex ( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+    ...
+---*/
+
+var buffer = new ArrayBuffer(2);
+
+assert.throws(RangeError, function() {
+  new DataView(buffer, -1);
+}, "new DataView(buffer, -1);");
+
+assert.throws(RangeError, function() {
+  new DataView(buffer, -Infinity);
+}, "new DataView(buffer, -Infinity);");
diff --git a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 9c3dc53c8ebf04469769b0624d3351a5cf235c65..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getfloat32
-es6id: 24.2.4.5
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float32").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getFloat32();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getFloat32(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getFloat32(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getFloat32(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getFloat32(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getFloat32(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getFloat32(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js
index 7e8966f0f04b6ee24f2fa8b5a6e9a58a46902414..ef2440d1a22ab168b3fe501982012fb188602f72 100644
--- a/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getFloat32/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(6);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getFloat32(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getFloat32(-1);
diff --git a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getFloat32/negative-byteoffset-throws.js
similarity index 78%
rename from test/built-ins/DataView/prototype/getFloat32/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getFloat32/negative-byteoffset-throws.js
index 4fc7baf8a360acacb6db2ba125539cd65df64428..f2298faa59a15c7fd4f7618c0d7d72f6ed70aef9 100644
--- a/test/built-ins/DataView/prototype/getFloat32/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getFloat32/negative-byteoffset-throws.js
@@ -5,7 +5,7 @@
 esid: sec-dataview.prototype.getfloat32
 es6id: 24.2.4.5
 description: >
-  Throws a RangeError if getIndex < 0
+  Throws a RangeError if ToInteger(byteOffset) < 0
 info: |
   24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
 
@@ -16,9 +16,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getFloat32/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getFloat32/return-values-coerced-byteoffset.js
deleted file mode 100644
index 207b0055fb2b48122804023755a6a57483f59d11..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getFloat32/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getfloat32
-es6id: 24.2.4.5
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float32").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(8);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 75);
-sample.setUint8(1, 75);
-sample.setUint8(2, 76);
-sample.setUint8(3, 76);
-sample.setUint8(4, 75);
-sample.setUint8(5, 75);
-sample.setUint8(6, 76);
-sample.setUint8(7, 76);
-
-assert.sameValue(sample.getFloat32("", false), 13323340, "'', false");
-assert.sameValue(sample.getFloat32("", true), 53554476, "'', true");
-
-assert.sameValue(sample.getFloat32("0", false), 13323340, "'0', false");
-assert.sameValue(sample.getFloat32("0", true), 53554476, "'0', true");
-
-assert.sameValue(sample.getFloat32("1", false), 13388875, "'1', false");
-assert.sameValue(sample.getFloat32("1", true), 13388875, "'1', true");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getFloat32(obj1, false), 13388875, "{}.valueOf, false");
-assert.sameValue(sample.getFloat32(obj1, true), 13388875, "{}.valueOf, true");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getFloat32(obj2, false), 13388875, "{}.toString, false");
-assert.sameValue(sample.getFloat32(obj2, true), 13388875, "{}.toString, true");
-
-assert.sameValue(sample.getFloat32(true, false), 13388875, "true, false");
-assert.sameValue(sample.getFloat32(true, true), 13388875, "true, true");
-
-assert.sameValue(sample.getFloat32(false, false), 13323340, "false, false");
-assert.sameValue(sample.getFloat32(false, true), 53554476, "false, true");
-
-assert.sameValue(sample.getFloat32(null, false), 13323340, "null, false");
-assert.sameValue(sample.getFloat32(null, true), 53554476, "null, true");
diff --git a/test/built-ins/DataView/prototype/getFloat32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getFloat32/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..280a11d46b5477a91136acfdae142e42fa6e85e8
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getFloat32/toindex-byteoffset.js
@@ -0,0 +1,64 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getfloat32
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float32").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 75);
+sample.setUint8(1, 75);
+sample.setUint8(2, 76);
+sample.setUint8(3, 76);
+sample.setUint8(4, 75);
+sample.setUint8(5, 75);
+sample.setUint8(6, 76);
+sample.setUint8(7, 76);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 2;
+  }
+};
+
+assert.sameValue(sample.getFloat32(-0), 13323340, "-0");
+assert.sameValue(sample.getFloat32(obj1), 53292336, "object's valueOf");
+assert.sameValue(sample.getFloat32(obj2), 53554476, "object's toString");
+assert.sameValue(sample.getFloat32(""), 13323340, "the Empty string");
+assert.sameValue(sample.getFloat32("0"), 13323340, "string '0'");
+assert.sameValue(sample.getFloat32("2"), 53554476, "string '2'");
+assert.sameValue(sample.getFloat32(true), 13388875, "true");
+assert.sameValue(sample.getFloat32(false), 13323340, "false");
+assert.sameValue(sample.getFloat32(NaN), 13323340, "NaN");
+assert.sameValue(sample.getFloat32(null), 13323340, "null");
+assert.sameValue(sample.getFloat32(0.1), 13323340, "0.1");
+assert.sameValue(sample.getFloat32(0.9), 13323340, "0.9");
+assert.sameValue(sample.getFloat32(1.1), 13388875, "1.1");
+assert.sameValue(sample.getFloat32(1.9), 13388875, "1.9");
+assert.sameValue(sample.getFloat32(-0.1), 13323340, "-0.1");
+assert.sameValue(sample.getFloat32(-0.99999), 13323340, "-0.99999");
+assert.sameValue(sample.getFloat32(undefined), 13323340, "undefined");
+assert.sameValue(sample.getFloat32(), 13323340, "no arg");
diff --git a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 7f786becebed1236546e34bdf4347bfa22d83aa0..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getfloat64
-es6id: 24.2.4.6
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float64").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getFloat64();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getFloat64(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getFloat64(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getFloat64(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getFloat64(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getFloat64(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getFloat64(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js
index 0cd537b05873bacb6776c8d36b3ae3bc2f382fe4..32947925e28097545de879c4051c444a19cac878 100644
--- a/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getFloat64/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(10);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getFloat64(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getFloat64(-1);
diff --git a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getFloat64/negative-byteoffset-throws.js
similarity index 82%
rename from test/built-ins/DataView/prototype/getFloat64/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getFloat64/negative-byteoffset-throws.js
index 0abb4d512f45c6350d697fb9cdd81ff6b9ba208c..12dbdcdeb5ae0998402a42d317364446ea1623e0 100644
--- a/test/built-ins/DataView/prototype/getFloat64/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getFloat64/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getFloat64/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getFloat64/return-values-coerced-byteoffset.js
deleted file mode 100644
index 31e95caad0d342134be60356fc71f4d4e09d869a..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getFloat64/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getfloat64
-es6id: 24.2.4.6
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float64").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(9);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 67);
-sample.setUint8(1, 67);
-sample.setUint8(2, 68);
-sample.setUint8(3, 68);
-sample.setUint8(4, 67);
-sample.setUint8(5, 67);
-sample.setUint8(6, 68);
-sample.setUint8(7, 68);
-sample.setUint8(8, 67);
-
-assert.sameValue(sample.getFloat64("", false), 10846169068898440, "'', false");
-assert.sameValue(sample.getFloat64("", true), 747563348316297500000, "'', true");
-
-assert.sameValue(sample.getFloat64("0", false), 10846169068898440, "'0', false");
-assert.sameValue(sample.getFloat64("0", true), 747563348316297500000, "'0', true");
-
-assert.sameValue(sample.getFloat64("1", false), 11409110432516230, "'1', false");
-assert.sameValue(sample.getFloat64("1", true), 11409110432516230, "'1', true");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getFloat64(obj1, false), 11409110432516230, "{}.valueOf, false");
-assert.sameValue(sample.getFloat64(obj1, true), 11409110432516230, "{}.valueOf, true");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getFloat64(obj2, false), 11409110432516230, "{}.toString, false");
-assert.sameValue(sample.getFloat64(obj2, true), 11409110432516230, "{}.toString, true");
-
-assert.sameValue(sample.getFloat64(true, false), 11409110432516230, "true, false");
-assert.sameValue(sample.getFloat64(true, true), 11409110432516230, "true, true");
-
-assert.sameValue(sample.getFloat64(false, false), 10846169068898440, "false, false");
-assert.sameValue(sample.getFloat64(false, true), 747563348316297500000, "false, true");
-
-assert.sameValue(sample.getFloat64(null, false), 10846169068898440, "null, false");
-assert.sameValue(sample.getFloat64(null, true), 747563348316297500000, "null, true");
diff --git a/test/built-ins/DataView/prototype/getFloat64/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getFloat64/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..966630a1e69ceeecf5e726b303b5c0936b8a2ea4
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getFloat64/toindex-byteoffset.js
@@ -0,0 +1,69 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getfloat64
+es6id: 24.2.4.6
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Float64").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 67);
+sample.setUint8(1, 67);
+sample.setUint8(2, 68);
+sample.setUint8(3, 68);
+sample.setUint8(4, 67);
+sample.setUint8(5, 67);
+sample.setUint8(6, 68);
+sample.setUint8(7, 68);
+sample.setUint8(8, 67);
+sample.setUint8(9, 68);
+sample.setUint8(10, 68);
+sample.setUint8(11, 68);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getFloat64(-0), 10846169068898440, "-0");
+assert.sameValue(sample.getFloat64(obj1), 747563348316297600000, "{}.valueOf");
+assert.sameValue(sample.getFloat64(obj2), 710670423110275600000, "{}.toString");
+assert.sameValue(sample.getFloat64(""), 10846169068898440, "the Empty string");
+assert.sameValue(sample.getFloat64("0"), 10846169068898440, "string '0'");
+assert.sameValue(sample.getFloat64("2"), 747563348316297600000, "string '2'");
+assert.sameValue(sample.getFloat64(true), 11409110432516230, "true");
+assert.sameValue(sample.getFloat64(false), 10846169068898440, "false");
+assert.sameValue(sample.getFloat64(NaN), 10846169068898440, "NaN");
+assert.sameValue(sample.getFloat64(null), 10846169068898440, "null");
+assert.sameValue(sample.getFloat64(0.1), 10846169068898440, "0.1");
+assert.sameValue(sample.getFloat64(0.9), 10846169068898440, "0.9");
+assert.sameValue(sample.getFloat64(1.1), 11409110432516230, "1.1");
+assert.sameValue(sample.getFloat64(1.9), 11409110432516230, "1.9");
+assert.sameValue(sample.getFloat64(-0.1), 10846169068898440, "-0.1");
+assert.sameValue(sample.getFloat64(-0.99999), 10846169068898440, "-0.99999");
+assert.sameValue(sample.getFloat64(undefined), 10846169068898440, "undefined");
+assert.sameValue(sample.getFloat64(), 10846169068898440, "no arg");
diff --git a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getInt16/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index c7b6cdf3ec586fe683000cf3d923e57f9973e01b..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getint16
-es6id: 24.2.4.8
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int16").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getInt16();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getInt16(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getInt16(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getInt16(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getInt16(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getInt16(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getInt16(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js
index 02e7d7baafe3c12d2ee0fb18ad2cb6504c93e14b..5d7007553d2329cbc9f77ae86389527c8ddcb9c2 100644
--- a/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getInt16/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getInt16(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getInt16(-1);
diff --git a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getInt16/negative-byteoffset-throws.js
similarity index 82%
rename from test/built-ins/DataView/prototype/getInt16/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getInt16/negative-byteoffset-throws.js
index 117cff461a03bfb6f07449426d7c17df8fb5c9da..1dd8d6665c5a6076666fd5069604aec1b61a450a 100644
--- a/test/built-ins/DataView/prototype/getInt16/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getInt16/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getInt16/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getInt16/return-values-coerced-byteoffset.js
deleted file mode 100644
index a5b87ae239e840be3caa7986485c46f13fb94662..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getInt16/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getint16
-es6id: 24.2.4.8
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int16").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(3);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 127);
-sample.setUint8(1, 255);
-sample.setUint8(2, 1);
-
-assert.sameValue(sample.getInt16("", false), 32767, "'', false");
-assert.sameValue(sample.getInt16("", true), -129, "'', true");
-
-assert.sameValue(sample.getInt16("0", false), 32767, "'0', false");
-assert.sameValue(sample.getInt16("0", true), -129, "'0', true");
-
-assert.sameValue(sample.getInt16("1", false), -255, "'1', false");
-assert.sameValue(sample.getInt16("1", true), 511, "'1', true");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getInt16(obj1, false), -255, "{}.valueOf, false");
-assert.sameValue(sample.getInt16(obj1, true), 511, "{}.valueOf, true");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getInt16(obj2, false), -255, "{}.toString, false");
-assert.sameValue(sample.getInt16(obj2, true), 511, "{}.toString, true");
-
-assert.sameValue(sample.getInt16(true, false), -255, "true, false");
-assert.sameValue(sample.getInt16(true, true), 511, "true, true");
-
-assert.sameValue(sample.getInt16(false, false), 32767, "false, false");
-assert.sameValue(sample.getInt16(false, true), -129, "false, true");
-
-assert.sameValue(sample.getInt16(null, false), 32767, "null, false");
-assert.sameValue(sample.getInt16(null, true), -129, "null, true");
diff --git a/test/built-ins/DataView/prototype/getInt16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getInt16/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..c8edfbbc0511f70ed354a53e7f5358de1b89b183
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getInt16/toindex-byteoffset.js
@@ -0,0 +1,61 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getint16
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int16").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(8);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 127);
+sample.setUint8(1, 255);
+sample.setUint8(2, 1);
+sample.setUint8(3, 127);
+sample.setUint8(4, 255);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getInt16(-0), 32767, "-0");
+assert.sameValue(sample.getInt16(obj1), 383, "object's valueOf");
+assert.sameValue(sample.getInt16(obj2), 32767, "object's toString");
+assert.sameValue(sample.getInt16(""), 32767, "the Empty string");
+assert.sameValue(sample.getInt16("0"), 32767, "string '0'");
+assert.sameValue(sample.getInt16("2"), 383, "string '2'");
+assert.sameValue(sample.getInt16(true), -255, "true");
+assert.sameValue(sample.getInt16(false), 32767, "false");
+assert.sameValue(sample.getInt16(NaN), 32767, "NaN");
+assert.sameValue(sample.getInt16(null), 32767, "null");
+assert.sameValue(sample.getInt16(0.1), 32767, "0.1");
+assert.sameValue(sample.getInt16(0.9), 32767, "0.9");
+assert.sameValue(sample.getInt16(1.1), -255, "1.1");
+assert.sameValue(sample.getInt16(1.9), -255, "1.9");
+assert.sameValue(sample.getInt16(-0.1), 32767, "-0.1");
+assert.sameValue(sample.getInt16(-0.99999), 32767, "-0.99999");
+assert.sameValue(sample.getInt16(undefined), 32767, "undefined");
+assert.sameValue(sample.getInt16(), 32767, "no arg");
diff --git a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getInt32/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 4922b78b11db11e4939685007561f5ed5a9bc2e2..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getint32
-es6id: 24.2.4.9
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int32").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getInt32();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getInt32(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getInt32(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getInt32(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getInt32(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getInt32(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getInt32(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js
index 6d1aa431a8e1d0ca7251880e0186861b72f26846..777c6a6226d3d6b5e64b56f9eff4e378f02ae7b8 100644
--- a/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getInt32/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getInt32(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getInt32(-1);
diff --git a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getInt32/negative-byteoffset-throws.js
similarity index 82%
rename from test/built-ins/DataView/prototype/getInt32/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getInt32/negative-byteoffset-throws.js
index 9e42898d52a3172c677907f729fdf66fb6f9341f..f67bc72e0d60096c63893696d9fa5886a5f4027e 100644
--- a/test/built-ins/DataView/prototype/getInt32/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getInt32/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getInt32/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getInt32/return-values-coerced-byteoffset.js
deleted file mode 100644
index b4c19962c7a09dccc7cedd0f9cf46d9b23fa04e0..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getInt32/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getint32
-es6id: 24.2.4.9
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int32").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(5);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 127);
-sample.setUint8(1, 255);
-sample.setUint8(2, 255);
-sample.setUint8(3, 255);
-sample.setUint8(4, 128);
-
-assert.sameValue(sample.getInt32("", false), 2147483647, "'', false");
-assert.sameValue(sample.getInt32("", true), -129, "'', true");
-
-assert.sameValue(sample.getInt32("0", false), 2147483647, "'0', false");
-assert.sameValue(sample.getInt32("0", true), -129, "'0', true");
-
-assert.sameValue(sample.getInt32("1", false), -128, "'1', false");
-assert.sameValue(sample.getInt32("1", true), -2130706433, "'1', true");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getInt32(obj1, false), -128, "{}.valueOf, false");
-assert.sameValue(sample.getInt32(obj1, true), -2130706433, "{}.valueOf, true");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getInt32(obj2, false), -128, "{}.toString, false");
-assert.sameValue(sample.getInt32(obj2, true), -2130706433, "{}.toString, true");
-
-assert.sameValue(sample.getInt32(true, false), -128, "true, false");
-assert.sameValue(sample.getInt32(true, true), -2130706433, "true, true");
-
-assert.sameValue(sample.getInt32(false, false), 2147483647, "false, false");
-assert.sameValue(sample.getInt32(false, true), -129, "false, true");
-
-assert.sameValue(sample.getInt32(null, false), 2147483647, "null, false");
-assert.sameValue(sample.getInt32(null, true), -129, "null, true");
diff --git a/test/built-ins/DataView/prototype/getInt32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getInt32/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e1b88547a6190501b9af17e78cb13d2f4d134c8
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getInt32/toindex-byteoffset.js
@@ -0,0 +1,64 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getint32
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Int32").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(8);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 127);
+sample.setUint8(1, 255);
+sample.setUint8(2, 255);
+sample.setUint8(3, 255);
+sample.setUint8(4, 128);
+sample.setUint8(5, 255);
+sample.setUint8(6, 255);
+sample.setUint8(7, 255);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getInt32(-0), 2147483647, "-0");
+assert.sameValue(sample.getInt32(obj1), -32513, "object's valueOf");
+assert.sameValue(sample.getInt32(obj2), -8323073, "object's toString");
+assert.sameValue(sample.getInt32(""), 2147483647, "the Empty string");
+assert.sameValue(sample.getInt32("0"), 2147483647, "string '0'");
+assert.sameValue(sample.getInt32("2"), -32513, "string '2'");
+assert.sameValue(sample.getInt32(true), -128, "true");
+assert.sameValue(sample.getInt32(false), 2147483647, "false");
+assert.sameValue(sample.getInt32(NaN), 2147483647, "NaN");
+assert.sameValue(sample.getInt32(null), 2147483647, "null");
+assert.sameValue(sample.getInt32(0.1), 2147483647, "0.1");
+assert.sameValue(sample.getInt32(0.9), 2147483647, "0.9");
+assert.sameValue(sample.getInt32(1.1), -128, "1.1");
+assert.sameValue(sample.getInt32(1.9), -128, "1.9");
+assert.sameValue(sample.getInt32(-0.1), 2147483647, "-0.1");
+assert.sameValue(sample.getInt32(-0.99999), 2147483647, "-0.99999");
+assert.sameValue(sample.getInt32(undefined), 2147483647, "undefined");
+assert.sameValue(sample.getInt32(), 2147483647, "no arg");
diff --git a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getInt8/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index e0fe58d338068ae0a8e0897a5b3e2b8c342b3e8d..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getint8
-es6id: 24.2.4.7
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
-
-  1. Let v be the this value.
-  2. Return ? GetViewValue(v, byteOffset, true, "Int8").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getInt8();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getInt8(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getInt8(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getInt8(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getInt8(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getInt8(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getInt8(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js
index c2ba27aa513fc881e6a089949aa72eba0b55f171..175359727d09cd57746937ddee69c72b00967d78 100644
--- a/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getInt8/detached-buffer-after-integer-byteoffset.js
@@ -16,10 +16,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getInt8(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getInt8(-1);
diff --git a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getInt8/negative-byteoffset-throws.js
similarity index 80%
rename from test/built-ins/DataView/prototype/getInt8/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getInt8/negative-byteoffset-throws.js
index eb69f0763562ac78a6276bd98211357b8b30d642..7f8e0add13baf72c434afffe237b17f081122873 100644
--- a/test/built-ins/DataView/prototype/getInt8/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getInt8/negative-byteoffset-throws.js
@@ -15,9 +15,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getInt8/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getInt8/return-values-coerced-byteoffset.js
deleted file mode 100644
index 635504ffc7c1c53b8413d514f6758e3655beca62..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getInt8/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getint8
-es6id: 24.2.4.7
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
-
-  1. Let v be the this value.
-  2. Return ? GetViewValue(v, byteOffset, true, "Int8").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(2);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 39);
-sample.setUint8(1, 42);
-
-assert.sameValue(sample.getInt8(""), 39, "''");
-
-assert.sameValue(sample.getInt8("0"), 39, "'0'");
-
-assert.sameValue(sample.getInt8("1"), 42, "'1'");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getInt8(obj1), 42, "{}.valueOf");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getInt8(obj2), 42, "{}.toString");
-
-assert.sameValue(sample.getInt8(true), 42, "true");
-
-assert.sameValue(sample.getInt8(false), 39, "false");
-
-assert.sameValue(sample.getInt8(null), 39, "null");
diff --git a/test/built-ins/DataView/prototype/getInt8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getInt8/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..465d414a167592ce53207cb43412fb5402287bec
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getInt8/toindex-byteoffset.js
@@ -0,0 +1,59 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getint8
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
+
+  1. Let v be the this value.
+  2. Return ? GetViewValue(v, byteOffset, true, "Int8").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(4);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 39);
+sample.setUint8(1, 42);
+sample.setUint8(2, 7);
+sample.setUint8(3, 77);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getInt8(-0), 39, "-0");
+assert.sameValue(sample.getInt8(obj1), 7, "object's valueOf");
+assert.sameValue(sample.getInt8(obj2), 77, "object's toString");
+assert.sameValue(sample.getInt8(""), 39, "the Empty string");
+assert.sameValue(sample.getInt8("0"), 39, "string '0'");
+assert.sameValue(sample.getInt8("2"), 7, "string '2'");
+assert.sameValue(sample.getInt8(true), 42, "true");
+assert.sameValue(sample.getInt8(false), 39, "false");
+assert.sameValue(sample.getInt8(NaN), 39, "NaN");
+assert.sameValue(sample.getInt8(null), 39, "null");
+assert.sameValue(sample.getInt8(0.1), 39, "0.1");
+assert.sameValue(sample.getInt8(0.9), 39, "0.9");
+assert.sameValue(sample.getInt8(1.1), 42, "1.1");
+assert.sameValue(sample.getInt8(1.9), 42, "1.9");
+assert.sameValue(sample.getInt8(-0.1), 39, "-0.1");
+assert.sameValue(sample.getInt8(-0.99999), 39, "-0.99999");
+assert.sameValue(sample.getInt8(undefined), 39, "undefined");
+assert.sameValue(sample.getInt8(), 39, "no arg");
diff --git a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getUint16/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 8be032d57f7969093e5d3d0655397bdf0612571b..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getuint16
-es6id: 24.2.4.11
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint16").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getUint16();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getUint16(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getUint16(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getUint16(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getUint16(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getUint16(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getUint16(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js
index cbebef973c86921e804fd9648921b45714bb342d..874c54ad435c0c2e38b4e795a2a785168039f12b 100644
--- a/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getUint16/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getUint16(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getUint16(-1);
diff --git a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getUint16/negative-byteoffset-throws.js
similarity index 82%
rename from test/built-ins/DataView/prototype/getUint16/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getUint16/negative-byteoffset-throws.js
index 62f15606e28b1c5c82938b55052867d1261072f3..301b647eba7e717905c9843e2116f49178bc2e1c 100644
--- a/test/built-ins/DataView/prototype/getUint16/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getUint16/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getUint16/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getUint16/return-values-coerced-byteoffset.js
deleted file mode 100644
index 7396559bc235d389a020dfedaf82964ccb4eac68..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getUint16/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getuint16
-es6id: 24.2.4.11
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint16").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(3);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 127);
-sample.setUint8(1, 255);
-sample.setUint8(2, 1);
-
-assert.sameValue(sample.getUint16("", false), 32767, "'', false");
-assert.sameValue(sample.getUint16("", true), 65407, "'', true");
-
-assert.sameValue(sample.getUint16("0", false), 32767, "'0', false");
-assert.sameValue(sample.getUint16("0", true), 65407, "'0', true");
-
-assert.sameValue(sample.getUint16("1", false), 65281, "'1', false");
-assert.sameValue(sample.getUint16("1", true), 511, "'1', true");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getUint16(obj1, false), 65281, "{}.valueOf, false");
-assert.sameValue(sample.getUint16(obj1, true), 511, "{}.valueOf, true");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getUint16(obj2, false), 65281, "{}.toString, false");
-assert.sameValue(sample.getUint16(obj2, true), 511, "{}.toString, true");
-
-assert.sameValue(sample.getUint16(true, false), 65281, "true, false");
-assert.sameValue(sample.getUint16(true, true), 511, "true, true");
-
-assert.sameValue(sample.getUint16(false, false), 32767, "false, false");
-assert.sameValue(sample.getUint16(false, true), 65407, "false, true");
-
-assert.sameValue(sample.getUint16(null, false), 32767, "null, false");
-assert.sameValue(sample.getUint16(null, true), 65407, "null, true");
diff --git a/test/built-ins/DataView/prototype/getUint16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getUint16/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..4958f26bf995e6434d3add27d030e82f58b98037
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getUint16/toindex-byteoffset.js
@@ -0,0 +1,62 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getuint16
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint16").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(8);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 127);
+sample.setUint8(1, 255);
+sample.setUint8(2, 1);
+sample.setUint8(3, 127);
+sample.setUint8(4, 255);
+sample.setUint8(5, 1);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getUint16(-0), 32767, "-0");
+assert.sameValue(sample.getUint16(obj1), 383, "object's valueOf");
+assert.sameValue(sample.getUint16(obj2), 32767, "object's toString");
+assert.sameValue(sample.getUint16(""), 32767, "the Empty string");
+assert.sameValue(sample.getUint16("0"), 32767, "string '0'");
+assert.sameValue(sample.getUint16("2"), 383, "string '2'");
+assert.sameValue(sample.getUint16(true), 65281, "true");
+assert.sameValue(sample.getUint16(false), 32767, "false");
+assert.sameValue(sample.getUint16(NaN), 32767, "NaN");
+assert.sameValue(sample.getUint16(null), 32767, "null");
+assert.sameValue(sample.getUint16(0.1), 32767, "0.1");
+assert.sameValue(sample.getUint16(0.9), 32767, "0.9");
+assert.sameValue(sample.getUint16(1.1), 65281, "1.1");
+assert.sameValue(sample.getUint16(1.9), 65281, "1.9");
+assert.sameValue(sample.getUint16(-0.1), 32767, "-0.1");
+assert.sameValue(sample.getUint16(-0.99999), 32767, "-0.99999");
+assert.sameValue(sample.getUint16(undefined), 32767, "undefined");
+assert.sameValue(sample.getUint16(), 32767, "no arg");
diff --git a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getUint32/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 11eac838d4350eba4bc3e4222877c29462b11a87..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getuint32
-es6id: 24.2.4.12
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint32").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getUint32();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getUint32(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getUint32(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getUint32(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getUint32(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getUint32(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getUint32(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js
index e993629e33c7c98b7e75598cb248a80739db0e39..748a578c03a20ea0562bbeed7bd308de3f890a8a 100644
--- a/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getUint32/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getUint32(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getUint32(-1);
diff --git a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getUint32/negative-byteoffset-throws.js
similarity index 82%
rename from test/built-ins/DataView/prototype/getUint32/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getUint32/negative-byteoffset-throws.js
index 54505fedfadbb33d866e5857fdcefcf29deebc76..eb10997c430c26a4508eded1ca15609d28361747 100644
--- a/test/built-ins/DataView/prototype/getUint32/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getUint32/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getUint32/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getUint32/return-values-coerced-byteoffset.js
deleted file mode 100644
index 22e8c7bc10a0ae90cc559c4d2163c692a1b9aed9..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getUint32/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getuint32
-es6id: 24.2.4.12
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint32").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(5);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 127);
-sample.setUint8(1, 255);
-sample.setUint8(2, 255);
-sample.setUint8(3, 255);
-sample.setUint8(4, 128);
-
-assert.sameValue(sample.getUint32("", false), 2147483647, "'', false");
-assert.sameValue(sample.getUint32("", true), 4294967167, "'', true");
-
-assert.sameValue(sample.getUint32("0", false), 2147483647, "'0', false");
-assert.sameValue(sample.getUint32("0", true), 4294967167, "'0', true");
-
-assert.sameValue(sample.getUint32("1", false), 4294967168, "'1', false");
-assert.sameValue(sample.getUint32("1", true), 2164260863, "'1', true");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getUint32(obj1, false), 4294967168, "{}.valueOf, false");
-assert.sameValue(sample.getUint32(obj1, true), 2164260863, "{}.valueOf, true");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getUint32(obj2, false), 4294967168, "{}.toString, false");
-assert.sameValue(sample.getUint32(obj2, true), 2164260863, "{}.toString, true");
-
-assert.sameValue(sample.getUint32(true, false), 4294967168, "true, false");
-assert.sameValue(sample.getUint32(true, true), 2164260863, "true, true");
-
-assert.sameValue(sample.getUint32(false, false), 2147483647, "false, false");
-assert.sameValue(sample.getUint32(false, true), 4294967167, "false, true");
-
-assert.sameValue(sample.getUint32(null, false), 2147483647, "null, false");
-assert.sameValue(sample.getUint32(null, true), 4294967167, "null, true");
diff --git a/test/built-ins/DataView/prototype/getUint32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getUint32/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f9e2fb29eddfcb4df0eb6c926672544f497bc04
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getUint32/toindex-byteoffset.js
@@ -0,0 +1,63 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getuint32
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? GetViewValue(v, byteOffset, littleEndian, "Uint32").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(8);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 127);
+sample.setUint8(1, 255);
+sample.setUint8(2, 255);
+sample.setUint8(3, 255);
+sample.setUint8(4, 128);
+sample.setUint8(5, 255);
+sample.setUint8(6, 128);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getUint32(-0), 2147483647, "-0");
+assert.sameValue(sample.getUint32(obj1), 4294934783, "object's valueOf");
+assert.sameValue(sample.getUint32(obj2), 4286644096, "object's toString");
+assert.sameValue(sample.getUint32(""), 2147483647, "the Empty string");
+assert.sameValue(sample.getUint32("0"), 2147483647, "string '0'");
+assert.sameValue(sample.getUint32("2"), 4294934783, "string '2'");
+assert.sameValue(sample.getUint32(true), 4294967168, "true");
+assert.sameValue(sample.getUint32(false), 2147483647, "false");
+assert.sameValue(sample.getUint32(NaN), 2147483647, "NaN");
+assert.sameValue(sample.getUint32(null), 2147483647, "null");
+assert.sameValue(sample.getUint32(0.1), 2147483647, "0.1");
+assert.sameValue(sample.getUint32(0.9), 2147483647, "0.9");
+assert.sameValue(sample.getUint32(1.1), 4294967168, "1.1");
+assert.sameValue(sample.getUint32(1.9), 4294967168, "1.9");
+assert.sameValue(sample.getUint32(-0.1), 2147483647, "-0.1");
+assert.sameValue(sample.getUint32(-0.99999), 2147483647, "-0.99999");
+assert.sameValue(sample.getUint32(undefined), 2147483647, "undefined");
+assert.sameValue(sample.getUint32(), 2147483647, "no arg");
diff --git a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/getUint8/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 9ff4645e6274cefcf7f0bf254bb056875fb039e0..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getuint8
-es6id: 24.2.4.10
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
-
-  1. Let v be the this value.
-  2. Return ? GetViewValue(v, byteOffset, true, "Uint8").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.getUint8();
-}, "no args");
-
-assert.throws(RangeError, function() {
-  sample.getUint8(undefined);
-}, "undefined");
-
-assert.throws(RangeError, function() {
-  sample.getUint8(1.1);
-}, "floating number");
-
-assert.throws(RangeError, function() {
-  sample.getUint8(0.1);
-}, "0.1");
-
-assert.throws(RangeError, function() {
-  sample.getUint8(NaN);
-}, "NaN");
-
-assert.throws(RangeError, function() {
-  sample.getUint8(-0.1);
-}, "-0.1");
-
-assert.throws(RangeError, function() {
-  sample.getUint8(-1.1);
-}, "-1.1");
diff --git a/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js
index c67bfec4ef7b9a03bb28df597c3a2ce9818175bc..16581aaed9214d7aa2349194838fa8cec9d4e5f5 100644
--- a/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/getUint8/detached-buffer-after-integer-byteoffset.js
@@ -16,10 +16,10 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  8. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  9. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.getUint8(1.1);
-});
 
 assert.throws(RangeError, function() {
   sample.getUint8(-1);
diff --git a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/getUint8/negative-byteoffset-throws.js
similarity index 80%
rename from test/built-ins/DataView/prototype/getUint8/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/getUint8/negative-byteoffset-throws.js
index 3239ff7570680de14dd827e79b8c143c5c3e9fc6..60133a0494b584dd22adb251a455a75a3df23a84 100644
--- a/test/built-ins/DataView/prototype/getUint8/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/getUint8/negative-byteoffset-throws.js
@@ -15,9 +15,7 @@ info: |
   24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
diff --git a/test/built-ins/DataView/prototype/getUint8/return-values-coerced-byteoffset.js b/test/built-ins/DataView/prototype/getUint8/return-values-coerced-byteoffset.js
deleted file mode 100644
index 6e77bc089c34bdecdfc0da8e243fde5103b088bb..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/getUint8/return-values-coerced-byteoffset.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.getuint8
-es6id: 24.2.4.10
-description: >
-  Return values using coerced ToInteger byteOffset values
-info: |
-  24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
-
-  1. Let v be the this value.
-  2. Return ? GetViewValue(v, byteOffset, true, "Uint8").
-
-  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
-
-  ...
-  14. Let bufferIndex be getIndex + viewOffset.
-  15. Return GetValueFromBuffer(buffer, bufferIndex, type, isLittleEndian).
-  ...
-
-  24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type [ , isLittleEndian
-  ] )
-
-  ...
-  8. If isLittleEndian is false, reverse the order of the elements of rawValue.
-  ...
-features: [DataView.prototype.setUint8]
----*/
-
-var buffer = new ArrayBuffer(2);
-var sample = new DataView(buffer, 0);
-
-sample.setUint8(0, 39);
-sample.setUint8(1, 42);
-
-assert.sameValue(sample.getUint8(""), 39, "''");
-
-assert.sameValue(sample.getUint8("0"), 39, "'0'");
-
-assert.sameValue(sample.getUint8("1"), 42, "'1'");
-
-var obj1 = {
-  valueOf: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getUint8(obj1), 42, "{}.valueOf");
-
-var obj2 = {
-  toString: function() {
-    return 1;
-  }
-};
-assert.sameValue(sample.getUint8(obj2), 42, "{}.toString");
-
-assert.sameValue(sample.getUint8(true), 42, "true");
-
-assert.sameValue(sample.getUint8(false), 39, "false");
-
-assert.sameValue(sample.getUint8(null), 39, "null");
diff --git a/test/built-ins/DataView/prototype/getUint8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getUint8/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f684c83d8c19ce9edbaa87c2dd5059026073564
--- /dev/null
+++ b/test/built-ins/DataView/prototype/getUint8/toindex-byteoffset.js
@@ -0,0 +1,59 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.getuint8
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
+
+  1. Let v be the this value.
+  2. Return ? GetViewValue(v, byteOffset, true, "Uint8").
+
+  24.2.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.setUint8]
+---*/
+
+var buffer = new ArrayBuffer(4);
+var sample = new DataView(buffer, 0);
+
+sample.setUint8(0, 39);
+sample.setUint8(1, 42);
+sample.setUint8(2, 7);
+sample.setUint8(3, 77);
+
+var obj1 = {
+  valueOf: function() {
+    return 2;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 3;
+  }
+};
+
+assert.sameValue(sample.getUint8(-0), 39, "-0");
+assert.sameValue(sample.getUint8(obj1), 7, "object's valueOf");
+assert.sameValue(sample.getUint8(obj2), 77, "object's toString");
+assert.sameValue(sample.getUint8(""), 39, "the Empty string");
+assert.sameValue(sample.getUint8("0"), 39, "string '0'");
+assert.sameValue(sample.getUint8("2"), 7, "string '1'");
+assert.sameValue(sample.getUint8(true), 42, "true");
+assert.sameValue(sample.getUint8(false), 39, "false");
+assert.sameValue(sample.getUint8(NaN), 39, "NaN");
+assert.sameValue(sample.getUint8(null), 39, "null");
+assert.sameValue(sample.getUint8(0.1), 39, "0.1");
+assert.sameValue(sample.getUint8(0.9), 39, "0.9");
+assert.sameValue(sample.getUint8(1.1), 42, "1.1");
+assert.sameValue(sample.getUint8(1.9), 42, "1.9");
+assert.sameValue(sample.getUint8(-0.1), 39, "-0.1");
+assert.sameValue(sample.getUint8(-0.99999), 39, "-0.99999");
+assert.sameValue(sample.getUint8(undefined), 39, "undefined");
+assert.sameValue(sample.getUint8(), 39, "no arg");
diff --git a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index d76ed7d0bee8d689239dfc43fb30f12b52da2fad..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setfloat32
-es6id: 24.2.4.13
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float32", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getFloat32]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setFloat32();
-}, "no args");
-assert.sameValue(sample.getFloat32(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat32(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getFloat32(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat32(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getFloat32(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat32(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getFloat32(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat32(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getFloat32(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat32(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getFloat32(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat32(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getFloat32(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js
index 371d440b1647129d2b7a9a7be28ef9e73b045284..4e101c3bc79dd2c7cf182e22271894bb4b355b26 100644
--- a/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setFloat32/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(8);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setFloat32(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setFloat32(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js
index 6e6666e7b06a55635086fb0b81a4c78076fab9e4..34cf9805355025fb782f9b9683651fede638841a 100755
--- a/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setFloat32/index-check-before-value-conversion.js
@@ -4,8 +4,7 @@
 /*---
 esid: sec-dataview.prototype.setfloat32
 description: >
-  RangeError exception for negative or non-integral index is thrown before
-  the value conversion.
+  RangeError exception for negative index is thrown before the value conversion.
 info: >
   ...
   3. Return SetViewValue(v, byteOffset, littleEndian, "Float32", value).
@@ -13,10 +12,7 @@ info: >
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ToNumber(requestIndex).
-  5. Let getIndex be ? ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  7. Let numberValue be ? ToNumber(value).
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
@@ -28,14 +24,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setFloat32(NaN, poisoned);
-}, "setFloat32(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32(1.5, poisoned);
-}, "setFloat32(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setFloat32(-1.5, poisoned);
 }, "setFloat32(-1.5, poisoned)");
@@ -47,40 +35,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setFloat32(-Infinity, poisoned);
 }, "setFloat32(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32(undefined, poisoned);
-}, "setFloat32(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32('invalid', poisoned);
-}, "setFloat32('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32('NaN', poisoned);
-}, "setFloat32('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32('1.5', poisoned);
-}, "setFloat32('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32('-1.5', poisoned);
-}, "setFloat32('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32('-1', poisoned);
-}, "setFloat32('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat32('-Infinity', poisoned);
-}, "setFloat32('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setFloat32(obj, poisoned);
-}, "setFloat32(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setFloat32/index-to-integer.js b/test/built-ins/DataView/prototype/setFloat32/index-to-integer.js
deleted file mode 100755
index 1aec39f338aed0c43221bfdaa58b558e157d4e79..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setFloat32/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.13
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Float32", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(8), 0);
-
-dataView.setFloat32(+0, 1);
-assert.sameValue(dataView.getFloat32(0), 1, "setFloat32(+0, 1)");
-
-dataView.setFloat32(-0, 2);
-assert.sameValue(dataView.getFloat32(0), 2, "setFloat32(-0, 2)");
-
-dataView.setFloat32(1, 3);
-assert.sameValue(dataView.getFloat32(1), 3, "setFloat32(1, 3)");
-
-dataView.setFloat32(null, 4);
-assert.sameValue(dataView.getFloat32(0), 4, "setFloat32(null, 4)");
-
-dataView.setFloat32(false, 5);
-assert.sameValue(dataView.getFloat32(0), 5, "setFloat32(false, 5)");
-
-dataView.setFloat32(true, 6);
-assert.sameValue(dataView.getFloat32(1), 6, "setFloat32(true, 6)");
-
-dataView.setFloat32("", 7);
-assert.sameValue(dataView.getFloat32(0), 7, "setFloat32('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setFloat32(2147483648, 8);
-}, "setFloat32(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setFloat32(4294967296, 9);
-}, "setFloat32(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setFloat32(obj, 10);
-assert.sameValue(dataView.getFloat32(1), 10, "setFloat32(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setFloat32/negative-byteoffset-throws.js
similarity index 85%
rename from test/built-ins/DataView/prototype/setFloat32/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setFloat32/negative-byteoffset-throws.js
index c6c37d61bcc7e12257db933a0e35bbc29d16faee..1abcccd9ef8f9733b66104503a4c210395797e86 100644
--- a/test/built-ins/DataView/prototype/setFloat32/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setFloat32/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getFloat32]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setFloat32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setFloat32/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..c35276f0a0938ef02e9c18e455c6689f7cb900be
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setFloat32/toindex-byteoffset.js
@@ -0,0 +1,108 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setfloat32
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float32", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getFloat32]
+---*/
+
+var buffer = new ArrayBuffer(8);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setFloat32(0, 0);
+sample.setFloat32(-0, 42);
+assert.sameValue(sample.getFloat32(0), 42, "-0");
+
+sample.setFloat32(3, 0);
+sample.setFloat32(obj1, 42);
+assert.sameValue(sample.getFloat32(3), 42, "object's valueOf");
+
+sample.setFloat32(4, 0);
+sample.setFloat32(obj2, 42);
+assert.sameValue(sample.getFloat32(4), 42, "object's toString");
+
+sample.setFloat32(0, 0);
+sample.setFloat32("", 42);
+assert.sameValue(sample.getFloat32(0), 42, "the Empty string");
+
+sample.setFloat32(0, 0);
+sample.setFloat32("0", 42);
+assert.sameValue(sample.getFloat32(0), 42, "string '0'");
+
+sample.setFloat32(2, 0);
+sample.setFloat32("2", 42);
+assert.sameValue(sample.getFloat32(2), 42, "string '2'");
+
+sample.setFloat32(1, 0);
+sample.setFloat32(true, 42);
+assert.sameValue(sample.getFloat32(1), 42, "true");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(false, 42);
+assert.sameValue(sample.getFloat32(0), 42, "false");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(NaN, 42);
+assert.sameValue(sample.getFloat32(0), 42, "NaN");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(null, 42);
+assert.sameValue(sample.getFloat32(0), 42, "null");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(0.1, 42);
+assert.sameValue(sample.getFloat32(0), 42, "0.1");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(0.9, 42);
+assert.sameValue(sample.getFloat32(0), 42, "0.9");
+
+sample.setFloat32(1, 0);
+sample.setFloat32(1.1, 42);
+assert.sameValue(sample.getFloat32(1), 42, "1.1");
+
+sample.setFloat32(1, 0);
+sample.setFloat32(1.9, 42);
+assert.sameValue(sample.getFloat32(1), 42, "1.9");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(-0.1, 42);
+assert.sameValue(sample.getFloat32(0), 42, "-0.1");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(-0.99999, 42);
+assert.sameValue(sample.getFloat32(0), 42, "-0.99999");
+
+sample.setFloat32(0, 0);
+sample.setFloat32(undefined, 42);
+assert.sameValue(sample.getFloat32(0), 42, "undefined");
+
+sample.setFloat32(0, 7);
+sample.setFloat32();
+assert.sameValue(sample.getFloat32(0), 0, "no arg");
diff --git a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 79eb48e9803fb6504d9e8eb721a36697a3cd6b38..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setfloat64
-es6id: 24.2.4.14
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float64", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getFloat64]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setFloat64();
-}, "no args");
-assert.sameValue(sample.getFloat64(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat64(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getFloat64(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat64(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getFloat64(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat64(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getFloat64(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat64(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getFloat64(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat64(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getFloat64(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setFloat64(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getFloat64(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js
index 369976baa6c847143b43c3fe6fd6fb2b8a7af027..5a80f5641dcfcdac64b650b9e234160aec823fd3 100644
--- a/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setFloat64/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setFloat64(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setFloat64(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js
index 9df86cd988904d78382e171ee8eaa2849a0e191a..5e66803fb73466ca91a8621516e52f8d4dc5e5bb 100755
--- a/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setFloat64/index-check-before-value-conversion.js
@@ -13,10 +13,7 @@ info: >
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ToNumber(requestIndex).
-  5. Let getIndex be ? ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  7. Let numberValue be ? ToNumber(value).
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
@@ -28,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setFloat64(NaN, poisoned);
-}, "setFloat64(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64(1.5, poisoned);
-}, "setFloat64(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setFloat64(-1.5, poisoned);
 }, "setFloat64(-1.5, poisoned)");
@@ -47,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setFloat64(-Infinity, poisoned);
 }, "setFloat64(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64(undefined, poisoned);
-}, "setFloat64(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64('invalid', poisoned);
-}, "setFloat64('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64('NaN', poisoned);
-}, "setFloat64('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64('1.5', poisoned);
-}, "setFloat64('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64('-1.5', poisoned);
-}, "setFloat64('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64('-1', poisoned);
-}, "setFloat64('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setFloat64('-Infinity', poisoned);
-}, "setFloat64('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setFloat64(obj, poisoned);
-}, "setFloat64(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setFloat64/index-to-integer.js b/test/built-ins/DataView/prototype/setFloat64/index-to-integer.js
deleted file mode 100755
index 38c4a18313653c0b91f6b6d315d920381521d475..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setFloat64/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.14
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Float64", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(16), 0);
-
-dataView.setFloat64(+0, 1);
-assert.sameValue(dataView.getFloat64(0), 1, "setFloat64(+0, 1)");
-
-dataView.setFloat64(-0, 2);
-assert.sameValue(dataView.getFloat64(0), 2, "setFloat64(-0, 2)");
-
-dataView.setFloat64(1, 3);
-assert.sameValue(dataView.getFloat64(1), 3, "setFloat64(1, 3)");
-
-dataView.setFloat64(null, 4);
-assert.sameValue(dataView.getFloat64(0), 4, "setFloat64(null, 4)");
-
-dataView.setFloat64(false, 5);
-assert.sameValue(dataView.getFloat64(0), 5, "setFloat64(false, 5)");
-
-dataView.setFloat64(true, 6);
-assert.sameValue(dataView.getFloat64(1), 6, "setFloat64(true, 6)");
-
-dataView.setFloat64("", 7);
-assert.sameValue(dataView.getFloat64(0), 7, "setFloat64('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setFloat64(2147483648, 8);
-}, "setFloat64(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setFloat64(4294967296, 9);
-}, "setFloat64(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setFloat64(obj, 10);
-assert.sameValue(dataView.getFloat64(1), 10, "setFloat64(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setFloat64/negative-byteoffset-throws.js
similarity index 85%
rename from test/built-ins/DataView/prototype/setFloat64/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setFloat64/negative-byteoffset-throws.js
index 95572ff02cceeafa7342aaa59cd1aa1a2d3ce2ba..940f45bef9bc1da98d350cf6709fa5cb45f8d7fd 100644
--- a/test/built-ins/DataView/prototype/setFloat64/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setFloat64/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getFloat64]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setFloat64/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setFloat64/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..d09773c3581ae982e5f0537e0fffae7c49ff3291
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setFloat64/toindex-byteoffset.js
@@ -0,0 +1,109 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setfloat64
+es6id: 24.2.4.14
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Float64", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getFloat64]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setFloat64(0, 0);
+sample.setFloat64(-0, 42);
+assert.sameValue(sample.getFloat64(0), 42, "-0");
+
+sample.setFloat64(3, 0);
+sample.setFloat64(obj1, 42);
+assert.sameValue(sample.getFloat64(3), 42, "object's valueOf");
+
+sample.setFloat64(4, 0);
+sample.setFloat64(obj2, 42);
+assert.sameValue(sample.getFloat64(4), 42, "object's toString");
+
+sample.setFloat64(0, 0);
+sample.setFloat64("", 42);
+assert.sameValue(sample.getFloat64(0), 42, "the Empty string");
+
+sample.setFloat64(0, 0);
+sample.setFloat64("0", 42);
+assert.sameValue(sample.getFloat64(0), 42, "string '0'");
+
+sample.setFloat64(2, 0);
+sample.setFloat64("2", 42);
+assert.sameValue(sample.getFloat64(2), 42, "string '2'");
+
+sample.setFloat64(1, 0);
+sample.setFloat64(true, 42);
+assert.sameValue(sample.getFloat64(1), 42, "true");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(false, 42);
+assert.sameValue(sample.getFloat64(0), 42, "false");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(NaN, 42);
+assert.sameValue(sample.getFloat64(0), 42, "NaN");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(null, 42);
+assert.sameValue(sample.getFloat64(0), 42, "null");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(0.1, 42);
+assert.sameValue(sample.getFloat64(0), 42, "0.1");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(0.9, 42);
+assert.sameValue(sample.getFloat64(0), 42, "0.9");
+
+sample.setFloat64(1, 0);
+sample.setFloat64(1.1, 42);
+assert.sameValue(sample.getFloat64(1), 42, "1.1");
+
+sample.setFloat64(1, 0);
+sample.setFloat64(1.9, 42);
+assert.sameValue(sample.getFloat64(1), 42, "1.9");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(-0.1, 42);
+assert.sameValue(sample.getFloat64(0), 42, "-0.1");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(-0.99999, 42);
+assert.sameValue(sample.getFloat64(0), 42, "-0.99999");
+
+sample.setFloat64(0, 0);
+sample.setFloat64(undefined, 42);
+assert.sameValue(sample.getFloat64(0), 42, "undefined");
+
+sample.setFloat64(0, 7);
+sample.setFloat64();
+assert.sameValue(sample.getFloat64(0), 0, "no arg");
diff --git a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setInt16/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index c3d6159df95726715bed0b380d5e97a409a37208..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setint16
-es6id: 24.2.4.16
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getInt16]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setInt16();
-}, "no args");
-assert.sameValue(sample.getInt16(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt16(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getInt16(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt16(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getInt16(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt16(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getInt16(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt16(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getInt16(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt16(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getInt16(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt16(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getInt16(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js
index 5cbb432588d39d93ed9fe41eaf147dc61d6ac978..765fd8b3e8d73cc359d2536d48ba604f1261bdfa 100644
--- a/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setInt16/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setInt16(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setInt16(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js
index 6c18f4fbe973bc1d4f3d801a861be38deaafb75a..826cbc8313132dbf26c56778482342bf13fb1661 100755
--- a/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setInt16/index-check-before-value-conversion.js
@@ -11,12 +11,10 @@ info: >
   3. Return SetViewValue(v, byteOffset, littleEndian, "Int16", value).
 
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ? ToInteger(numberIndex).
-    5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-    6. Let numberValue be ? ToNumber(value).
-    ...
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
 ---*/
 
 var dataView = new DataView(new ArrayBuffer(8), 0);
@@ -27,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setInt16(NaN, poisoned);
-}, "setInt16(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16(1.5, poisoned);
-}, "setInt16(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setInt16(-1.5, poisoned);
 }, "setInt16(-1.5, poisoned)");
@@ -46,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setInt16(-Infinity, poisoned);
 }, "setInt16(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16(undefined, poisoned);
-}, "setInt16(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16('invalid', poisoned);
-}, "setInt16('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16('NaN', poisoned);
-}, "setInt16('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16('1.5', poisoned);
-}, "setInt16('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16('-1.5', poisoned);
-}, "setInt16('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16('-1', poisoned);
-}, "setInt16('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt16('-Infinity', poisoned);
-}, "setInt16('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setInt16(obj, poisoned);
-}, "setInt16(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setInt16/index-to-integer.js b/test/built-ins/DataView/prototype/setInt16/index-to-integer.js
deleted file mode 100755
index d8c226498cf2e077bcd35692a1b3f5262afff666..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setInt16/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.16
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Int16", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(8), 0);
-
-dataView.setInt16(+0, 1);
-assert.sameValue(dataView.getInt16(0), 1, "setInt16(+0, 1)");
-
-dataView.setInt16(-0, 2);
-assert.sameValue(dataView.getInt16(0), 2, "setInt16(-0, 2)");
-
-dataView.setInt16(1, 3);
-assert.sameValue(dataView.getInt16(1), 3, "setInt16(1, 3)");
-
-dataView.setInt16(null, 4);
-assert.sameValue(dataView.getInt16(0), 4, "setInt16(null, 4)");
-
-dataView.setInt16(false, 5);
-assert.sameValue(dataView.getInt16(0), 5, "setInt16(false, 5)");
-
-dataView.setInt16(true, 6);
-assert.sameValue(dataView.getInt16(1), 6, "setInt16(true, 6)");
-
-dataView.setInt16("", 7);
-assert.sameValue(dataView.getInt16(0), 7, "setInt16('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setInt16(2147483648, 8);
-}, "setInt16(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setInt16(4294967296, 9);
-}, "setInt16(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setInt16(obj, 10);
-assert.sameValue(dataView.getInt16(1), 10, "setInt16(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setInt16/negative-byteoffset-throws.js
similarity index 85%
rename from test/built-ins/DataView/prototype/setInt16/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setInt16/negative-byteoffset-throws.js
index 4b2e67266bccbb3ea2c098f14808eb79170e66a7..84778b720a648a42499890664a134a7011c1d8a9 100644
--- a/test/built-ins/DataView/prototype/setInt16/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setInt16/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getInt16]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setInt16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setInt16/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..33864075fee6a7ff45e3124d94df887563894a5b
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setInt16/toindex-byteoffset.js
@@ -0,0 +1,109 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setint16
+es6id: 24.2.4.16
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int16", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getInt16]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setInt16(0, 0);
+sample.setInt16(-0, 42);
+assert.sameValue(sample.getInt16(0), 42, "-0");
+
+sample.setInt16(3, 0);
+sample.setInt16(obj1, 42);
+assert.sameValue(sample.getInt16(3), 42, "object's valueOf");
+
+sample.setInt16(4, 0);
+sample.setInt16(obj2, 42);
+assert.sameValue(sample.getInt16(4), 42, "object's toString");
+
+sample.setInt16(0, 0);
+sample.setInt16("", 42);
+assert.sameValue(sample.getInt16(0), 42, "the Empty string");
+
+sample.setInt16(0, 0);
+sample.setInt16("0", 42);
+assert.sameValue(sample.getInt16(0), 42, "string '0'");
+
+sample.setInt16(2, 0);
+sample.setInt16("2", 42);
+assert.sameValue(sample.getInt16(2), 42, "string '2'");
+
+sample.setInt16(1, 0);
+sample.setInt16(true, 42);
+assert.sameValue(sample.getInt16(1), 42, "true");
+
+sample.setInt16(0, 0);
+sample.setInt16(false, 42);
+assert.sameValue(sample.getInt16(0), 42, "false");
+
+sample.setInt16(0, 0);
+sample.setInt16(NaN, 42);
+assert.sameValue(sample.getInt16(0), 42, "NaN");
+
+sample.setInt16(0, 0);
+sample.setInt16(null, 42);
+assert.sameValue(sample.getInt16(0), 42, "null");
+
+sample.setInt16(0, 0);
+sample.setInt16(0.1, 42);
+assert.sameValue(sample.getInt16(0), 42, "0.1");
+
+sample.setInt16(0, 0);
+sample.setInt16(0.9, 42);
+assert.sameValue(sample.getInt16(0), 42, "0.9");
+
+sample.setInt16(1, 0);
+sample.setInt16(1.1, 42);
+assert.sameValue(sample.getInt16(1), 42, "1.1");
+
+sample.setInt16(1, 0);
+sample.setInt16(1.9, 42);
+assert.sameValue(sample.getInt16(1), 42, "1.9");
+
+sample.setInt16(0, 0);
+sample.setInt16(-0.1, 42);
+assert.sameValue(sample.getInt16(0), 42, "-0.1");
+
+sample.setInt16(0, 0);
+sample.setInt16(-0.99999, 42);
+assert.sameValue(sample.getInt16(0), 42, "-0.99999");
+
+sample.setInt16(0, 0);
+sample.setInt16(undefined, 42);
+assert.sameValue(sample.getInt16(0), 42, "undefined");
+
+sample.setInt16(0, 7);
+sample.setInt16();
+assert.sameValue(sample.getInt16(0), 0, "no arg");
diff --git a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setInt32/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index bbc528a9b121753a7a147f05bd3385a37b7f59b8..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setint32
-es6id: 24.2.4.17
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int32", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getInt32]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setInt32();
-}, "no args");
-assert.sameValue(sample.getInt32(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt32(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getInt32(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt32(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getInt32(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt32(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getInt32(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt32(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getInt32(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt32(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getInt32(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt32(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getInt32(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js
index b42eef93168901352ad4bea6a30f48c92465bbc7..128e66b0db2ef66b0e1159e66f904902d8c40d4f 100644
--- a/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setInt32/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setInt32(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setInt32(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js
index 2ee670647be9ee4e84088c94d2de23ca0f2e0558..ee0adecbf3bc3967ef3bd5d15eaa402a386e4af2 100755
--- a/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setInt32/index-check-before-value-conversion.js
@@ -13,10 +13,7 @@ info: >
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ToNumber(requestIndex).
-  5. Let getIndex be ? ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  7. Let numberValue be ? ToNumber(value).
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 ---*/
 
@@ -28,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setInt32(NaN, poisoned);
-}, "setInt32(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32(1.5, poisoned);
-}, "setInt32(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setInt32(-1.5, poisoned);
 }, "setInt32(-1.5, poisoned)");
@@ -47,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setInt32(-Infinity, poisoned);
 }, "setInt32(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32(undefined, poisoned);
-}, "setInt32(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32('invalid', poisoned);
-}, "setInt32('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32('NaN', poisoned);
-}, "setInt32('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32('1.5', poisoned);
-}, "setInt32('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32('-1.5', poisoned);
-}, "setInt32('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32('-1', poisoned);
-}, "setInt32('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt32('-Infinity', poisoned);
-}, "setInt32('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setInt32(obj, poisoned);
-}, "setInt32(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setInt32/index-to-integer.js b/test/built-ins/DataView/prototype/setInt32/index-to-integer.js
deleted file mode 100755
index e9d2a5496330abdbfa77c67e6db0cb41e23b9cae..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setInt32/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.17
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Int32", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(8), 0);
-
-dataView.setInt32(+0, 1);
-assert.sameValue(dataView.getInt32(0), 1, "setInt32(+0, 1)");
-
-dataView.setInt32(-0, 2);
-assert.sameValue(dataView.getInt32(0), 2, "setInt32(-0, 2)");
-
-dataView.setInt32(1, 3);
-assert.sameValue(dataView.getInt32(1), 3, "setInt32(1, 3)");
-
-dataView.setInt32(null, 4);
-assert.sameValue(dataView.getInt32(0), 4, "setInt32(null, 4)");
-
-dataView.setInt32(false, 5);
-assert.sameValue(dataView.getInt32(0), 5, "setInt32(false, 5)");
-
-dataView.setInt32(true, 6);
-assert.sameValue(dataView.getInt32(1), 6, "setInt32(true, 6)");
-
-dataView.setInt32("", 7);
-assert.sameValue(dataView.getInt32(0), 7, "setInt32('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setInt32(2147483648, 8);
-}, "setInt32(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setInt32(4294967296, 9);
-}, "setInt32(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setInt32(obj, 10);
-assert.sameValue(dataView.getInt32(1), 10, "setInt32(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setInt32/negative-byteoffset-throws.js
similarity index 85%
rename from test/built-ins/DataView/prototype/setInt32/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setInt32/negative-byteoffset-throws.js
index 2f08ceac6204c1e84f678f25a3198c7bdbdaa48b..db2e5c428c118af7b272613c2f413f042515ddcf 100644
--- a/test/built-ins/DataView/prototype/setInt32/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setInt32/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getInt32]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setInt32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setInt32/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5b45a5ae978bab08dbf158c0f50e5e8c3e7872a
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setInt32/toindex-byteoffset.js
@@ -0,0 +1,109 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setint32
+es6id: 24.2.4.17
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Int32", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getInt32]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setInt32(0, 0);
+sample.setInt32(-0, 42);
+assert.sameValue(sample.getInt32(0), 42, "-0");
+
+sample.setInt32(3, 0);
+sample.setInt32(obj1, 42);
+assert.sameValue(sample.getInt32(3), 42, "object's valueOf");
+
+sample.setInt32(4, 0);
+sample.setInt32(obj2, 42);
+assert.sameValue(sample.getInt32(4), 42, "object's toString");
+
+sample.setInt32(0, 0);
+sample.setInt32("", 42);
+assert.sameValue(sample.getInt32(0), 42, "the Empty string");
+
+sample.setInt32(0, 0);
+sample.setInt32("0", 42);
+assert.sameValue(sample.getInt32(0), 42, "string '0'");
+
+sample.setInt32(2, 0);
+sample.setInt32("2", 42);
+assert.sameValue(sample.getInt32(2), 42, "string '2'");
+
+sample.setInt32(1, 0);
+sample.setInt32(true, 42);
+assert.sameValue(sample.getInt32(1), 42, "true");
+
+sample.setInt32(0, 0);
+sample.setInt32(false, 42);
+assert.sameValue(sample.getInt32(0), 42, "false");
+
+sample.setInt32(0, 0);
+sample.setInt32(NaN, 42);
+assert.sameValue(sample.getInt32(0), 42, "NaN");
+
+sample.setInt32(0, 0);
+sample.setInt32(null, 42);
+assert.sameValue(sample.getInt32(0), 42, "null");
+
+sample.setInt32(0, 0);
+sample.setInt32(0.1, 42);
+assert.sameValue(sample.getInt32(0), 42, "0.1");
+
+sample.setInt32(0, 0);
+sample.setInt32(0.9, 42);
+assert.sameValue(sample.getInt32(0), 42, "0.9");
+
+sample.setInt32(1, 0);
+sample.setInt32(1.1, 42);
+assert.sameValue(sample.getInt32(1), 42, "1.1");
+
+sample.setInt32(1, 0);
+sample.setInt32(1.9, 42);
+assert.sameValue(sample.getInt32(1), 42, "1.9");
+
+sample.setInt32(0, 0);
+sample.setInt32(-0.1, 42);
+assert.sameValue(sample.getInt32(0), 42, "-0.1");
+
+sample.setInt32(0, 0);
+sample.setInt32(-0.99999, 42);
+assert.sameValue(sample.getInt32(0), 42, "-0.99999");
+
+sample.setInt32(0, 0);
+sample.setInt32(undefined, 42);
+assert.sameValue(sample.getInt32(0), 42, "undefined");
+
+sample.setInt32(0, 7);
+sample.setInt32();
+assert.sameValue(sample.getInt32(0), 0, "no arg");
\ No newline at end of file
diff --git a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setInt8/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 507836935ae448fb3a1aa608e8a355fd875a652d..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setint8
-es6id: 24.2.4.15
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
-
-  1. Let v be the this value.
-  2. Return ? SetViewValue(v, byteOffset, true, "Int8", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getInt8]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setInt8();
-}, "no args");
-assert.sameValue(sample.getInt8(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt8(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getInt8(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt8(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getInt8(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt8(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getInt8(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt8(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getInt8(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt8(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getInt8(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setInt8(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getInt8(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js
index beab4af062e7ff460fc0c1a94eeedf59be6aab7c..55eddc992a76416754c348d93017cca1f45240d7 100644
--- a/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setInt8/detached-buffer-after-integer-byteoffset.js
@@ -16,10 +16,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setInt8(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setInt8(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js
index d297712e0c8d202c149e80eb482db0cebc937867..ca6ce0c5a99b734369c26a9559f45b8bea8bf53f 100755
--- a/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setInt8/index-check-before-value-conversion.js
@@ -11,12 +11,10 @@ info: >
   3. Return SetViewValue(v, byteOffset, littleEndian, "Int8", value).
 
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ? ToInteger(numberIndex).
-    5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-    6. Let numberValue be ? ToNumber(value).
-    ...
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
 ---*/
 
 var dataView = new DataView(new ArrayBuffer(8), 0);
@@ -27,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setInt8(NaN, poisoned);
-}, "setInt8(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8(1.5, poisoned);
-}, "setInt8(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setInt8(-1.5, poisoned);
 }, "setInt8(-1.5, poisoned)");
@@ -46,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setInt8(-Infinity, poisoned);
 }, "setInt8(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8(undefined, poisoned);
-}, "setInt8(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8('invalid', poisoned);
-}, "setInt8('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8('NaN', poisoned);
-}, "setInt8('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8('1.5', poisoned);
-}, "setInt8('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8('-1.5', poisoned);
-}, "setInt8('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8('-1', poisoned);
-}, "setInt8('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setInt8('-Infinity', poisoned);
-}, "setInt8('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setInt8(obj, poisoned);
-}, "setInt8(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setInt8/index-to-integer.js b/test/built-ins/DataView/prototype/setInt8/index-to-integer.js
deleted file mode 100755
index 409f722bbe5a509f4e59e73a5eed80b7cc279442..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setInt8/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.15
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Int8", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(8), 0);
-
-dataView.setInt8(+0, 1);
-assert.sameValue(dataView.getInt8(0), 1, "setInt8(+0, 1)");
-
-dataView.setInt8(-0, 2);
-assert.sameValue(dataView.getInt8(0), 2, "setInt8(-0, 2)");
-
-dataView.setInt8(1, 3);
-assert.sameValue(dataView.getInt8(1), 3, "setInt8(1, 3)");
-
-dataView.setInt8(null, 4);
-assert.sameValue(dataView.getInt8(0), 4, "setInt8(null, 4)");
-
-dataView.setInt8(false, 5);
-assert.sameValue(dataView.getInt8(0), 5, "setInt8(false, 5)");
-
-dataView.setInt8(true, 6);
-assert.sameValue(dataView.getInt8(1), 6, "setInt8(true, 6)");
-
-dataView.setInt8("", 7);
-assert.sameValue(dataView.getInt8(0), 7, "setInt8('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setInt8(2147483648, 8);
-}, "setInt8(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setInt8(4294967296, 9);
-}, "setInt8(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setInt8(obj, 10);
-assert.sameValue(dataView.getInt8(1), 10, "setInt8(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setInt8/negative-byteoffset-throws.js
similarity index 84%
rename from test/built-ins/DataView/prototype/setInt8/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setInt8/negative-byteoffset-throws.js
index 09b103b7547440269e42fe78bd0f0f2d07c0d47c..5709e2ecc0c3f873a0c713eff1e0db85e2dfefac 100644
--- a/test/built-ins/DataView/prototype/setInt8/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setInt8/negative-byteoffset-throws.js
@@ -15,9 +15,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getInt8]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setInt8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setInt8/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9022740c2a75b21ec456a8deed607d60eb65622
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setInt8/toindex-byteoffset.js
@@ -0,0 +1,108 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setint8
+es6id: 24.2.4.15
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
+
+  1. Let v be the this value.
+  2. Return ? SetViewValue(v, byteOffset, true, "Int8", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getInt8]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setInt8(0, 0);
+sample.setInt8(-0, 42);
+assert.sameValue(sample.getInt8(0), 42, "-0");
+
+sample.setInt8(3, 0);
+sample.setInt8(obj1, 42);
+assert.sameValue(sample.getInt8(3), 42, "object's valueOf");
+
+sample.setInt8(4, 0);
+sample.setInt8(obj2, 42);
+assert.sameValue(sample.getInt8(4), 42, "object's toString");
+
+sample.setInt8(0, 0);
+sample.setInt8("", 42);
+assert.sameValue(sample.getInt8(0), 42, "the Empty string");
+
+sample.setInt8(0, 0);
+sample.setInt8("0", 42);
+assert.sameValue(sample.getInt8(0), 42, "string '0'");
+
+sample.setInt8(2, 0);
+sample.setInt8("2", 42);
+assert.sameValue(sample.getInt8(2), 42, "string '2'");
+
+sample.setInt8(1, 0);
+sample.setInt8(true, 42);
+assert.sameValue(sample.getInt8(1), 42, "true");
+
+sample.setInt8(0, 0);
+sample.setInt8(false, 42);
+assert.sameValue(sample.getInt8(0), 42, "false");
+
+sample.setInt8(0, 0);
+sample.setInt8(NaN, 42);
+assert.sameValue(sample.getInt8(0), 42, "NaN");
+
+sample.setInt8(0, 0);
+sample.setInt8(null, 42);
+assert.sameValue(sample.getInt8(0), 42, "null");
+
+sample.setInt8(0, 0);
+sample.setInt8(0.1, 42);
+assert.sameValue(sample.getInt8(0), 42, "0.1");
+
+sample.setInt8(0, 0);
+sample.setInt8(0.9, 42);
+assert.sameValue(sample.getInt8(0), 42, "0.9");
+
+sample.setInt8(1, 0);
+sample.setInt8(1.1, 42);
+assert.sameValue(sample.getInt8(1), 42, "1.1");
+
+sample.setInt8(1, 0);
+sample.setInt8(1.9, 42);
+assert.sameValue(sample.getInt8(1), 42, "1.9");
+
+sample.setInt8(0, 0);
+sample.setInt8(-0.1, 42);
+assert.sameValue(sample.getInt8(0), 42, "-0.1");
+
+sample.setInt8(0, 0);
+sample.setInt8(-0.99999, 42);
+assert.sameValue(sample.getInt8(0), 42, "-0.99999");
+
+sample.setInt8(0, 0);
+sample.setInt8(undefined, 42);
+assert.sameValue(sample.getInt8(0), 42, "undefined");
+
+sample.setInt8(0, 7);
+sample.setInt8();
+assert.sameValue(sample.getInt8(0), 0, "no arg");
diff --git a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setUint16/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 92b1c2b4c435d9f03b76b5a17b22d667c97871de..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setuint16
-es6id: 24.2.4.19
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint16", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getUint16]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setUint16();
-}, "no args");
-assert.sameValue(sample.getUint16(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint16(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getUint16(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint16(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getUint16(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint16(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getUint16(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint16(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getUint16(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint16(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getUint16(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint16(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getUint16(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js
index 097ab657c0e20d87be28234b1521ada6f17af2ac..86f4be4bd9dabd328deec3eeb617ef67f876b207 100644
--- a/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setUint16/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setUint16(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setUint16(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js
index 35475d172f1da9864ffbf3c05bd515ca4c4e2222..6fed3d7b4fd266823d6937d51bc8338decf61b8c 100755
--- a/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setUint16/index-check-before-value-conversion.js
@@ -11,12 +11,10 @@ info: >
   3. Return SetViewValue(v, byteOffset, littleEndian, "Uint16", value).
 
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ? ToInteger(numberIndex).
-    5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-    6. Let numberValue be ? ToNumber(value).
-    ...
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
 ---*/
 
 var dataView = new DataView(new ArrayBuffer(8), 0);
@@ -27,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setUint16(NaN, poisoned);
-}, "setUint16(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16(1.5, poisoned);
-}, "setUint16(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setUint16(-1.5, poisoned);
 }, "setUint16(-1.5, poisoned)");
@@ -46,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setUint16(-Infinity, poisoned);
 }, "setUint16(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16(undefined, poisoned);
-}, "setUint16(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16('invalid', poisoned);
-}, "setUint16('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16('NaN', poisoned);
-}, "setUint16('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16('1.5', poisoned);
-}, "setUint16('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16('-1.5', poisoned);
-}, "setUint16('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16('-1', poisoned);
-}, "setUint16('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint16('-Infinity', poisoned);
-}, "setUint16('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setUint16(obj, poisoned);
-}, "setUint16(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setUint16/index-to-integer.js b/test/built-ins/DataView/prototype/setUint16/index-to-integer.js
deleted file mode 100755
index fbce423b58d4ea83f869b5f08fe0a2b967557fd1..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setUint16/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.19
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Uint16", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(8), 0);
-
-dataView.setUint16(+0, 1);
-assert.sameValue(dataView.getUint16(0), 1, "setUint16(+0, 1)");
-
-dataView.setUint16(-0, 2);
-assert.sameValue(dataView.getUint16(0), 2, "setUint16(-0, 2)");
-
-dataView.setUint16(1, 3);
-assert.sameValue(dataView.getUint16(1), 3, "setUint16(1, 3)");
-
-dataView.setUint16(null, 4);
-assert.sameValue(dataView.getUint16(0), 4, "setUint16(null, 4)");
-
-dataView.setUint16(false, 5);
-assert.sameValue(dataView.getUint16(0), 5, "setUint16(false, 5)");
-
-dataView.setUint16(true, 6);
-assert.sameValue(dataView.getUint16(1), 6, "setUint16(true, 6)");
-
-dataView.setUint16("", 7);
-assert.sameValue(dataView.getUint16(0), 7, "setUint16('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setUint16(2147483648, 8);
-}, "setUint16(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setUint16(4294967296, 9);
-}, "setUint16(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setUint16(obj, 10);
-assert.sameValue(dataView.getUint16(1), 10, "setUint16(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setUint16/negative-byteoffset-throws.js
similarity index 85%
rename from test/built-ins/DataView/prototype/setUint16/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setUint16/negative-byteoffset-throws.js
index 28fea9f79142374e6ce9c06b9cdee75232bad397..282a71565ade1ab2d124e412d40047baa2401d47 100644
--- a/test/built-ins/DataView/prototype/setUint16/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setUint16/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getUint16]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setUint16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setUint16/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..703fdedba8b5ce2e5daebd027b28cb3662ddfcc8
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setUint16/toindex-byteoffset.js
@@ -0,0 +1,109 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setuint16
+es6id: 24.2.4.19
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint16", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getUint16]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setUint16(0, 0);
+sample.setUint16(-0, 42);
+assert.sameValue(sample.getUint16(0), 42, "-0");
+
+sample.setUint16(3, 0);
+sample.setUint16(obj1, 42);
+assert.sameValue(sample.getUint16(3), 42, "object's valueOf");
+
+sample.setUint16(4, 0);
+sample.setUint16(obj2, 42);
+assert.sameValue(sample.getUint16(4), 42, "object's toString");
+
+sample.setUint16(0, 0);
+sample.setUint16("", 42);
+assert.sameValue(sample.getUint16(0), 42, "the Empty string");
+
+sample.setUint16(0, 0);
+sample.setUint16("0", 42);
+assert.sameValue(sample.getUint16(0), 42, "string '0'");
+
+sample.setUint16(2, 0);
+sample.setUint16("2", 42);
+assert.sameValue(sample.getUint16(2), 42, "string '2'");
+
+sample.setUint16(1, 0);
+sample.setUint16(true, 42);
+assert.sameValue(sample.getUint16(1), 42, "true");
+
+sample.setUint16(0, 0);
+sample.setUint16(false, 42);
+assert.sameValue(sample.getUint16(0), 42, "false");
+
+sample.setUint16(0, 0);
+sample.setUint16(NaN, 42);
+assert.sameValue(sample.getUint16(0), 42, "NaN");
+
+sample.setUint16(0, 0);
+sample.setUint16(null, 42);
+assert.sameValue(sample.getUint16(0), 42, "null");
+
+sample.setUint16(0, 0);
+sample.setUint16(0.1, 42);
+assert.sameValue(sample.getUint16(0), 42, "0.1");
+
+sample.setUint16(0, 0);
+sample.setUint16(0.9, 42);
+assert.sameValue(sample.getUint16(0), 42, "0.9");
+
+sample.setUint16(1, 0);
+sample.setUint16(1.1, 42);
+assert.sameValue(sample.getUint16(1), 42, "1.1");
+
+sample.setUint16(1, 0);
+sample.setUint16(1.9, 42);
+assert.sameValue(sample.getUint16(1), 42, "1.9");
+
+sample.setUint16(0, 0);
+sample.setUint16(-0.1, 42);
+assert.sameValue(sample.getUint16(0), 42, "-0.1");
+
+sample.setUint16(0, 0);
+sample.setUint16(-0.99999, 42);
+assert.sameValue(sample.getUint16(0), 42, "-0.99999");
+
+sample.setUint16(0, 0);
+sample.setUint16(undefined, 42);
+assert.sameValue(sample.getUint16(0), 42, "undefined");
+
+sample.setUint16(0, 7);
+sample.setUint16();
+assert.sameValue(sample.getUint16(0), 0, "no arg");
diff --git a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setUint32/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index d8327a4fde5589a63104c07aa898447ca878d985..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setuint32
-es6id: 24.2.4.20
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
-
-  1. Let v be the this value.
-  2. If littleEndian is not present, let littleEndian be false.
-  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint32", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [DataView.prototype.getUint32]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setUint32();
-}, "no args");
-assert.sameValue(sample.getUint32(0), 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint32(undefined, 39);
-}, "undefined");
-assert.sameValue(sample.getUint32(0), 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint32(1.1, 39);
-}, "floating number");
-assert.sameValue(sample.getUint32(0), 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint32(0.1, 39);
-}, "0.1");
-assert.sameValue(sample.getUint32(0), 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint32(NaN, 39);
-}, "NaN");
-assert.sameValue(sample.getUint32(0), 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint32(-0.1, 39);
-}, "-0.1");
-assert.sameValue(sample.getUint32(0), 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint32(-1.1, 39);
-}, "-1.1");
-assert.sameValue(sample.getUint32(0), 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js
index 4fe6c41df7b77817deff482e984fb0548130f9dc..7c9472078a2770ae77709e4223c221ab8f603ac9 100644
--- a/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setUint32/detached-buffer-after-integer-byteoffset.js
@@ -17,10 +17,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -29,9 +29,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setUint32(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setUint32(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js
index b9abf5028d12ffceed4d28548146f6b3d0d290ba..7bbab801d30b7b08a56bc87d881757ab96430fc3 100755
--- a/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setUint32/index-check-before-value-conversion.js
@@ -11,12 +11,10 @@ info: >
   3. Return SetViewValue(v, byteOffset, littleEndian, "Uint32", value).
 
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ? ToInteger(numberIndex).
-    5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-    6. Let numberValue be ? ToNumber(value).
-    ...
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
 ---*/
 
 var dataView = new DataView(new ArrayBuffer(8), 0);
@@ -27,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setUint32(NaN, poisoned);
-}, "setUint32(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32(1.5, poisoned);
-}, "setUint32(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setUint32(-1.5, poisoned);
 }, "setUint32(-1.5, poisoned)");
@@ -46,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setUint32(-Infinity, poisoned);
 }, "setUint32(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32(undefined, poisoned);
-}, "setUint32(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32('invalid', poisoned);
-}, "setUint32('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32('NaN', poisoned);
-}, "setUint32('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32('1.5', poisoned);
-}, "setUint32('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32('-1.5', poisoned);
-}, "setUint32('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32('-1', poisoned);
-}, "setUint32('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint32('-Infinity', poisoned);
-}, "setUint32('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setUint32(obj, poisoned);
-}, "setUint32(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setUint32/index-to-integer.js b/test/built-ins/DataView/prototype/setUint32/index-to-integer.js
deleted file mode 100755
index 81488f4337276f05c234c984a1d789a96ffeef75..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setUint32/index-to-integer.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.20
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Uint32", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
----*/
-
-var dataView = new DataView(new ArrayBuffer(8), 0);
-
-dataView.setUint32(+0, 1);
-assert.sameValue(dataView.getUint32(0), 1, "setUint32(+0, 1)");
-
-dataView.setUint32(-0, 2);
-assert.sameValue(dataView.getUint32(0), 2, "setUint32(-0, 2)");
-
-dataView.setUint32(1, 3);
-assert.sameValue(dataView.getUint32(1), 3, "setUint32(1, 3)");
-
-dataView.setUint32(null, 4);
-assert.sameValue(dataView.getUint32(0), 4, "setUint32(null, 4)");
-
-dataView.setUint32(false, 5);
-assert.sameValue(dataView.getUint32(0), 5, "setUint32(false, 5)");
-
-dataView.setUint32(true, 6);
-assert.sameValue(dataView.getUint32(1), 6, "setUint32(true, 6)");
-
-dataView.setUint32("", 7);
-assert.sameValue(dataView.getUint32(0), 7, "setUint32('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setUint32(2147483648, 8);
-}, "setUint32(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setUint32(4294967296, 9);
-}, "setUint32(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setUint32(obj, 10);
-assert.sameValue(dataView.getUint32(1), 10, "setUint32(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setUint32/negative-byteoffset-throws.js
similarity index 85%
rename from test/built-ins/DataView/prototype/setUint32/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setUint32/negative-byteoffset-throws.js
index dbc5705583e14a8329a509aee487d4c8fdea6297..19baa9bf0bc408338892a70099700400e394a1ec 100644
--- a/test/built-ins/DataView/prototype/setUint32/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setUint32/negative-byteoffset-throws.js
@@ -16,9 +16,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [DataView.prototype.getUint32]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setUint32/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setUint32/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..c048f39c9d94f13d75111fd7762cd0af43aaae63
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setUint32/toindex-byteoffset.js
@@ -0,0 +1,109 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setuint32
+es6id: 24.2.4.20
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
+
+  1. Let v be the this value.
+  2. If littleEndian is not present, let littleEndian be false.
+  3. Return ? SetViewValue(v, byteOffset, littleEndian, "Uint32", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [DataView.prototype.getUint32]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setUint32(0, 0);
+sample.setUint32(-0, 42);
+assert.sameValue(sample.getUint32(0), 42, "-0");
+
+sample.setUint32(3, 0);
+sample.setUint32(obj1, 42);
+assert.sameValue(sample.getUint32(3), 42, "object's valueOf");
+
+sample.setUint32(4, 0);
+sample.setUint32(obj2, 42);
+assert.sameValue(sample.getUint32(4), 42, "object's toString");
+
+sample.setUint32(0, 0);
+sample.setUint32("", 42);
+assert.sameValue(sample.getUint32(0), 42, "the Empty string");
+
+sample.setUint32(0, 0);
+sample.setUint32("0", 42);
+assert.sameValue(sample.getUint32(0), 42, "string '0'");
+
+sample.setUint32(2, 0);
+sample.setUint32("2", 42);
+assert.sameValue(sample.getUint32(2), 42, "string '2'");
+
+sample.setUint32(1, 0);
+sample.setUint32(true, 42);
+assert.sameValue(sample.getUint32(1), 42, "true");
+
+sample.setUint32(0, 0);
+sample.setUint32(false, 42);
+assert.sameValue(sample.getUint32(0), 42, "false");
+
+sample.setUint32(0, 0);
+sample.setUint32(NaN, 42);
+assert.sameValue(sample.getUint32(0), 42, "NaN");
+
+sample.setUint32(0, 0);
+sample.setUint32(null, 42);
+assert.sameValue(sample.getUint32(0), 42, "null");
+
+sample.setUint32(0, 0);
+sample.setUint32(0.1, 42);
+assert.sameValue(sample.getUint32(0), 42, "0.1");
+
+sample.setUint32(0, 0);
+sample.setUint32(0.9, 42);
+assert.sameValue(sample.getUint32(0), 42, "0.9");
+
+sample.setUint32(1, 0);
+sample.setUint32(1.1, 42);
+assert.sameValue(sample.getUint32(1), 42, "1.1");
+
+sample.setUint32(1, 0);
+sample.setUint32(1.9, 42);
+assert.sameValue(sample.getUint32(1), 42, "1.9");
+
+sample.setUint32(0, 0);
+sample.setUint32(-0.1, 42);
+assert.sameValue(sample.getUint32(0), 42, "-0.1");
+
+sample.setUint32(0, 0);
+sample.setUint32(-0.99999, 42);
+assert.sameValue(sample.getUint32(0), 42, "-0.99999");
+
+sample.setUint32(0, 0);
+sample.setUint32(undefined, 42);
+assert.sameValue(sample.getUint32(0), 42, "undefined");
+
+sample.setUint32(0, 7);
+sample.setUint32();
+assert.sameValue(sample.getUint32(0), 0, "no arg");
diff --git a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js b/test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js
deleted file mode 100644
index 77dfe818c34755a8dbda6227e068fdd4301cea8d..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-different-integer-throws.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-esid: sec-dataview.prototype.setuint8
-es6id: 24.2.4.18
-description: >
-  Throws a RangeError if numberIndex ≠ getIndex
-info: |
-  24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
-
-  1. Let v be the this value.
-  2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-
-  ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-  ...
-features: [Uint8Array]
----*/
-
-var buffer = new ArrayBuffer(12);
-var sample = new DataView(buffer, 0);
-var typedArray = new Uint8Array(buffer, 0);
-
-assert.throws(RangeError, function() {
-  sample.setUint8();
-}, "no args");
-assert.sameValue(typedArray[0], 0, "no args - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint8(undefined, 39);
-}, "undefined");
-assert.sameValue(typedArray[0], 0, "undefined - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint8(1.1, 39);
-}, "floating number");
-assert.sameValue(typedArray[0], 0, "floating number - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint8(0.1, 39);
-}, "0.1");
-assert.sameValue(typedArray[0], 0, "0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint8(NaN, 39);
-}, "NaN");
-assert.sameValue(typedArray[0], 0, "NaN - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint8(-0.1, 39);
-}, "-0.1");
-assert.sameValue(typedArray[0], 0, "-0.1 - no value was set");
-
-assert.throws(RangeError, function() {
-  sample.setUint8(-1.1, 39);
-}, "-1.1");
-assert.sameValue(typedArray[0], 0, "-1.1 - no value was set");
diff --git a/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js b/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js
index bdd4b3e3cc9344fcbaa3b6ac604d79ed4d5c2014..952947f45f0adf37b6408f4d9ca4bf7b998a0980 100644
--- a/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js
+++ b/test/built-ins/DataView/prototype/setUint8/detached-buffer-after-integer-byteoffset.js
@@ -16,10 +16,10 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
-  9. Let buffer be the value of view's [[ViewedArrayBuffer]] internal slot.
-  10. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+  7. Let buffer be view.[[ViewedArrayBuffer]].
+  8. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
   ...
 includes: [detachArrayBuffer.js]
 ---*/
@@ -28,9 +28,6 @@ var buffer = new ArrayBuffer(12);
 var sample = new DataView(buffer, 0);
 
 $DETACHBUFFER(buffer);
-assert.throws(RangeError, function() {
-  sample.setUint8(1.1, 0);
-});
 
 assert.throws(RangeError, function() {
   sample.setUint8(-1, 0);
diff --git a/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js
index e61b0c4780f3df9439cde5145fb7cbb0b5c35cdb..d1a93d452b230c057bf0109c0a88711ab72cd162 100755
--- a/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js
+++ b/test/built-ins/DataView/prototype/setUint8/index-check-before-value-conversion.js
@@ -11,12 +11,10 @@ info: >
   3. Return SetViewValue(v, byteOffset, littleEndian, "Uint8", value).
 
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ? ToInteger(numberIndex).
-    5. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
-    6. Let numberValue be ? ToNumber(value).
-    ...
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
 ---*/
 
 var dataView = new DataView(new ArrayBuffer(8), 0);
@@ -27,14 +25,6 @@ var poisoned = {
   }
 };
 
-assert.throws(RangeError, function() {
-  dataView.setUint8(NaN, poisoned);
-}, "setUint8(NaN, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8(1.5, poisoned);
-}, "setUint8(1.5, poisoned)");
-
 assert.throws(RangeError, function() {
   dataView.setUint8(-1.5, poisoned);
 }, "setUint8(-1.5, poisoned)");
@@ -46,40 +36,3 @@ assert.throws(RangeError, function() {
 assert.throws(RangeError, function() {
   dataView.setUint8(-Infinity, poisoned);
 }, "setUint8(-Infinity, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8(undefined, poisoned);
-}, "setUint8(undefined, poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8('invalid', poisoned);
-}, "setUint8('invalid', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8('NaN', poisoned);
-}, "setUint8('NaN', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8('1.5', poisoned);
-}, "setUint8('1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8('-1.5', poisoned);
-}, "setUint8('-1.5', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8('-1', poisoned);
-}, "setUint8('-1', poisoned)");
-
-assert.throws(RangeError, function() {
-  dataView.setUint8('-Infinity', poisoned);
-}, "setUint8('-Infinity', poisoned)");
-
-var obj = {
-  valueOf: function() {
-    return 1.41421;
-  }
-};
-assert.throws(RangeError, function() {
-  dataView.setUint8(obj, poisoned);
-}, "setUint8(obj, poisoned)");
diff --git a/test/built-ins/DataView/prototype/setUint8/index-to-integer.js b/test/built-ins/DataView/prototype/setUint8/index-to-integer.js
deleted file mode 100755
index 65e8a4cb69c7056e77896cb4adbbcb5aa594a8f2..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/prototype/setUint8/index-to-integer.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2015 André Bargull. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.4.18
-description: >
-  The requested index is converted with ToInteger.
-info: >
-  ...
-  3. Return SetViewValue(v, byteOffset, littleEndian, "Uint8", value).
-
-  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
-    ...
-    3. Let numberIndex be ToNumber(requestIndex).
-    4. Let getIndex be ToInteger(numberIndex).
-    5. ReturnIfAbrupt(getIndex).
-    ...
-features: [Uint8Array]
----*/
-
-var buffer = new ArrayBuffer(2);
-var dataView = new DataView(buffer, 0);
-var typedArray = new Uint8Array(buffer, 0);
-
-dataView.setUint8(+0, 1);
-assert.sameValue(typedArray[0], 1, "setUint8(+0, 1)");
-
-dataView.setUint8(-0, 2);
-assert.sameValue(typedArray[0], 2, "setUint8(-0, 2)");
-
-dataView.setUint8(1, 3);
-assert.sameValue(typedArray[1], 3, "setUint8(1, 3)");
-
-dataView.setUint8(null, 4);
-assert.sameValue(typedArray[0], 4, "setUint8(null, 4)");
-
-dataView.setUint8(false, 5);
-assert.sameValue(typedArray[0], 5, "setUint8(false, 5)");
-
-dataView.setUint8(true, 6);
-assert.sameValue(typedArray[1], 6, "setUint8(true, 6)");
-
-dataView.setUint8("", 7);
-assert.sameValue(typedArray[0], 7, "setUint8('', 7)");
-
-// Math.pow(2, 31) = 2147483648
-assert.throws(RangeError, function() {
-  dataView.setUint8(2147483648, 8);
-}, "setUint8(2147483648, 8)");
-
-// Math.pow(2, 32) = 4294967296
-assert.throws(RangeError, function() {
-  dataView.setUint8(4294967296, 9);
-}, "setUint8(4294967296, 9)");
-
-var obj = {
-  valueOf: function() {
-    return 1;
-  }
-};
-dataView.setUint8(obj, 10);
-assert.sameValue(typedArray[1], 10, "setUint8(obj, 10)");
diff --git a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-negative-throws.js b/test/built-ins/DataView/prototype/setUint8/negative-byteoffset-throws.js
similarity index 84%
rename from test/built-ins/DataView/prototype/setUint8/byteoffset-is-negative-throws.js
rename to test/built-ins/DataView/prototype/setUint8/negative-byteoffset-throws.js
index dc06ba300abd763105b2783b8ce7ee26d61b4e3c..23f837fbee8819b6177d28aa0454f85bd6eb45af 100644
--- a/test/built-ins/DataView/prototype/setUint8/byteoffset-is-negative-throws.js
+++ b/test/built-ins/DataView/prototype/setUint8/negative-byteoffset-throws.js
@@ -15,9 +15,7 @@ info: |
   24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
 
   ...
-  4. Let numberIndex be ? ToNumber(requestIndex).
-  5. Let getIndex be ToInteger(numberIndex).
-  6. If numberIndex ≠ getIndex or getIndex < 0, throw a RangeError exception.
+  4. Let getIndex be ? ToIndex(requestIndex).
   ...
 features: [Uint8Array]
 ---*/
diff --git a/test/built-ins/DataView/prototype/setUint8/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setUint8/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..426d43befe55f5662ebc8994653dc7b76cf17b1b
--- /dev/null
+++ b/test/built-ins/DataView/prototype/setUint8/toindex-byteoffset.js
@@ -0,0 +1,109 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview.prototype.setuint8
+es6id: 24.2.4.18
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
+
+  1. Let v be the this value.
+  2. Return ? SetViewValue(v, byteOffset, true, "Uint8", value).
+
+  24.2.1.2 SetViewValue ( view, requestIndex, isLittleEndian, type, value )
+
+  ...
+  4. Let getIndex be ? ToIndex(requestIndex).
+  ...
+features: [Uint8Array]
+---*/
+
+var buffer = new ArrayBuffer(12);
+var sample = new DataView(buffer, 0);
+var typedArray = new Uint8Array(buffer, 0);
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+sample.setUint8(0, 0);
+sample.setUint8(-0, 42);
+assert.sameValue(typedArray[0], 42, "-0");
+
+sample.setUint8(3, 0);
+sample.setUint8(obj1, 42);
+assert.sameValue(typedArray[3], 42, "object's valueOf");
+
+sample.setUint8(4, 0);
+sample.setUint8(obj2, 42);
+assert.sameValue(typedArray[4], 42, "object's toString");
+
+sample.setUint8(0, 0);
+sample.setUint8("", 42);
+assert.sameValue(typedArray[0], 42, "the Empty string");
+
+sample.setUint8(0, 0);
+sample.setUint8("0", 42);
+assert.sameValue(typedArray[0], 42, "string '0'");
+
+sample.setUint8(2, 0);
+sample.setUint8("2", 42);
+assert.sameValue(typedArray[2], 42, "string '2'");
+
+sample.setUint8(1, 0);
+sample.setUint8(true, 42);
+assert.sameValue(typedArray[1], 42, "true");
+
+sample.setUint8(0, 0);
+sample.setUint8(false, 42);
+assert.sameValue(typedArray[0], 42, "false");
+
+sample.setUint8(0, 0);
+sample.setUint8(NaN, 42);
+assert.sameValue(typedArray[0], 42, "NaN");
+
+sample.setUint8(0, 0);
+sample.setUint8(null, 42);
+assert.sameValue(typedArray[0], 42, "null");
+
+sample.setUint8(0, 0);
+sample.setUint8(0.1, 42);
+assert.sameValue(typedArray[0], 42, "0.1");
+
+sample.setUint8(0, 0);
+sample.setUint8(0.9, 42);
+assert.sameValue(typedArray[0], 42, "0.9");
+
+sample.setUint8(1, 0);
+sample.setUint8(1.1, 42);
+assert.sameValue(typedArray[1], 42, "1.1");
+
+sample.setUint8(1, 0);
+sample.setUint8(1.9, 42);
+assert.sameValue(typedArray[1], 42, "1.9");
+
+sample.setUint8(0, 0);
+sample.setUint8(-0.1, 42);
+assert.sameValue(typedArray[0], 42, "-0.1");
+
+sample.setUint8(0, 0);
+sample.setUint8(-0.99999, 42);
+assert.sameValue(typedArray[0], 42, "-0.99999");
+
+sample.setUint8(0, 0);
+sample.setUint8(undefined, 42);
+assert.sameValue(typedArray[0], 42, "undefined");
+
+sample.setUint8(0, 7);
+sample.setUint8();
+assert.sameValue(typedArray[0], 0, "no arg");
diff --git a/test/built-ins/DataView/toindex-bytelength.js b/test/built-ins/DataView/toindex-bytelength.js
new file mode 100644
index 0000000000000000000000000000000000000000..7482a6df9b822b6f87611c7dd05c34e2d2bc5f7f
--- /dev/null
+++ b/test/built-ins/DataView/toindex-bytelength.js
@@ -0,0 +1,93 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview-buffer-byteoffset-bytelength
+description: >
+  ToIndex conversions on byteLength
+info: |
+  24.2.2.1 DataView ( buffer, byteOffset, byteLength )
+
+  ...
+  8. If byteLength is either not present or undefined, then
+    a. Let viewByteLength be bufferByteLength - offset.
+  9. Else,
+    a. Let viewByteLength be ? ToIndex(byteLength).
+    b. If offset + viewByteLength > bufferByteLength, throw a RangeError
+    exception.
+  ...
+
+  ToIndex( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+    c. Let index be ! ToLength(integerIndex).
+    d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception.
+  3. Return index.
+---*/
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+var sample;
+var ab = new ArrayBuffer(42);
+
+sample = new DataView(ab, 0, -0);
+assert.sameValue(sample.byteLength, 0, "-0");
+
+sample = new DataView(ab, 0, obj1);
+assert.sameValue(sample.byteLength, 3, "object's valueOf");
+
+sample = new DataView(ab, 0, obj2);
+assert.sameValue(sample.byteLength, 4, "object's toString");
+
+sample = new DataView(ab, 0, "");
+assert.sameValue(sample.byteLength, 0, "the Empty string");
+
+sample = new DataView(ab, 0, "0");
+assert.sameValue(sample.byteLength, 0, "string '0'");
+
+sample = new DataView(ab, 0, "1");
+assert.sameValue(sample.byteLength, 1, "string '1'");
+
+sample = new DataView(ab, 0, true);
+assert.sameValue(sample.byteLength, 1, "true");
+
+sample = new DataView(ab, 0, false);
+assert.sameValue(sample.byteLength, 0, "false");
+
+sample = new DataView(ab, 0, NaN);
+assert.sameValue(sample.byteLength, 0, "NaN");
+
+sample = new DataView(ab, 0, null);
+assert.sameValue(sample.byteLength, 0, "null");
+
+sample = new DataView(ab, 0, 0.1);
+assert.sameValue(sample.byteLength, 0, "0.1");
+
+sample = new DataView(ab, 0, 0.9);
+assert.sameValue(sample.byteLength, 0, "0.9");
+
+sample = new DataView(ab, 0, 1.1);
+assert.sameValue(sample.byteLength, 1, "1.1");
+
+sample = new DataView(ab, 0, 1.9);
+assert.sameValue(sample.byteLength, 1, "1.9");
+
+sample = new DataView(ab, 0, -0.1);
+assert.sameValue(sample.byteLength, 0, "-0.1");
+
+sample = new DataView(ab, 0, -0.99999);
+assert.sameValue(sample.byteLength, 0, "-0.99999");
diff --git a/test/built-ins/DataView/toindex-byteoffset.js b/test/built-ins/DataView/toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..2bd97d467eb3138171b3e7fde4d069f4080fbc00
--- /dev/null
+++ b/test/built-ins/DataView/toindex-byteoffset.js
@@ -0,0 +1,91 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-dataview-buffer-byteoffset-bytelength
+description: >
+  ToIndex conversions on byteOffset
+info: |
+  24.2.2.1 DataView ( buffer, byteOffset, byteLength )
+
+  ...
+  4. Let offset be ? ToIndex(byteOffset).
+  ...
+
+  ToIndex( value )
+
+  1. If value is undefined, then
+    a. Let index be 0.
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+    c. Let index be ! ToLength(integerIndex).
+    d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception.
+  3. Return index.
+---*/
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+var sample;
+var ab = new ArrayBuffer(42);
+
+sample = new DataView(ab, -0);
+assert.sameValue(sample.byteOffset, 0, "-0");
+
+sample = new DataView(ab, obj1);
+assert.sameValue(sample.byteOffset, 3, "object's valueOf");
+
+sample = new DataView(ab, obj2);
+assert.sameValue(sample.byteOffset, 4, "object's toString");
+
+sample = new DataView(ab, "");
+assert.sameValue(sample.byteOffset, 0, "the Empty string");
+
+sample = new DataView(ab, "0");
+assert.sameValue(sample.byteOffset, 0, "string '0'");
+
+sample = new DataView(ab, "1");
+assert.sameValue(sample.byteOffset, 1, "string '1'");
+
+sample = new DataView(ab, true);
+assert.sameValue(sample.byteOffset, 1, "true");
+
+sample = new DataView(ab, false);
+assert.sameValue(sample.byteOffset, 0, "false");
+
+sample = new DataView(ab, NaN);
+assert.sameValue(sample.byteOffset, 0, "NaN");
+
+sample = new DataView(ab, null);
+assert.sameValue(sample.byteOffset, 0, "null");
+
+sample = new DataView(ab, undefined);
+assert.sameValue(sample.byteOffset, 0, "undefined");
+
+sample = new DataView(ab, 0.1);
+assert.sameValue(sample.byteOffset, 0, "0.1");
+
+sample = new DataView(ab, 0.9);
+assert.sameValue(sample.byteOffset, 0, "0.9");
+
+sample = new DataView(ab, 1.1);
+assert.sameValue(sample.byteOffset, 1, "1.1");
+
+sample = new DataView(ab, 1.9);
+assert.sameValue(sample.byteOffset, 1, "1.9");
+
+sample = new DataView(ab, -0.1);
+assert.sameValue(sample.byteOffset, 0, "-0.1");
+
+sample = new DataView(ab, -0.99999);
+assert.sameValue(sample.byteOffset, 0, "-0.99999");
diff --git a/test/built-ins/DataView/tolength-bytelength.js b/test/built-ins/DataView/tolength-bytelength.js
deleted file mode 100644
index 34d58c3f7d5b492b2e57d9cb9550c00d7cf3da7b..0000000000000000000000000000000000000000
--- a/test/built-ins/DataView/tolength-bytelength.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es6id: 24.2.2.1
-esid: sec-dataview-buffer-byteoffset-bytelength
-description: >
-  ToLength(byteLength) conversions
-info: |
-  24.2.2.1 DataView (buffer, byteOffset, byteLength )
-
-  ...
-  17. Return O.
----*/
-
-var sample;
-var buffer = new ArrayBuffer(2);
-
-sample = new DataView(buffer, 0, true);
-assert.sameValue(sample.byteLength, 1, "true");
-
-sample = new DataView(buffer, 0, false);
-assert.sameValue(sample.byteLength, 0, "false");
-
-sample = new DataView(buffer, 0, "1");
-assert.sameValue(sample.byteLength, 1, "string 1");
-
-sample = new DataView(buffer, 0, "");
-assert.sameValue(sample.byteLength, 0, "the empty string");
-
-sample = new DataView(buffer, 0, [1]);
-assert.sameValue(sample.byteLength, 1, "[1]");
-
-sample = new DataView(buffer, 0, []);
-assert.sameValue(sample.byteLength, 0, "[]");
-
-sample = new DataView(buffer, 0, NaN);
-assert.sameValue(sample.byteLength, 0, "NaN");
-
-sample = new DataView(buffer, 0, null);
-assert.sameValue(sample.byteLength, 0, "null");
diff --git a/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js b/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js
index 9e70c220f3dd6b26be2ccb2b0d4ee75c62bc6cc9..26b2630bf643543c253d488a54b2192cc4c821e3 100644
--- a/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js
+++ b/test/built-ins/TypedArrays/buffer-arg-defined-negative-length.js
@@ -3,7 +3,7 @@
 /*---
 esid: sec-typedarray-buffer-byteoffset-length
 description: >
-  Return new typedArray from negative defined length
+  Throws RangeError for negative ToInteger(length)
 info: >
   22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] )
 
@@ -14,31 +14,14 @@ info: >
 includes: [testTypedArray.js]
 ---*/
 
-testWithTypedArrayConstructors(function(TA) {
-  var bpe = TA.BYTES_PER_ELEMENT;
-  var buffer = new ArrayBuffer(bpe * 2);
-
-  var ta1 = new TA(buffer, 0, -1);
-  assert.sameValue(ta1.length, 0);
-  assert.sameValue(ta1.buffer, buffer);
-  assert.sameValue(ta1.constructor, TA);
-  assert.sameValue(Object.getPrototypeOf(ta1), TA.prototype);
+var buffer = new ArrayBuffer(16);
 
-  var ta2 = new TA(buffer, 0, -Infinity);
-  assert.sameValue(ta2.length, 0);
-  assert.sameValue(ta2.buffer, buffer);
-  assert.sameValue(ta2.constructor, TA);
-  assert.sameValue(Object.getPrototypeOf(ta2), TA.prototype);
-
-  var ta3 = new TA(buffer, bpe, -1);
-  assert.sameValue(ta3.length, 0);
-  assert.sameValue(ta3.buffer, buffer);
-  assert.sameValue(ta3.constructor, TA);
-  assert.sameValue(Object.getPrototypeOf(ta3), TA.prototype);
+testWithTypedArrayConstructors(function(TA) {
+  assert.throws(RangeError, function() {
+    new TA(buffer, 0, -1);
+  });
 
-  var ta4 = new TA(buffer, bpe, -Infinity);
-  assert.sameValue(ta4.length, 0);
-  assert.sameValue(ta4.buffer, buffer);
-  assert.sameValue(ta4.constructor, TA);
-  assert.sameValue(Object.getPrototypeOf(ta4), TA.prototype);
+  assert.throws(RangeError, function() {
+    new TA(buffer, 0, -Infinity);
+  });
 });
diff --git a/test/built-ins/TypedArrays/buffer-arg-toindex-bytelength.js b/test/built-ins/TypedArrays/buffer-arg-toindex-bytelength.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ea85b0ab8365c71fefd75b5b673f954df08b506
--- /dev/null
+++ b/test/built-ins/TypedArrays/buffer-arg-toindex-bytelength.js
@@ -0,0 +1,71 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-buffer-byteoffset-length
+description: >
+  ToIndex(length) operations
+info: |
+  22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] )
+
+  This description applies only if the TypedArray function is called with at
+  least one argument and the Type of the first argument is Object and that
+  object has an [[ArrayBufferData]] internal slot.
+
+  ...
+  11. If length is either not present or undefined, then
+    ...
+  12. Else,
+    a. Let newLength be ? ToIndex(length).
+  ...
+includes: [testTypedArray.js]
+---*/
+
+var buffer = new ArrayBuffer(16);
+
+var obj1 = {
+  valueOf: function() {
+    return 1;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 1;
+  }
+};
+
+var items = [
+  [-0, 0, "-0"],
+  [obj1, 1, "object's valueOf"],
+  [obj2, 1, "object's toString"],
+  ["", 0, "the Empty string"],
+  ["0", 0, "string '0'"],
+  ["1", 1, "string '1'"],
+  [false, 0, "false"],
+  [true, 1, "true"],
+  [NaN, 0, "NaN"],
+  [null, 0, "null"],
+  [0.1, 0, "0.1"],
+  [0.9, 0, "0.9"],
+  [1.1, 1, "1.1"],
+  [1.9, 1, "1.9"],
+  [-0.1, 0, "-0.1"],
+  [-0.99999, 0, "-0.99999"]
+];
+
+testWithTypedArrayConstructors(function(TA) {
+  items.forEach(function(item) {
+    var len = item[0];
+    var expected = item[1];
+    var name = item[2];
+
+    var typedArray = new TA(buffer, 0, len);
+    assert.sameValue(typedArray.length, expected, name + " length");
+    assert.sameValue(typedArray.constructor, TA, name + " constructor");
+    assert.sameValue(
+      Object.getPrototypeOf(typedArray),
+      TA.prototype,
+      name + " prototype"
+    );
+  });
+});
diff --git a/test/built-ins/TypedArrays/buffer-arg-toindex-byteoffset.js b/test/built-ins/TypedArrays/buffer-arg-toindex-byteoffset.js
new file mode 100644
index 0000000000000000000000000000000000000000..ea9c39ca125d4be5faaba64676abfefe053f31dd
--- /dev/null
+++ b/test/built-ins/TypedArrays/buffer-arg-toindex-byteoffset.js
@@ -0,0 +1,85 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-buffer-byteoffset-length
+description: >
+  ToIndex(byteOffset) operations
+info: |
+  22.2.4.5 TypedArray ( buffer [ , byteOffset [ , length ] ] )
+
+  This description applies only if the TypedArray function is called with at
+  least one argument and the Type of the first argument is Object and that
+  object has an [[ArrayBufferData]] internal slot.
+
+  ...
+  7. Let offset be ? ToIndex(byteOffset).
+  8. If offset modulo elementSize ≠ 0, throw a RangeError exception.
+  ...
+includes: [testTypedArray.js]
+---*/
+
+var buffer = new ArrayBuffer(16);
+
+var obj1 = {
+  valueOf: function() {
+    return 8;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 8;
+  }
+};
+
+var items = [
+  [-0, 0, "-0"],
+  [obj1, 8, "object's valueOf"],
+  [obj2, 8, "object's toString"],
+  ["", 0, "the Empty string"],
+  ["0", 0, "string '0'"],
+  ["8", 8, "string '8'"],
+  [false, 0, "false"],
+  [NaN, 0, "NaN"],
+  [null, 0, "null"],
+  [undefined, 0, "undefined"],
+  [0.1, 0, "0.1"],
+  [0.9, 0, "0.9"],
+  [8.1, 8, "8.1"],
+  [8.9, 8, "8.9"],
+  [-0.1, 0, "-0.1"],
+  [-0.99999, 0, "-0.99999"]
+];
+
+testWithTypedArrayConstructors(function(TA) {
+  items.forEach(function(item) {
+    var offset = item[0];
+    var expected = item[1];
+    var name = item[2];
+
+    var typedArray = new TA(buffer, offset);
+    assert.sameValue(typedArray.byteOffset, expected, name + " byteOffset");
+    assert.sameValue(typedArray.constructor, TA, name + " constructor");
+    assert.sameValue(
+      Object.getPrototypeOf(typedArray),
+      TA.prototype,
+      name + " prototype"
+    );
+  });
+
+  // Testing `true`. See step 8
+  if (TA.BYTES_PER_ELEMENT === 1) {
+    var typedArray = new TA(buffer, true);
+    assert.sameValue(typedArray.byteOffset, 1, "true => 1 byteOffset");
+    assert.sameValue(typedArray.constructor, TA, "true => 1 constructor");
+    assert.sameValue(
+      Object.getPrototypeOf(typedArray),
+      TA.prototype,
+      "true => 1 prototype"
+    );
+  } else {
+    assert.throws(RangeError, function() {
+      new TA(buffer, true);
+    }, "1 modulo elementSize ≠ 0, throws a RangeError");
+  }
+});
diff --git a/test/built-ins/TypedArrays/length-arg-is-float-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-float-throws-rangeerror.js
deleted file mode 100644
index 22eb44956f2d11e3d10ed536698341bc964fc349..0000000000000000000000000000000000000000
--- a/test/built-ins/TypedArrays/length-arg-is-float-throws-rangeerror.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-typedarray-length
-description: >
-  Throws a RangeError if length is a float number
-info: >
-  22.2.4.2 TypedArray ( length )
-
-  This description applies only if the TypedArray function is called with at
-  least one argument and the Type of the first argument is not Object.
-
-  ...
-  4. Let numberLength be ? ToNumber(length).
-  5. Let elementLength be ToLength(numberLength).
-  6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError
-  exception.
-  ...
-includes: [testTypedArray.js]
----*/
-
-testWithTypedArrayConstructors(function(TA) {
-  assert.throws(RangeError, function() {
-    new TA(1.1);
-  });
-});
diff --git a/test/built-ins/TypedArrays/length-arg-is-nan-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-nan-throws-rangeerror.js
deleted file mode 100644
index 67e6e9cc8374211a4daf31c94449eb9366c60719..0000000000000000000000000000000000000000
--- a/test/built-ins/TypedArrays/length-arg-is-nan-throws-rangeerror.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-typedarray-length
-description: >
-  Throws a RangeError if length is NaN
-info: >
-  22.2.4.2 TypedArray ( length )
-
-  This description applies only if the TypedArray function is called with at
-  least one argument and the Type of the first argument is not Object.
-
-  ...
-  4. Let numberLength be ? ToNumber(length).
-  5. Let elementLength be ToLength(numberLength).
-  6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError
-  exception.
-  ...
-includes: [testTypedArray.js]
----*/
-
-testWithTypedArrayConstructors(function(TA) {
-  assert.throws(RangeError, function() {
-    new TA(NaN);
-  });
-});
diff --git a/test/built-ins/TypedArrays/length-arg-is-negative-number-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-negative-integer-throws-rangeerror.js
similarity index 59%
rename from test/built-ins/TypedArrays/length-arg-is-negative-number-throws-rangeerror.js
rename to test/built-ins/TypedArrays/length-arg-is-negative-integer-throws-rangeerror.js
index 13929cf65daabd436c3a12efdfca86be83b72db5..2c33cbf24b33eff0b90c291fd0884bc1e235ca19 100644
--- a/test/built-ins/TypedArrays/length-arg-is-negative-number-throws-rangeerror.js
+++ b/test/built-ins/TypedArrays/length-arg-is-negative-integer-throws-rangeerror.js
@@ -3,7 +3,7 @@
 /*---
 esid: sec-typedarray-length
 description: >
-  Throws a RangeError if length is a negative value
+  Throws a RangeError if ToInteger(length) is a negative value
 info: >
   22.2.4.2 TypedArray ( length )
 
@@ -11,11 +11,17 @@ info: >
   least one argument and the Type of the first argument is not Object.
 
   ...
-  4. Let numberLength be ? ToNumber(length).
-  5. Let elementLength be ToLength(numberLength).
-  6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError
-  exception.
+  3. Let elementLength be ? ToIndex(length).
   ...
+
+  7.1.17 ToIndex ( value )
+
+  1. If value is undefined, then
+    ...
+  2. Else,
+    a. Let integerIndex be ? ToInteger(value).
+    b. If integerIndex < 0, throw a RangeError exception.
+    ...
 includes: [testTypedArray.js]
 ---*/
 
@@ -23,4 +29,8 @@ testWithTypedArrayConstructors(function(TA) {
   assert.throws(RangeError, function() {
     new TA(-1);
   });
+
+  assert.throws(RangeError, function() {
+    new TA(-Infinity);
+  });
 });
diff --git a/test/built-ins/TypedArrays/length-arg-is-not-valid-buffer-size-throws-rangeerror.js b/test/built-ins/TypedArrays/length-arg-is-not-valid-buffer-size-throws-rangeerror.js
deleted file mode 100644
index a9fe4cca581d2456f1fa667c7c2c66ac2f0a090e..0000000000000000000000000000000000000000
--- a/test/built-ins/TypedArrays/length-arg-is-not-valid-buffer-size-throws-rangeerror.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-typedarray-length
-description: >
-  Throws a RangeError when length argument is not a valid buffer size
-info: >
-  22.2.4.2 TypedArray ( length )
-
-  This description applies only if the TypedArray function is called with at
-  least one argument and the Type of the first argument is not Object.
-
-  ...
-  8. Return ? AllocateTypedArray(constructorName, NewTarget,
-  %TypedArrayPrototype%, elementLength).
-
-  22.2.4.2.1 Runtime Semantics: AllocateTypedArray (constructorName, newTarget,
-  defaultProto [ , length ])
-
-  6. Else,
-    a. Perform ? AllocateTypedArrayBuffer(obj, length).
-  ...
-
-  22.2.4.2.2 Runtime Semantics: AllocateTypedArrayBuffer ( O, length )
-
-  ...
-  7. Let data be ? AllocateArrayBuffer(%ArrayBuffer%, byteLength).
-  ...
-
-
-  24.1.1.1 AllocateArrayBuffer ( constructor, byteLength )
-
-  ...
-  3. Let block be ? CreateByteDataBlock(byteLength).
-  ...
-
-  6.2.6.1 CreateByteDataBlock (size)
-
-  ...
-  2. Let db be a new Data Block value consisting of size bytes. If it is
-  impossible to create such a Data Block, throw a RangeError exception.
-  ...
-
-includes: [testTypedArray.js]
----*/
-
-var length = Math.pow(2, 53);
-
-testWithTypedArrayConstructors(function(TA) {
-  assert.throws(RangeError, function() {
-    new TA(length);
-  });
-});
diff --git a/test/built-ins/TypedArrays/length-arg-is-undefined-throws.js b/test/built-ins/TypedArrays/length-arg-is-undefined-throws.js
deleted file mode 100644
index 7ec83c73b2f0a156f8fe787599ba466200628a82..0000000000000000000000000000000000000000
--- a/test/built-ins/TypedArrays/length-arg-is-undefined-throws.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-typedarray-length
-description: >
-  If length is undefined, throw a TypeError exception.
-info: >
-  22.2.4.2 TypedArray ( length )
-
-  This description applies only if the TypedArray function is called with at
-  least one argument and the Type of the first argument is not Object.
-
-  ...
-  3. If length is undefined, throw a TypeError exception.
-  ...
-includes: [testTypedArray.js]
----*/
-
-testWithTypedArrayConstructors(function(TA) {
-  assert.throws(TypeError, function() {
-    new TA(undefined);
-  });
-});
diff --git a/test/built-ins/TypedArrays/length-arg-minus-signal-zero.js b/test/built-ins/TypedArrays/length-arg-minus-signal-zero.js
deleted file mode 100644
index 63b5bed7d6f097749b5638c23174857f5ac43064..0000000000000000000000000000000000000000
--- a/test/built-ins/TypedArrays/length-arg-minus-signal-zero.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (C) 2016 the V8 project authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-typedarray-length
-description: >
-  Does not throw when length is -0
-info: >
-  22.2.4.2 TypedArray ( length )
-
-  This description applies only if the TypedArray function is called with at
-  least one argument and the Type of the first argument is not Object.
-
-  ...
-  4. Let numberLength be ? ToNumber(length).
-  5. Let elementLength be ToLength(numberLength).
-  6. If SameValueZero(numberLength, elementLength) is false, throw a RangeError
-  exception.
-  ...
-includes: [testTypedArray.js]
----*/
-
-testWithTypedArrayConstructors(function(TA) {
-  var typedArray = new TA(-0);
-
-  assert.sameValue(typedArray.length, 0, "length");
-  assert.sameValue(typedArray.constructor, TA);
-  assert.sameValue(Object.getPrototypeOf(typedArray), TA.prototype);
-});
diff --git a/test/built-ins/TypedArrays/length-arg-toindex-length.js b/test/built-ins/TypedArrays/length-arg-toindex-length.js
new file mode 100644
index 0000000000000000000000000000000000000000..21547df1efb72b32b2a233a74ad1cd45de42cee0
--- /dev/null
+++ b/test/built-ins/TypedArrays/length-arg-toindex-length.js
@@ -0,0 +1,66 @@
+// Copyright (C) 2016 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-typedarray-length
+description: >
+  ToIndex(length) operations
+info: >
+  22.2.4.2 TypedArray ( length )
+
+  This description applies only if the TypedArray function is called with at
+  least one argument and the Type of the first argument is not Object.
+
+  ...
+  3. Let elementLength be ? ToIndex(length).
+  ...
+includes: [testTypedArray.js]
+---*/
+
+var obj1 = {
+  valueOf: function() {
+    return 3;
+  }
+};
+
+var obj2 = {
+  toString: function() {
+    return 4;
+  }
+};
+
+var items = [
+  [-0, 0, "-0"],
+  ["", 0, "the Empty string"],
+  ["0", 0, "string '0'"],
+  ["1", 1, "string '1'"],
+  [true, 1, "true"],
+  [false, 0, "false"],
+  [NaN, 0, "NaN"],
+  [null, 0, "null"],
+  [undefined, 0, "undefined"],
+  [0.1, 0, "0.1"],
+  [0.9, 0, "0.9"],
+  [1.1, 1, "1.1"],
+  [1.9, 1, "1.9"],
+  [-0.1, 0, "-0.1"],
+  [-0.99999, 0, "-0.99999"],
+  [obj1, 3, "object's valueOf"],
+  [obj2, 4, "object's toString"]
+];
+
+testWithTypedArrayConstructors(function(TA) {
+  items.forEach(function(item) {
+    var len = item[0];
+    var expected = item[1];
+    var name = item[2];
+
+    var typedArray = new TA(len);
+    assert.sameValue(typedArray.length, expected, name + " length");
+    assert.sameValue(typedArray.constructor, TA, name + " constructor");
+    assert.sameValue(
+      Object.getPrototypeOf(typedArray),
+      TA.prototype,
+      name + " prototype"
+    );
+  });
+});
diff --git a/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js b/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js
index 6308500747d689b0115e69314bae87d216723d8f..c58318dc0497160056baa9fa493d4987dba18d82 100644
--- a/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js
+++ b/test/built-ins/TypedArrays/length-arg-undefined-newtarget-throws.js
@@ -14,37 +14,14 @@ info: >
   2. If NewTarget is undefined, throw a TypeError exception.
   ...
 includes: [testTypedArray.js]
-features: [Symbol]
 ---*/
 
-var s = Symbol('1');
-
 testWithTypedArrayConstructors(function(TA) {
   assert.throws(TypeError, function() {
     TA(0);
   });
 
   assert.throws(TypeError, function() {
-    TA(NaN);
-  });
-
-  assert.throws(TypeError, function() {
-    TA("");
-  });
-
-  assert.throws(TypeError, function() {
-    TA(true);
-  });
-
-  assert.throws(TypeError, function() {
-    TA(null);
-  });
-
-  assert.throws(TypeError, function() {
-    TA(undefined);
-  });
-
-  assert.throws(TypeError, function() {
-    TA(s);
+    TA(Infinity);
   });
 });