|
38 | 38 | #include "cutils.h"
|
39 | 39 | #include "quickjs-libc.h"
|
40 | 40 |
|
| 41 | +#ifdef QJS_USE_MIMALLOC |
| 42 | +#include <mimalloc.h> |
| 43 | +#endif |
| 44 | + |
41 | 45 | extern const uint8_t qjsc_repl[];
|
42 | 46 | extern const uint32_t qjsc_repl_size;
|
43 | 47 |
|
@@ -230,7 +234,6 @@ static void *js_trace_calloc(void *opaque, size_t count, size_t size)
|
230 | 234 |
|
231 | 235 | static void *js_trace_malloc(void *opaque, size_t size)
|
232 | 236 | {
|
233 |
| - (void) opaque; |
234 | 237 | void *ptr;
|
235 | 238 | ptr = malloc(size);
|
236 | 239 | js_trace_malloc_printf(opaque, "A %zd -> %p\n", size, ptr);
|
@@ -261,6 +264,38 @@ static const JSMallocFunctions trace_mf = {
|
261 | 264 | js__malloc_usable_size
|
262 | 265 | };
|
263 | 266 |
|
| 267 | +#ifdef QJS_USE_MIMALLOC |
| 268 | +static void *js_mi_calloc(void *opaque, size_t count, size_t size) |
| 269 | +{ |
| 270 | + return mi_calloc(count, size); |
| 271 | +} |
| 272 | + |
| 273 | +static void *js_mi_malloc(void *opaque, size_t size) |
| 274 | +{ |
| 275 | + return mi_malloc(size); |
| 276 | +} |
| 277 | + |
| 278 | +static void js_mi_free(void *opaque, void *ptr) |
| 279 | +{ |
| 280 | + if (!ptr) |
| 281 | + return; |
| 282 | + mi_free(ptr); |
| 283 | +} |
| 284 | + |
| 285 | +static void *js_mi_realloc(void *opaque, void *ptr, size_t size) |
| 286 | +{ |
| 287 | + return mi_realloc(ptr, size); |
| 288 | +} |
| 289 | + |
| 290 | +static const JSMallocFunctions mi_mf = { |
| 291 | + js_mi_calloc, |
| 292 | + js_mi_malloc, |
| 293 | + js_mi_free, |
| 294 | + js_mi_realloc, |
| 295 | + mi_malloc_usable_size |
| 296 | +}; |
| 297 | +#endif |
| 298 | + |
264 | 299 | #define PROG_NAME "qjs"
|
265 | 300 |
|
266 | 301 | void help(void)
|
@@ -438,7 +473,11 @@ int main(int argc, char **argv)
|
438 | 473 | js_trace_malloc_init(&trace_data);
|
439 | 474 | rt = JS_NewRuntime2(&trace_mf, &trace_data);
|
440 | 475 | } else {
|
| 476 | +#ifdef QJS_USE_MIMALLOC |
| 477 | + rt = JS_NewRuntime2(&mi_mf, NULL); |
| 478 | +#else |
441 | 479 | rt = JS_NewRuntime();
|
| 480 | +#endif |
442 | 481 | }
|
443 | 482 | if (!rt) {
|
444 | 483 | fprintf(stderr, "qjs: cannot allocate JS runtime\n");
|
|
0 commit comments