diff --git a/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-end.js b/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-end.js
index b50e116031e49902f98a580aa11f838a3f42be0c..d81a0195809bcef3dc9c83e7c44c0e54c6286ca0 100644
--- a/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-end.js
+++ b/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-end.js
@@ -41,7 +41,7 @@ testWithTypedArrayConstructors(function(TA) {
     compareArray(
       new TA([1, 2, 3, 4, 5]).copyWithin(0, 1, -Infinity),
       [1, 2, 3, 4, 5]
-    )
+    ),
     '[1, 2, 3, 4, 5].copyWithin(0, 1, -Infinity) -> [1, 2, 3, 4, 5]'
   );
 
@@ -57,7 +57,7 @@ testWithTypedArrayConstructors(function(TA) {
     compareArray(
       new TA([1, 2, 3, 4, 5]).copyWithin(0, -2, -Infinity),
       [1, 2, 3, 4, 5]
-    )
+    ),
     '[1, 2, 3, 4, 5].copyWithin(0, -2, -Infinity) -> [1, 2, 3, 4, 5]'
   );
 
@@ -73,7 +73,7 @@ testWithTypedArrayConstructors(function(TA) {
     compareArray(
       new TA([1, 2, 3, 4, 5]).copyWithin(0, -9, -Infinity),
       [1, 2, 3, 4, 5]
-    )
+    ),
     '[1, 2, 3, 4, 5].copyWithin(0, -9, -Infinity) -> [1, 2, 3, 4, 5]'
   );
 
@@ -89,7 +89,7 @@ testWithTypedArrayConstructors(function(TA) {
     compareArray(
       new TA([1, 2, 3, 4, 5]).copyWithin(-3, -2, -Infinity),
       [1, 2, 3, 4, 5]
-    )
+    ),
     '[1, 2, 3, 4, 5].copyWithin(-3, -2, -Infinity) -> [1, 2, 3, 4, 5]'
   );
 
@@ -105,7 +105,7 @@ testWithTypedArrayConstructors(function(TA) {
     compareArray(
       new TA([1, 2, 3, 4, 5]).copyWithin(-7, -8, -Infinity),
       [1, 2, 3, 4, 5]
-    )
+    ),
     '[1, 2, 3, 4, 5].copyWithin(-7, -8, -Infinity) -> [1, 2, 3, 4, 5]'
   );
 });
