function ObjectSetProto(proto) {
  CHECK_OBJECT_COERCIBLE(this, "Object.prototype.__proto__");

  if ((IS_RECEIVER(proto) || IS_NULL(proto)) && IS_RECEIVER(this)) {
    %SetPrototype(this, proto);
  }
}
function ObjectSetProto(proto) {
  CHECK_OBJECT_COERCIBLE(this, "Object.prototype.__proto__");

  if ((IS_RECEIVER(proto) || IS_NULL(proto)) && IS_RECEIVER(this)) {
    %SetPrototype(this, proto);
  }
}
function ObjectSetProto ( proto ) { CHECK_OBJECT_COERCIBLE ( this , "Object.prototype.__proto__" ) ; if ( ( IS_RECEIVER ( proto ) || IS_NULL ( proto ) ) && IS_RECEIVER ( this ) ) { % SetPrototype ( this , proto ) ; } }
ES6 B.2.2.1.2
ES6 B . 2 . 2 . 1 . 2