MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

grow heap when above 8mb

+40 -8
+1 -1
meson.build
··· 79 79 build_date = run_command('date', '+%Y-%m-%d', check: true).stdout().strip() 80 80 81 81 version_conf = configuration_data() 82 - version_conf.set('ANT_VERSION', '0.2.2.16') 82 + version_conf.set('ANT_VERSION', '0.2.2.17') 83 83 version_conf.set('ANT_GIT_HASH', git_hash) 84 84 version_conf.set('ANT_BUILD_DATE', build_date) 85 85
+24 -7
src/ant.c
··· 4931 4931 jsoff_t len = arr_length(js, arg); 4932 4932 for (jsoff_t i = 0; i < len; i++) { 4933 4933 jsval_t elem = arr_get(js, arg, i); 4934 - if (js->brk + sizeof(elem) > js->size) { *err_out = js_mkerr(js, "call oom"); return -1; } 4934 + if (js->brk + sizeof(elem) > js->size) { 4935 + if (!js_try_grow_memory(js, sizeof(elem))) { 4936 + *err_out = js_mkerr(js, "call oom"); 4937 + return -1; 4938 + } 4939 + } 4935 4940 js->size -= (jsoff_t) sizeof(elem); 4936 4941 memcpy(&js->mem[js->size], &elem, sizeof(elem)); 4937 4942 argc++; 4938 4943 } 4939 4944 } else { 4940 - if (js->brk + sizeof(arg) > js->size) { *err_out = js_mkerr(js, "call oom"); return -1; } 4945 + if (js->brk + sizeof(arg) > js->size) { 4946 + if (!js_try_grow_memory(js, sizeof(arg))) { 4947 + *err_out = js_mkerr(js, "call oom"); 4948 + return -1; 4949 + } 4950 + } 4941 4951 js->size -= (jsoff_t) sizeof(arg); 4942 4952 memcpy(&js->mem[js->size], &arg, sizeof(arg)); 4943 4953 argc++; ··· 6429 6439 else n++; 6430 6440 } 6431 6441 6442 + size_t out_len = 0; 6443 + size_t needed = sizeof(jsoff_t) + (n - part_start); 6444 + if (js->brk + needed > js->size) { 6445 + if (!js_try_grow_memory(js, needed)) { 6446 + return js_mkerr(js, "oom"); 6447 + } 6448 + } 6432 6449 uint8_t *out = &js->mem[js->brk + sizeof(jsoff_t)]; 6433 - size_t out_len = 0; 6434 - if (js->brk + sizeof(jsoff_t) + (n - part_start) > js->size) return js_mkerr(js, "oom"); 6435 6450 6436 6451 for (size_t i = part_start; i < n; i++) { 6437 6452 if (in[i] == '\\' && i + 1 < n) { ··· 6494 6509 6495 6510 static jsval_t js_str_literal(struct js *js) { 6496 6511 uint8_t *in = (uint8_t *) &js->code[js->toff]; 6497 - uint8_t *out = &js->mem[js->brk + sizeof(jsoff_t)]; 6498 6512 size_t n1 = 0, n2 = 0; 6499 - if (js->brk + sizeof(jsoff_t) + js->tlen > js->size) 6500 - return js_mkerr(js, "oom"); 6513 + size_t needed = sizeof(jsoff_t) + js->tlen; 6514 + if (js->brk + needed > js->size) { 6515 + if (!js_try_grow_memory(js, needed)) return js_mkerr(js, "oom"); 6516 + } 6517 + uint8_t *out = &js->mem[js->brk + sizeof(jsoff_t)]; 6501 6518 while (n2++ + 2 < js->tlen) { 6502 6519 if (in[n2] == '\\') { 6503 6520 if (in[n2 + 1] == in[0]) {
+15
tests/tight_loop_no_log.js
··· 1 + function Foo() { 2 + return { 3 + lookup: function (key) { 4 + return key; 5 + } 6 + }; 7 + } 8 + 9 + const foo = new Foo(); 10 + for (let i = 0; i < 40000; i = i + 1) { 11 + foo.lookup('a'); 12 + foo.lookup('b'); 13 + foo.lookup('c'); 14 + } 15 + console.log('Done!');