Преглед изворни кода

add a CL option to specify shared heap size

zhenweijin пре 5 месеци
родитељ
комит
c080aa80d0
1 измењених фајлова са 31 додато и 0 уклоњено
  1. 31 0
      product-mini/platforms/windows/main.c

+ 31 - 0
product-mini/platforms/windows/main.c

@@ -53,6 +53,10 @@ print_help()
     printf("  --gc-heap-size=n         Set maximum gc heap size in bytes,\n");
     printf("                           default is %u KB\n", GC_HEAP_SIZE_DEFAULT / 1024);
 #endif
+#if WASM_ENABLE_SHARED_HEAP != 0
+    printf("  --shared-heap-size=n     Create shared heap of n bytes and attach to the wasm app.\n");
+    printf("                           The size n will be adjusted to a minumum number aligned to page size\n");
+#endif
 #if WASM_ENABLE_JIT != 0
     printf("  --llvm-jit-size-level=n  Set LLVM JIT size level, default is 3\n");
     printf("  --llvm-jit-opt-level=n   Set LLVM JIT optimization level, default is 3\n");
@@ -364,6 +368,13 @@ main(int argc, char *argv[])
             gc_heap_size = atoi(argv[0] + 15);
         }
 #endif
+#if WASM_ENABLE_SHARED_HEAP != 0
+        else if (!strncmp(argv[0], "--shared-heap-size=", 19)) {
+            if (argv[0][19] == '\0')
+                return print_help();
+            shared_heap_size = atoi(argv[0] + 19);
+        }
+#endif
 #if WASM_ENABLE_JIT != 0
         else if (!strncmp(argv[0], "--llvm-jit-size-level=", 22)) {
             if (argv[0][22] == '\0')
@@ -551,6 +562,23 @@ main(int argc, char *argv[])
         goto fail3;
     }
 
+#if WASM_ENABLE_SHARED_HEAP != 0
+    if (shared_heap_size > 0) {
+        memset(&shared_heap_init_args, 0, sizeof(shared_heap_init_args));
+        shared_heap_init_args.size = shared_heap_size;
+        shared_heap = wasm_runtime_create_shared_heap(&shared_heap_init_args);
+
+        if (!shared_heap) {
+            printf("Create shared heap failed.\n");
+            goto fail5;
+        }
+        if (!wasm_runtime_attach_shared_heap(wasm_module_inst, shared_heap)) {
+            printf("Attach shared heap failed.\n");
+            goto fail5;
+        }
+    }
+#endif
+
 #if WASM_ENABLE_DEBUG_INTERP != 0
     if (ip_addr != NULL) {
         wasm_exec_env_t exec_env =
@@ -598,6 +626,9 @@ main(int argc, char *argv[])
     if (exception)
         printf("%s\n", exception);
 
+#if WASM_ENABLE_SHARED_HEAP != 0
+fail5:
+#endif
 #if WASM_ENABLE_DEBUG_INTERP != 0
 fail4:
 #endif