a345a442d3
- Add d8.file.read() and d8.file.execute() helpers - Change tools and tests to use new d8.file helper - Unify error throwing in v8::Shell::ReadFile Change-Id: I5ef4cb27f217508a367106f01e872a4059d5e399 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2928505 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#74883}
47 lines
2.0 KiB
JavaScript
47 lines
2.0 KiB
JavaScript
// Copyright 2018 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.
|
|
|
|
d8.file.execute('test/mjsunit/wasm/wasm-module-builder.js');
|
|
|
|
const builder = new WasmModuleBuilder();
|
|
builder.addFunction('main', kSig_d_d)
|
|
.addBody([
|
|
// Call with param 0 (converted to i64), to fill the stack with non-zero
|
|
// values.
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 0
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 1
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 2
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 3
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 4
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 5
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 6
|
|
kExprLocalGet, 0, kExprI64SConvertF64, // arg 7
|
|
kExprCallFunction, 1, // call #1
|
|
// Now call with 0 constants.
|
|
// The bug was that they were written out as i32 values, thus the upper 32
|
|
// bit were the previous values on that stack memory.
|
|
kExprI64Const, 0, // i64.const 0 [0]
|
|
kExprI64Const, 0, // i64.const 0 [1]
|
|
kExprI64Const, 0, // i64.const 0 [2]
|
|
kExprI64Const, 0, // i64.const 0 [3]
|
|
kExprI64Const, 0, // i64.const 0 [4]
|
|
kExprI64Const, 0, // i64.const 0 [5]
|
|
kExprI64Const, 0, // i64.const 0 [6]
|
|
kExprI64Const, 0, // i64.const 0 [7]
|
|
kExprCallFunction, 1, // call #1
|
|
// Return the sum of the two returned values.
|
|
kExprF64Add
|
|
])
|
|
.exportFunc();
|
|
builder.addFunction(undefined, makeSig(new Array(8).fill(kWasmI64), [kWasmF64]))
|
|
.addBody([
|
|
kExprLocalGet, 7, // get_local 7 (last parameter)
|
|
kExprF64SConvertI64, // f64.convert_s/i64
|
|
]);
|
|
const instance = builder.instantiate();
|
|
const big_num_1 = 2 ** 48;
|
|
const big_num_2 = 2 ** 56 / 3;
|
|
assertEquals(big_num_1, instance.exports.main(big_num_1));
|
|
assertEquals(big_num_2, instance.exports.main(big_num_2));
|