diff options
author | Fabrice Bellard <fabrice@bellard.org> | 2025-04-07 11:47:57 +0200 |
---|---|---|
committer | Fabrice Bellard <fabrice@bellard.org> | 2025-04-07 11:47:57 +0200 |
commit | ec83bd209889277b7c9d1600df5a6e67c1f8dae0 (patch) | |
tree | fea30c037f1a948816369f851a3b3d19ff2c194c /qjs.c | |
parent | c805d4f7846456bf6dade8b4f4258c85cbd178c3 (diff) | |
download | quickjs-ec83bd209889277b7c9d1600df5a6e67c1f8dae0.tar.gz quickjs-ec83bd209889277b7c9d1600df5a6e67c1f8dae0.zip |
qjs: allow SI suffixes in memory sizes - set default stack size to 1 MB
Diffstat (limited to 'qjs.c')
-rw-r--r-- | qjs.c | 34 |
1 files changed, 30 insertions, 4 deletions
@@ -257,6 +257,32 @@ static const JSMallocFunctions trace_mf = { js_trace_malloc_usable_size, }; +static size_t get_suffixed_size(const char *str) +{ + char *p; + size_t v; + v = (size_t)strtod(str, &p); + switch(*p) { + case 'G': + v <<= 30; + break; + case 'M': + v <<= 20; + break; + case 'k': + case 'K': + v <<= 10; + break; + default: + if (*p != '\0') { + fprintf(stderr, "qjs: invalid suffix: %s\n", p); + exit(1); + } + break; + } + return v; +} + #define PROG_NAME "qjs" void help(void) @@ -272,8 +298,8 @@ void help(void) " --std make 'std' and 'os' available to the loaded script\n" "-T --trace trace memory allocation\n" "-d --dump dump the memory usage stats\n" - " --memory-limit n limit the memory usage to 'n' bytes\n" - " --stack-size n limit the stack size to 'n' bytes\n" + " --memory-limit n limit the memory usage to 'n' bytes (SI suffixes allowed)\n" + " --stack-size n limit the stack size to 'n' bytes (SI suffixes allowed)\n" " --no-unhandled-rejection ignore unhandled promise rejections\n" "-q --quit just instantiate the interpreter and quit\n"); exit(1); @@ -384,7 +410,7 @@ int main(int argc, char **argv) fprintf(stderr, "expecting memory limit"); exit(1); } - memory_limit = (size_t)strtod(argv[optind++], NULL); + memory_limit = get_suffixed_size(argv[optind++]); continue; } if (!strcmp(longopt, "stack-size")) { @@ -392,7 +418,7 @@ int main(int argc, char **argv) fprintf(stderr, "expecting stack size"); exit(1); } - stack_size = (size_t)strtod(argv[optind++], NULL); + stack_size = get_suffixed_size(argv[optind++]); continue; } if (opt) { |