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

Unified Diff: test/cctest/wasm/test-run-wasm-module.cc

Issue 2390113003: [wasm] Refactor import handling for 0xC. (Closed)
Patch Set: Fix gc stress failure Created 4 years, 2 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 | « src/wasm/wasm-module-builder.cc ('k') | test/cctest/wasm/wasm-run-utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/wasm/test-run-wasm-module.cc
diff --git a/test/cctest/wasm/test-run-wasm-module.cc b/test/cctest/wasm/test-run-wasm-module.cc
index 0e2ed1b0fe2e377a2e5ff09b39af4c9bb93424ab..3b30e56076a57854f81040c8eb04b560fac35552 100644
--- a/test/cctest/wasm/test-run-wasm-module.cc
+++ b/test/cctest/wasm/test-run-wasm-module.cc
@@ -429,3 +429,94 @@ TEST(Run_WasmModule_GrowMemOobVariableIndex) {
CHECK(try_catch.HasCaught());
isolate->clear_pending_exception();
}
+
+TEST(Run_WasmModule_Global_init) {
+ v8::internal::AccountingAllocator allocator;
+ Zone zone(&allocator);
+ TestSignatures sigs;
+
+ WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone);
+ uint32_t global1 =
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(777777));
+ uint32_t global2 =
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(222222));
+ WasmFunctionBuilder* f1 = builder->AddFunction(sigs.i_v());
+ byte code[] = {
+ WASM_I32_ADD(WASM_GET_GLOBAL(global1), WASM_GET_GLOBAL(global2))};
+ f1->EmitCode(code, sizeof(code));
+ ExportAsMain(f1);
+ TestModule(&zone, builder, 999999);
+}
+
+template <typename CType>
+static void RunWasmModuleGlobalInitTest(LocalType type, CType expected) {
+ v8::internal::AccountingAllocator allocator;
+ Zone zone(&allocator);
+ TestSignatures sigs;
+
+ LocalType types[] = {type};
+ FunctionSig sig(1, 0, types);
+
+ for (int padding = 0; padding < 5; padding++) {
+ // Test with a simple initializer
+ WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone);
+
+ for (int i = 0; i < padding; i++) { // pad global before
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(i + 20000));
+ }
+ uint32_t global =
+ builder->AddGlobal(type, false, false, WasmInitExpr(expected));
+ for (int i = 0; i < padding; i++) { // pad global after
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(i + 30000));
+ }
+
+ WasmFunctionBuilder* f1 = builder->AddFunction(&sig);
+ byte code[] = {WASM_GET_GLOBAL(global)};
+ f1->EmitCode(code, sizeof(code));
+ ExportAsMain(f1);
+ TestModule(&zone, builder, expected);
+ }
+
+ for (int padding = 0; padding < 5; padding++) {
+ // Test with a global index
+ WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone);
+ for (int i = 0; i < padding; i++) { // pad global before
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(i + 40000));
+ }
+
+ uint32_t global1 =
+ builder->AddGlobal(type, false, false, WasmInitExpr(expected));
+
+ for (int i = 0; i < padding; i++) { // pad global middle
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(i + 50000));
+ }
+
+ uint32_t global2 = builder->AddGlobal(
+ type, false, false, WasmInitExpr(WasmInitExpr::kGlobalIndex, global1));
+
+ for (int i = 0; i < padding; i++) { // pad global after
+ builder->AddGlobal(kAstI32, false, false, WasmInitExpr(i + 60000));
+ }
+
+ WasmFunctionBuilder* f1 = builder->AddFunction(&sig);
+ byte code[] = {WASM_GET_GLOBAL(global2)};
+ f1->EmitCode(code, sizeof(code));
+ ExportAsMain(f1);
+ TestModule(&zone, builder, expected);
+ }
+}
+
+TEST(Run_WasmModule_Global_i32) {
+ RunWasmModuleGlobalInitTest<int32_t>(kAstI32, -983489);
+ RunWasmModuleGlobalInitTest<int32_t>(kAstI32, 11223344);
+}
+
+TEST(Run_WasmModule_Global_f32) {
+ RunWasmModuleGlobalInitTest<float>(kAstF32, -983.9f);
+ RunWasmModuleGlobalInitTest<float>(kAstF32, 1122.99f);
+}
+
+TEST(Run_WasmModule_Global_f64) {
+ RunWasmModuleGlobalInitTest<double>(kAstF64, -833.9);
+ RunWasmModuleGlobalInitTest<double>(kAstF64, 86374.25);
+}
« no previous file with comments | « src/wasm/wasm-module-builder.cc ('k') | test/cctest/wasm/wasm-run-utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698