888acb2f3c
1) Make sure we don't enable prototype setup mode for parent class and its prototype objects. 2) Make sure we create builtins and their prototypes with completed setup mode. 3) Drive-by-fix: setup typed array classes in bootstrapper.cc instead of typedarray.js, and drop %FunctionSetPrototype(). Bug: v8:7115, v8:5902 Change-Id: I58ac091d85647abc3307bd47baf48e378e3695c5 Reviewed-on: https://chromium-review.googlesource.com/790992 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#49655}
34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
// Copyright 2017 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: --allow-natives-syntax
|
|
|
|
function TestBuiltinSubclassing(Builtin) {
|
|
assertTrue(%HasFastProperties(Builtin));
|
|
assertTrue(%HasFastProperties(Builtin.prototype));
|
|
assertTrue(%HasFastProperties(Builtin.prototype.__proto__));
|
|
|
|
class SubClass extends Builtin {}
|
|
|
|
assertTrue(%HasFastProperties(Builtin));
|
|
assertTrue(%HasFastProperties(Builtin.prototype));
|
|
assertTrue(%HasFastProperties(Builtin.prototype.__proto__));
|
|
}
|
|
|
|
let TypedArray = Uint8Array.__proto__;
|
|
|
|
TestBuiltinSubclassing(RegExp);
|
|
TestBuiltinSubclassing(Promise);
|
|
TestBuiltinSubclassing(Array);
|
|
TestBuiltinSubclassing(TypedArray);
|
|
TestBuiltinSubclassing(Uint8Array);
|
|
TestBuiltinSubclassing(Int8Array);
|
|
TestBuiltinSubclassing(Uint16Array);
|
|
TestBuiltinSubclassing(Int16Array);
|
|
TestBuiltinSubclassing(Uint32Array);
|
|
TestBuiltinSubclassing(Int32Array);
|
|
TestBuiltinSubclassing(Float32Array);
|
|
TestBuiltinSubclassing(Float64Array);
|
|
TestBuiltinSubclassing(Uint8ClampedArray);
|