diff --git a/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-start.js b/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-start.js
index af9341165f5da7d77252fe13395478fdca874edb..98b448e329727c394e07177d8deee3b1312f9426 100644
--- a/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-start.js
+++ b/test/built-ins/TypedArray/prototype/copyWithin/negative-out-of-bounds-start.js
@@ -38,7 +38,7 @@ testWithTypedArrayConstructors(function(TA) {
   assert(
     compareArray(
       new TA([1, 2, 3, 4, 5]).copyWithin(0, -Infinity),
-      [0, 1, 2, 3]
+      [1, 2, 3, 4, 5]
     ),
     '[1, 2, 3, 4, 5]).copyWithin(0, -Infinity) -> [1, 2, 3, 4, 5]'
   );
diff --git a/test/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-sab.js b/test/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-sab.js
index 28c8a38ceb00c9fc2322c719f9ce29a192e8c555..024a1c027f29e17aedcfd164bfd41d02034386c5 100644
--- a/test/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-sab.js
+++ b/test/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-diff-buffer-other-type-sab.js
@@ -69,7 +69,7 @@ testWithTypedArrayConstructors(function(TA) {
   assert(compareArray(sample, [1, 2, 42, 43]), "sample is SAB-backed, offset: 2, result: " + sample);
   assert.sameValue(result, undefined, "returns undefined");
 
-  var sab1 = new SharedArrayBuffer(2 * TA.BYTES_PER_ELEMENT);
+  var sab1 = new SharedArrayBuffer(2 * other.BYTES_PER_ELEMENT);
   src = new other(sab1);
   src[0] = 42;
   src[1] = 43;
diff --git a/test/intl402/DateTimeFormat/12.1.1_1.js b/test/intl402/DateTimeFormat/12.1.1_1.js
index 5a042454a213352f713f4cbdbd315fb7e6afb69c..7d1d00413dc27bc1a745bf50d6a3be7b33bb41d4 100644
--- a/test/intl402/DateTimeFormat/12.1.1_1.js
+++ b/test/intl402/DateTimeFormat/12.1.1_1.js
@@ -3,12 +3,17 @@
 
 /*---
 es5id: 12.1.1_1
-description: Tests that the this-value is ignored in DateTimeFormat.
+description: >
+    Tests that the this-value is ignored in DateTimeFormat, if the this-value
+    isn't a DateTimeFormat instance.
 author: Norbert Lindenberg
 includes: [testIntl.js]
 ---*/
 
 testWithIntlConstructors(function (Constructor) {
+    if (Constructor === Intl.DateTimeFormat)
+        return true;
+
     var obj, newObj;
 
     // variant 1: use constructor in a "new" expression
diff --git a/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js b/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js
index ecc3ae9f3f08b63c6ed01d8442822b5fb3fd5fb6..fbb850a9c8804fb90ad83f8d472ea5e606c0f88d 100644
--- a/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js
+++ b/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js
@@ -12,4 +12,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(new Intl.DateTimeFormat().format, true, false, [], 0);
+testBuiltInObject(new Intl.DateTimeFormat().format, true, false, [], 1);
diff --git a/test/intl402/NumberFormat/11.1.1_1.js b/test/intl402/NumberFormat/11.1.1_1.js
index 6e36af019b8662d6486c2340d6d1dd49b7d60a4b..035e74a10cf0b8dd3a9d6fd3b2d8f7f882ff7954 100644
--- a/test/intl402/NumberFormat/11.1.1_1.js
+++ b/test/intl402/NumberFormat/11.1.1_1.js
@@ -3,12 +3,17 @@
 
 /*---
 es5id: 11.1.1_1
-description: Tests that the this-value is ignored in NumberFormat.
+description: >
+    Tests that the this-value is ignored in NumberFormat, if the this-value
+    isn't a NumberFormat instance.
 author: Norbert Lindenberg
 includes: [testIntl.js]
 ---*/
 
 testWithIntlConstructors(function (Constructor) {
+    if (Constructor === Intl.NumberFormat)
+        return true;
+
     var obj, newObj;
 
     // variant 1: use constructor in a "new" expression
diff --git a/test/language/expressions/object/method-definition/async-super-call-body.js b/test/language/expressions/object/method-definition/async-super-call-body.js
index 40459314f634c57995d16049198818173dbd4f7b..f01679307017cc2c24a015ab60b5eaf409ed3ce3 100644
--- a/test/language/expressions/object/method-definition/async-super-call-body.js
+++ b/test/language/expressions/object/method-definition/async-super-call-body.js
@@ -16,11 +16,12 @@ var sup = {
 }
 
 var child = {
-  __proto__: sup,
   async method() {
     var x = await super.method();
     assert.sameValue(x, 'sup');
   }
 }
 
+Object.setPrototypeOf(child, sup);
+
 child.method().then($DONE, $DONE);
diff --git a/test/language/expressions/object/method-definition/async-super-call-param.js b/test/language/expressions/object/method-definition/async-super-call-param.js
index 5eb55b18cf4fbf0c3b38cf1e550bcfe222d9cfc0..ed290d76c2d8bedb8f11f18b71e71042d7d55e43 100644
--- a/test/language/expressions/object/method-definition/async-super-call-param.js
+++ b/test/language/expressions/object/method-definition/async-super-call-param.js
@@ -16,12 +16,13 @@ var sup = {
 }
 
 var child = {
-  __proto__: sup,
   async method(x = super.method()) {
     var y = await x;
     assert.sameValue(y, 'sup');
   }
 }
 
+Object.setPrototypeOf(child, sup);
+
 child.method().then($DONE, $DONE);
 
diff --git a/test/language/statements/class/subclass/builtin-objects/Promise/regular-subclassing.js b/test/language/statements/class/subclass/builtin-objects/Promise/regular-subclassing.js
index d4a87192bba537c9d907b706b9602da2e347a4ab..25ad4f7612b3f4d61a12c5036f8ec40fe8fd362c 100644
--- a/test/language/statements/class/subclass/builtin-objects/Promise/regular-subclassing.js
+++ b/test/language/statements/class/subclass/builtin-objects/Promise/regular-subclassing.js
@@ -23,12 +23,14 @@ assert.throws(TypeError, function() {
 });
 
 var calledExecutor = false;
+var executorArguments;
 
-var prom1 = new Prom(function(resolve) {
+var prom1 = new Prom(function() {
   calledExecutor = true;
-  assert.sameValue(arguments.length, 2);
-  assert(arguments[0] === Promise.resolve);
-  assert(arguments[1] === Promise.reject);
+  executorArguments = arguments;
 });
 
 assert(calledExecutor);
+assert.sameValue(executorArguments.length, 2);
+assert.sameValue(typeof executorArguments[0], "function");
+assert.sameValue(typeof executorArguments[1], "function");
diff --git a/test/language/statements/class/subclass/class-definition-null-proto-contains-return-override.js b/test/language/statements/class/subclass/class-definition-null-proto-contains-return-override.js
index bfc962a4017619861c3941829a925b53751b603e..9a5b1ec6df9fb76a752db5edc82f1f4c33e4d2a8 100644
--- a/test/language/statements/class/subclass/class-definition-null-proto-contains-return-override.js
+++ b/test/language/statements/class/subclass/class-definition-null-proto-contains-return-override.js
@@ -4,18 +4,30 @@
 esid: sec-runtime-semantics-classdefinitionevaluation
 es6id: 14.5.14
 description: >
-    Runtime Semantics: ClassDefinitionEvaluation
+    The constructor of a null-extending class can contain an explicit return value.
+info: |
+  Runtime Semantics: ClassDefinitionEvaluation
 
-    If superclass is null, then
-      Let protoParent be null.
-      Let constructorParent be the intrinsic object %FunctionPrototype%.
+  [...]
+  15. If ClassHeritageopt is present, then set F's [[ConstructorKind]] internal slot to "derived".
+  [...]
+
+  9.2.2 [[Construct]]
+
+  [...]
+  13. If result.[[Type]] is return, then
+     a. If Type(result.[[Value]]) is Object, return NormalCompletion(result.[[Value]]).
+  [...]
 ---*/
+var obj;
+
 class Foo extends null {
   constructor() {
-    return {};
+    return obj = {};
   }
 }
 
 var f = new Foo();
 
+assert.sameValue(f, obj);
 assert.sameValue(Object.getPrototypeOf(f), Object.prototype);
diff --git a/test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js b/test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js
index fdf78ae5a2d4810f7f726e14b5e3f50023fcaea6..bcafe87ca0af647a3498c3d859fd0bed22310099 100644
--- a/test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js
+++ b/test/language/statements/class/subclass/class-definition-null-proto-missing-return-override.js
@@ -3,12 +3,9 @@
 /*---
 esid: sec-runtime-semantics-classdefinitionevaluation
 description: >
-  The `this` value of a null-extending class is automatically initialized,
-  obviating the need for an explicit return value in the constructor.
+  The `this` value of a null-extending class isn't automatically initialized,
+  which makes it necessary to have an explicit return value in the constructor.
 info: |
-  The behavior under test was introduced in the "ES2017" revision of the
-  specification and conflicts with prior editions.
-
   Runtime Semantics: ClassDefinitionEvaluation
 
   [...]
@@ -18,24 +15,25 @@ info: |
      [...]
      b. Let superclass be the result of evaluating ClassHeritage.
   [...]
-  15. If ClassHeritageopt is present and superclass is not null, then set F's
-      [[ConstructorKind]] internal slot to "derived".
+  15. If ClassHeritageopt is present, then set F's [[ConstructorKind]] internal slot to "derived".
   [...]
 
   9.2.2 [[Construct]]
 
-  [...]
-  5. If kind is "base", then
-     a. Let thisArgument be ? OrdinaryCreateFromConstructor(newTarget,
-        "%ObjectPrototype%").
   [...]
   15. Return ? envRec.GetThisBinding().
+
+  8.1.1.3.4 GetThisBinding ( )
+  [...]
+  3. If envRec.[[ThisBindingStatus]] is "uninitialized", throw a ReferenceError exception.
+  [...]
 ---*/
 
 class Foo extends null {
-  constructor() {}
+  constructor() {
+  }
 }
 
-var foo = new Foo();
-
-assert.sameValue(Object.getPrototypeOf(foo), Foo.prototype);
+assert.throws(ReferenceError, function() {
+  new C();
+});
diff --git a/test/language/statements/class/subclass/class-definition-null-proto-super.js b/test/language/statements/class/subclass/class-definition-null-proto-super.js
index 87c2084e3e7d503f560ef9f15786710e2ef8d395..0dbcaf069082605b79d30664200644eb8f6a5f56 100644
--- a/test/language/statements/class/subclass/class-definition-null-proto-super.js
+++ b/test/language/statements/class/subclass/class-definition-null-proto-super.js
@@ -3,8 +3,8 @@
 /*---
 esid: sec-runtime-semantics-classdefinitionevaluation
 description: >
-  The `this` value of a null-extending class is automatically initialized,
-  preventing the use of `super` from within the constructor.
+  Attempting to call `super()` in a null-extending class throws a TypeError,
+  because %FunctionPrototype% cannot be called as constructor function.
 info: |
   Runtime Semantics: ClassDefinitionEvaluation
 
@@ -14,17 +14,12 @@ info: |
   6. Else,
      [...]
      b. Let superclass be the result of evaluating ClassHeritage.
+     [...]
+     e. If superclass is null, then
+        [...]
+        ii. Let constructorParent be the intrinsic object %FunctionPrototype%.
   [...]
-  15. If ClassHeritageopt is present and superclass is not null, then set F's
-      [[ConstructorKind]] internal slot to "derived".
-  [...]
-
-  9.2.2 [[Construct]]
-
-  [...]
-  5. If kind is "base", then
-     a. Let thisArgument be ? OrdinaryCreateFromConstructor(newTarget,
-        "%ObjectPrototype%").
+  15. Let constructorInfo be the result of performing DefineMethod for constructor with arguments proto and constructorParent as the optional functionPrototype argument.
   [...]
 
   12.3.5.1 Runtime Semantics: Evaluation
@@ -32,17 +27,15 @@ info: |
   SuperCall : super Arguments
 
   [...]
-  6. Let result be ? Construct(func, argList, newTarget).
-  7. Let thisER be GetThisEnvironment( ).
-  8. Return ? thisER.BindThisValue(result).
+  3. Let func be ? GetSuperConstructor().
+  4. Let argList be ArgumentListEvaluation of Arguments.
+  [...]
 
-  8.1.1.3.1 BindThisValue
+  12.3.5.2 Runtime Semantics: GetSuperConstructor ( )
 
   [...]
-  3. If envRec.[[ThisBindingStatus]] is "initialized", throw a ReferenceError
-     exception.
-  4. Set envRec.[[ThisValue]] to V.
-  5. Set envRec.[[ThisBindingStatus]] to "initialized".
+  5. Let superConstructor be ! activeFunction.[[GetPrototypeOf]]().
+  6. If IsConstructor(superConstructor) is false, throw a TypeError exception.
   [...]
 ---*/
 
@@ -52,7 +45,7 @@ var reachable = 0;
 class C extends null {
   constructor() {
     reachable += 1;
-    super();
+    super(unreachable += 1);
     unreachable += 1;
   }
 }
diff --git a/test/language/statements/class/subclass/class-definition-null-proto-this.js b/test/language/statements/class/subclass/class-definition-null-proto-this.js
index c581700c9c8b68faec0ba2ba4b9e4531e043c97c..9c73dca5637f9730afec2dc65f747b186a8325ad 100644
--- a/test/language/statements/class/subclass/class-definition-null-proto-this.js
+++ b/test/language/statements/class/subclass/class-definition-null-proto-this.js
@@ -3,42 +3,37 @@
 /*---
 esid: sec-runtime-semantics-classdefinitionevaluation
 description: >
-  The `this` value of a null-extending class is automatically initialized
+  The `this` value of a null-extending class isn't automatically initialized
 info: |
-  The behavior under test was introduced in the "ES2017" revision of the
-  specification and conflicts with prior editions.
-
   Runtime Semantics: ClassDefinitionEvaluation
 
   [...]
-  5. If ClassHeritageopt is not present, then
-     [...]
-  6. Else,
-     [...]
-     b. Let superclass be the result of evaluating ClassHeritage.
-  [...]
-  15. If ClassHeritageopt is present and superclass is not null, then set F's
-      [[ConstructorKind]] internal slot to "derived".
+  15. If ClassHeritageopt is present, then set F's [[ConstructorKind]] internal slot to "derived".
   [...]
 
-  9.2.2 [[Construct]]
+  12.2.2.1 Runtime Semantics: Evaluation
+  PrimaryExpression : this
+  1. Return ? ResolveThisBinding( ).
 
+  8.3.4 ResolveThisBinding ( )
+  [...]
+  2. Return ? envRec.GetThisBinding().
+  
+  8.1.1.3.4 GetThisBinding ( )
   [...]
-  5. If kind is "base", then
-     a. Let thisArgument be ? OrdinaryCreateFromConstructor(newTarget,
-        "%ObjectPrototype%").
+  3. If envRec.[[ThisBindingStatus]] is "uninitialized", throw a ReferenceError exception.
   [...]
 ---*/
 
-var thisVal, instance;
-
 class C extends null {
   constructor() {
-    thisVal = this;
+    // Use an arrow function to access the `this` binding of the class constructor.
+    assert.throws(ReferenceError, () => {
+      this;
+    });
   }
 }
 
-instance = new C();
-
-assert.sameValue(instance instanceof C, true);
-assert.sameValue(instance, thisVal);
+assert.throws(ReferenceError, function() {
+  new C();
+});
diff --git a/test/language/statements/class/subclass/class-definition-null-proto.js b/test/language/statements/class/subclass/class-definition-null-proto.js
index 5acaecaa38d008d3b43dd1318ef9a2805cc6a64b..486f646fa8dd198f8d4ecf0fb20c06f54b3d3770 100644
--- a/test/language/statements/class/subclass/class-definition-null-proto.js
+++ b/test/language/statements/class/subclass/class-definition-null-proto.js
@@ -4,32 +4,21 @@
 esid: sec-runtime-semantics-classdefinitionevaluation
 es6id: 14.5.14
 description: >
-  When a null-extending class does not specify a `constructor` method
-  definition, a method with zero parameters and an empty body is used
+  The prototype of a null-extending class is %FunctionPrototype%, the prototype of
+  its "prototype" property is `null`.
 info: |
-  The behavior under test was introduced in the "ES2017" revision of the
-  specification and conflicts with prior editions.
-
   Runtime Semantics: ClassDefinitionEvaluation
 
+  [...]
   5. If ClassHeritageopt is not present, then
      [...]
   6. Else,
      [...]
      b. Let superclass be the result of evaluating ClassHeritage.
      [...]
-  7. Let proto be ObjectCreate(protoParent).
-  8. If ClassBodyopt is not present, let constructor be empty.
-  9. Else, let constructor be ConstructorMethod of ClassBody.
-  10. If constructor is empty, then
-      a. If ClassHeritageopt is present and superclass is not null, then
-         [...]
-      b. Else,
-         i. Let constructor be the result of parsing the source text
-
-              constructor( ){ }
-
-            using the syntactic grammar with the goal symbol MethodDefinition.
+     e. If superclass is null, then
+         i. Let protoParent be null.
+        ii. Let constructorParent be the intrinsic object %FunctionPrototype%.
   [...]
 ---*/
 
@@ -37,3 +26,4 @@ class Foo extends null {}
 
 assert.sameValue(Object.getPrototypeOf(Foo.prototype), null);
 assert.sameValue(Object.getPrototypeOf(Foo.prototype.constructor), Function.prototype);
+assert.sameValue(Foo, Foo.prototype.constructor);