aa93e6ca95
The implementation of MemorySize with RelocatableInt32Constants is problematic if MemorySize is placed close to a GrowMemory instruction in the code. The use of a runtime function guarantees that the order in which MemorySize and GrowMemory is executed is correct. R=titzer@chromium.org BUG=chromium:651961 TEST=mjsunit/regress/wasm/regression-651961 Committed: https://crrev.com/2c12a9a42d454a36fcd2931fa458d72832eeb689 Review-Url: https://codereview.chromium.org/2386183004 Cr-Original-Commit-Position: refs/heads/master@{#39972} Cr-Commit-Position: refs/heads/master@{#39980}
31 lines
972 B
JavaScript
31 lines
972 B
JavaScript
// Copyright 2016 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: --expose-wasm
|
|
|
|
load("test/mjsunit/wasm/wasm-constants.js");
|
|
load("test/mjsunit/wasm/wasm-module-builder.js");
|
|
|
|
(function testMemorySizeZero() {
|
|
print("testMemorySizeZero()");
|
|
var builder = new WasmModuleBuilder();
|
|
builder.addFunction("memory_size", kSig_i_v)
|
|
.addBody([kExprMemorySize])
|
|
.exportFunc();
|
|
var module = builder.instantiate();
|
|
assertEquals(0, module.exports.memory_size());
|
|
})();
|
|
|
|
(function testMemorySizeNonZero() {
|
|
print("testMemorySizeNonZero()");
|
|
var builder = new WasmModuleBuilder();
|
|
var size = 11;
|
|
builder.addMemory(size, size, false);
|
|
builder.addFunction("memory_size", kSig_i_v)
|
|
.addBody([kExprMemorySize])
|
|
.exportFunc();
|
|
var module = builder.instantiate();
|
|
assertEquals(size, module.exports.memory_size());
|
|
})();
|