Commit 851d2001 authored by Michael Achenbach's avatar Michael Achenbach Committed by Commit Bot

[foozzie] Mock out large typed arrays

BUG=chromium:688856,chromium:664068
NOTRY=true

Change-Id: Icf0e7a51693b6d399c8395eb0bbed9a3c373eb0a
Reviewed-on: https://chromium-review.googlesource.com/439164Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#43052}
parent 5c16aac0
......@@ -10,6 +10,7 @@ if (v8_correctness_fuzzer) {
"v8_commands.py",
"v8_foozzie.py",
"v8_mock.js",
"v8_mock_archs.js",
"v8_suppressions.js",
"v8_suppressions.py",
]
......
......@@ -42,6 +42,7 @@ PREAMBLE = [
os.path.join(BASE_PATH, 'v8_mock.js'),
os.path.join(BASE_PATH, 'v8_suppressions.js'),
]
ARCH_MOCKS = os.path.join(BASE_PATH, 'v8_mock_archs.js')
FLAGS = ['--abort_on_stack_overflow', '--expose-gc', '--allow-natives-syntax',
'--invoke-weak-callbacks', '--omit-quit', '--es-staging']
......@@ -221,7 +222,10 @@ def main():
second_config_flags = common_flags + CONFIGS[options.second_config]
def run_d8(d8, config_flags):
args = [d8] + config_flags + PREAMBLE + [options.testcase]
preamble = PREAMBLE[:]
if options.first_arch != options.second_arch:
preamble.append(ARCH_MOCKS)
args = [d8] + config_flags + preamble + [options.testcase]
print " ".join(args)
if d8.endswith('.py'):
# Wrap with python in tests.
......
......@@ -66,17 +66,20 @@ Object.defineProperty(
// Mock buffer access in float typed arrays because of varying NaN patterns.
// Note, for now we just use noop forwarding proxies, because they already
// turn off optimizations.
function __MockTypedArray(arrayType) {
var array_creation_handler = {
construct: function(target, args) {
return new Proxy(new arrayType(args), {});
},
};
return new Proxy(arrayType, array_creation_handler);
}
(function () {
var mock = function(arrayType) {
var handler = {
construct: function(target, args) {
return new (
Function.prototype.bind.apply(arrayType, [null].concat(args)));
},
};
return new Proxy(arrayType, handler);
}
Float32Array = __MockTypedArray(Float32Array);
Float64Array = __MockTypedArray(Float64Array);
Float32Array = mock(Float32Array);
Float64Array = mock(Float64Array);
})();
// Mock Worker.
(function () {
......
// 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);
})();
......@@ -91,7 +91,7 @@ IGNORE_TEST_CASES = {
IGNORE_OUTPUT = {
'': {
'crbug.com/664068':
re.compile(r'RangeError', re.S),
re.compile(r'RangeError(?!: byte length)', re.S),
'crbug.com/667678':
re.compile(r'\[native code\]', re.S),
'crbug.com/681806':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment