2bd9bdbe62
This patch improves ArrayBuffer and TypedArray subclassing by adding support for @@species and constructing outputs to certain methods by creating an instance of the constructor determined by the SpeciesConstructor algorithm, rather than fixed to a superclass or naively the constructor. The new behavior is enabled by the --harmony-species flag. Care is taken to not significantly change the observable behavior when the flag is off. Previously, TypedArrays already supported subclassing by reading the constructor of the receiver, but ArrayBuffers did not, and this old behavior is preserved and tested for, to avoid a multi-stage upgrade path and keep things simple for users. R=adamk BUG=v8:4093 LOG=Y Review URL: https://codereview.chromium.org/1574903004 Cr-Commit-Position: refs/heads/master@{#33223}
24 lines
507 B
JavaScript
24 lines
507 B
JavaScript
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --harmony-species
|
|
|
|
'use strict';
|
|
|
|
var typedArray = new Int8Array(1);
|
|
var saved;
|
|
var called;
|
|
class TypedArraySubclass extends Int8Array {
|
|
constructor(x) {
|
|
super(x);
|
|
called = true;
|
|
saved = x;
|
|
}
|
|
}
|
|
typedArray.constructor = TypedArraySubclass
|
|
typedArray.map(function(){});
|
|
|
|
assertTrue(called);
|
|
assertEquals(saved, 1);
|