mirror of
https://github.com/bellard/quickjs.git
synced 2025-05-15 10:45:02 +08:00
qjs: allow SI suffixes in memory sizes - set default stack size to 1 MB
This commit is contained in:
parent
c805d4f784
commit
ec83bd2098
34
qjs.c
34
qjs.c
@ -257,6 +257,32 @@ static const JSMallocFunctions trace_mf = {
|
|||||||
js_trace_malloc_usable_size,
|
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"
|
#define PROG_NAME "qjs"
|
||||||
|
|
||||||
void help(void)
|
void help(void)
|
||||||
@ -272,8 +298,8 @@ void help(void)
|
|||||||
" --std make 'std' and 'os' available to the loaded script\n"
|
" --std make 'std' and 'os' available to the loaded script\n"
|
||||||
"-T --trace trace memory allocation\n"
|
"-T --trace trace memory allocation\n"
|
||||||
"-d --dump dump the memory usage stats\n"
|
"-d --dump dump the memory usage stats\n"
|
||||||
" --memory-limit n limit the memory usage 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\n"
|
" --stack-size n limit the stack size to 'n' bytes (SI suffixes allowed)\n"
|
||||||
" --no-unhandled-rejection ignore unhandled promise rejections\n"
|
" --no-unhandled-rejection ignore unhandled promise rejections\n"
|
||||||
"-q --quit just instantiate the interpreter and quit\n");
|
"-q --quit just instantiate the interpreter and quit\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -384,7 +410,7 @@ int main(int argc, char **argv)
|
|||||||
fprintf(stderr, "expecting memory limit");
|
fprintf(stderr, "expecting memory limit");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
memory_limit = (size_t)strtod(argv[optind++], NULL);
|
memory_limit = get_suffixed_size(argv[optind++]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!strcmp(longopt, "stack-size")) {
|
if (!strcmp(longopt, "stack-size")) {
|
||||||
@ -392,7 +418,7 @@ int main(int argc, char **argv)
|
|||||||
fprintf(stderr, "expecting stack size");
|
fprintf(stderr, "expecting stack size");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
stack_size = (size_t)strtod(argv[optind++], NULL);
|
stack_size = get_suffixed_size(argv[optind++]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (opt) {
|
if (opt) {
|
||||||
|
@ -322,7 +322,9 @@ static inline JSValue __JS_NewShortBigInt(JSContext *ctx, int64_t d)
|
|||||||
#define JS_PROP_NO_ADD (1 << 16) /* internal use */
|
#define JS_PROP_NO_ADD (1 << 16) /* internal use */
|
||||||
#define JS_PROP_NO_EXOTIC (1 << 17) /* internal use */
|
#define JS_PROP_NO_EXOTIC (1 << 17) /* internal use */
|
||||||
|
|
||||||
#define JS_DEFAULT_STACK_SIZE (256 * 1024)
|
#ifndef JS_DEFAULT_STACK_SIZE
|
||||||
|
#define JS_DEFAULT_STACK_SIZE (1024 * 1024)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* JS_Eval() flags */
|
/* JS_Eval() flags */
|
||||||
#define JS_EVAL_TYPE_GLOBAL (0 << 0) /* global code (default) */
|
#define JS_EVAL_TYPE_GLOBAL (0 << 0) /* global code (default) */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user