v8/tools/foozzie/v8_mock_archs.js
Michael Achenbach 851d2001fc [foozzie] Mock out large typed arrays
BUG=chromium:688856,chromium:664068
NOTRY=true

Change-Id: Icf0e7a51693b6d399c8395eb0bbed9a3c373eb0a
Reviewed-on: https://chromium-review.googlesource.com/439164
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#43052}
2017-02-09 08:33:16 +00:00

42 lines
1.4 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.
// This is intended for permanent JS behavior changes for mocking out
// non-deterministic behavior. For temporary suppressions, please refer to
// v8_suppressions.js.
// This mocks only architecture specific differences. Refer to v8_mocks.js
// for the general case.
// This file is loaded before each correctness test cases and won't get
// minimized.
// Mock maximum typed-array length and limit to 1MiB.
(function () {
var mock = function(arrayType) {
var handler = {
construct: function(target, args) {
var arrayLength = args[0]
if (args.length > 0 &&
Number.isInteger(args[0]) &&
args[0] > 1048576) {
args[0] = 1048576
}
return new (
Function.prototype.bind.apply(arrayType, [null].concat(args)));
},
};
return new Proxy(arrayType, handler);
}
ArrayBuffer = mock(ArrayBuffer);
Int8Array = mock(Int8Array);
Uint8Array = mock(Uint8Array);
Uint8ClampedArray = mock(Uint8ClampedArray);
Int16Array = mock(Int16Array);
Uint16Array = mock(Uint16Array);
Int32Array = mock(Int32Array);
Uint32Array = mock(Uint32Array);
Float32Array = mock(Float32Array);
Float64Array = mock(Float64Array);
})();