Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(301)

Unified Diff: test/unittests/wasm/ast-decoder-unittest.cc

Issue 2324733002: [wasm] Do not support grow_memory for asmjs modules. (Closed)
Patch Set: Fixed a typo Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/cctest/wasm/test-signatures.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/unittests/wasm/ast-decoder-unittest.cc
diff --git a/test/unittests/wasm/ast-decoder-unittest.cc b/test/unittests/wasm/ast-decoder-unittest.cc
index ef33d65f3bfbff3d7f7a0e0516b024a62382a4fa..72e7b37be339ae9dbee27f77277162dbb740732f 100644
--- a/test/unittests/wasm/ast-decoder-unittest.cc
+++ b/test/unittests/wasm/ast-decoder-unittest.cc
@@ -13,6 +13,7 @@
#include "src/wasm/ast-decoder.h"
#include "src/wasm/wasm-macro-gen.h"
#include "src/wasm/wasm-module.h"
+#include "src/wasm/wasm-opcodes.h"
namespace v8 {
namespace internal {
@@ -1079,12 +1080,6 @@ TEST_F(AstDecoderTest, MemorySize) {
EXPECT_FAILURE(sigs.f_ff(), code);
}
-TEST_F(AstDecoderTest, GrowMemory) {
- byte code[] = {WASM_UNOP(kExprGrowMemory, WASM_GET_LOCAL(0))};
- EXPECT_VERIFIES(sigs.i_i(), code);
- EXPECT_FAILURE(sigs.i_d(), code);
-}
-
TEST_F(AstDecoderTest, LoadMemOffset) {
for (int offset = 0; offset < 128; offset += 7) {
byte code[] = {kExprI8Const, 0, kExprI32LoadMem, ZERO_ALIGNMENT,
@@ -1499,6 +1494,116 @@ TEST_F(AstDecoderTest, AllSetGlobalCombinations) {
}
}
+TEST_F(AstDecoderTest, WasmGrowMemory) {
+ TestModuleEnv module_env;
+ module = &module_env;
+ module->origin = kWasmOrigin;
+
+ byte code[] = {WASM_UNOP(kExprGrowMemory, WASM_GET_LOCAL(0))};
+ EXPECT_VERIFIES(sigs.i_i(), code);
+ EXPECT_FAILURE(sigs.i_d(), code);
+}
+
+TEST_F(AstDecoderTest, AsmJsGrowMemory) {
+ TestModuleEnv module_env;
+ module = &module_env;
+ module->origin = kAsmJsOrigin;
+
+ byte code[] = {WASM_UNOP(kExprGrowMemory, WASM_GET_LOCAL(0))};
+ EXPECT_FAILURE(sigs.i_i(), code);
+}
+
+TEST_F(AstDecoderTest, AsmJsBinOpsCheckOrigin) {
+ LocalType float32int32float32[] = {kAstF32, kAstI32, kAstF32};
+ FunctionSig sig_f_if(1, 2, float32int32float32);
+ LocalType float64int32float64[] = {kAstF64, kAstI32, kAstF64};
+ FunctionSig sig_d_id(1, 2, float64int32float64);
+ struct {
+ WasmOpcode op;
+ FunctionSig* sig;
+ } AsmJsBinOps[] = {
+ {kExprF64Atan2, sigs.d_dd()},
+ {kExprF64Pow, sigs.d_dd()},
+ {kExprF64Mod, sigs.d_dd()},
+ {kExprI32AsmjsDivS, sigs.i_ii()},
+ {kExprI32AsmjsDivU, sigs.i_ii()},
+ {kExprI32AsmjsRemS, sigs.i_ii()},
+ {kExprI32AsmjsRemU, sigs.i_ii()},
+ {kExprI32AsmjsStoreMem8, sigs.i_ii()},
+ {kExprI32AsmjsStoreMem16, sigs.i_ii()},
+ {kExprI32AsmjsStoreMem, sigs.i_ii()},
+ {kExprF32AsmjsStoreMem, &sig_f_if},
+ {kExprF64AsmjsStoreMem, &sig_d_id},
+ };
+
+ {
+ TestModuleEnv module_env;
+ module = &module_env;
+ module->origin = kAsmJsOrigin;
+ for (int i = 0; i < arraysize(AsmJsBinOps); i++) {
+ TestBinop(AsmJsBinOps[i].op, AsmJsBinOps[i].sig);
+ }
+ }
+
+ {
+ TestModuleEnv module_env;
+ module = &module_env;
+ module->origin = kWasmOrigin;
+ for (int i = 0; i < arraysize(AsmJsBinOps); i++) {
+ byte code[] = {
+ WASM_BINOP(AsmJsBinOps[i].op, WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))};
+ EXPECT_FAILURE(AsmJsBinOps[i].sig, code);
+ }
+ }
+}
+
+TEST_F(AstDecoderTest, AsmJsUnOpsCheckOrigin) {
+ LocalType float32int32[] = {kAstF32, kAstI32};
+ FunctionSig sig_f_i(1, 2, float32int32);
+ LocalType float64int32[] = {kAstF64, kAstI32};
+ FunctionSig sig_d_i(1, 2, float64int32);
+ struct {
+ WasmOpcode op;
+ FunctionSig* sig;
+ } AsmJsUnOps[] = {{kExprF64Acos, sigs.d_d()},
+ {kExprF64Asin, sigs.d_d()},
+ {kExprF64Atan, sigs.d_d()},
+ {kExprF64Cos, sigs.d_d()},
+ {kExprF64Sin, sigs.d_d()},
+ {kExprF64Tan, sigs.d_d()},
+ {kExprF64Exp, sigs.d_d()},
+ {kExprF64Log, sigs.d_d()},
+ {kExprI32AsmjsLoadMem8S, sigs.i_i()},
+ {kExprI32AsmjsLoadMem8U, sigs.i_i()},
+ {kExprI32AsmjsLoadMem16S, sigs.i_i()},
+ {kExprI32AsmjsLoadMem16U, sigs.i_i()},
+ {kExprI32AsmjsLoadMem, sigs.i_i()},
+ {kExprF32AsmjsLoadMem, &sig_f_i},
+ {kExprF64AsmjsLoadMem, &sig_d_i},
+ {kExprI32AsmjsSConvertF32, sigs.i_f()},
+ {kExprI32AsmjsUConvertF32, sigs.i_f()},
+ {kExprI32AsmjsSConvertF64, sigs.i_d()},
+ {kExprI32AsmjsUConvertF64, sigs.i_d()}};
+ {
+ TestModuleEnv module_env;
+ module = &module_env;
+ module->origin = kAsmJsOrigin;
+ for (int i = 0; i < arraysize(AsmJsUnOps); i++) {
+ TestUnop(AsmJsUnOps[i].op, AsmJsUnOps[i].sig);
+ }
+ }
+
+ {
+ TestModuleEnv module_env;
+ module = &module_env;
+ module->origin = kWasmOrigin;
+ for (int i = 0; i < arraysize(AsmJsUnOps); i++) {
+ byte code[] = {WASM_UNOP(AsmJsUnOps[i].op, WASM_GET_LOCAL(0))};
+ EXPECT_FAILURE(AsmJsUnOps[i].sig, code);
+ }
+ }
+}
+
TEST_F(AstDecoderTest, BreakEnd) {
EXPECT_VERIFIES_INLINE(sigs.i_i(),
B1(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO)));
« no previous file with comments | « test/cctest/wasm/test-signatures.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698