History

count alloc pressure better and display it with (vm-stats)

Sigrid Solveig Haflínudóttir committed 10 months ago

Commit c9dfea01 parent 8ba2cfd3 files · +9 −3Browse files

Showing the changes to src (3 of 3 files). Show all

Unified · Split

3 files
  1. src/cvalues.c +7 −3
  2. src/htable.c +1 −0
  3. src/sl.c +1 −0
src/cvalues.c+7−3
@@ -128,11 +128,11 @@ cvalue_(const sl_type *type, usize sz, bool nofinalize) · 127 unmodified lines
128 void *data = MEM_ALLOC(sz);128 void *data = MEM_ALLOC(sz);
129 if(sl_unlikely(data == nil))129 if(sl_unlikely(data == nil))
130 cthrow(lerrorf(sl_errmem, "no memory for a cv"), type);130 cthrow(lerrorf(sl_errmem, "no memory for a cv"), type);
131 slvm.malloc_pressure += sz;
131 pcv = alloc_words(CVALUE_NWORDS);132 pcv = alloc_words(CVALUE_NWORDS);
132 pcv->type = type;133 pcv->type = type;
133 pcv->data = data;134 pcv->data = data;
134 cv_autorelease(pcv);135 cv_autorelease(pcv);
135 slvm.malloc_pressure += sz;
136 }136 }
137 if(str){137 if(str){
138 ((char*)pcv->data)[--sz] = '\0';138 ((char*)pcv->data)[--sz] = '\0';
@@ -212,6 +212,7 @@ cv_pin(sl_cv *cv) · 73 unmodified lines
212 void *data = MEM_ALLOC(sz);212 void *data = MEM_ALLOC(sz);
213 if(sl_unlikely(data == nil))213 if(sl_unlikely(data == nil))
214 cthrow(lerrorf(sl_errmem, "no memory to pin a cv"), cv);214 cthrow(lerrorf(sl_errmem, "no memory to pin a cv"), cv);
215 slvm.malloc_pressure += sz;
215 memcpy(data, cv_data(cv), sz);216 memcpy(data, cv_data(cv), sz);
216 cv->data = data;217 cv->data = data;
217 cv_autorelease(cv);218 cv_autorelease(cv);
@@ -789,8 +790,11 @@ cvalue_copy(sl_v v) · 571 unmodified lines
789 usize len = cv_len(cv) + (cv_isstr(cv) ? 1 : 0);790 usize len = cv_len(cv) + (cv_isstr(cv) ? 1 : 0);
790 bool inlined = isinlined(cv);791 bool inlined = isinlined(cv);
791 void *data = nil;792 void *data = nil;
792 if(!inlined && sl_unlikely((data = MEM_ALLOC(len)) == nil))793 if(!inlined){
793 cthrow(lerrorf(sl_errmem, "no memory for a cv copy"), v);794 if(sl_unlikely((data = MEM_ALLOC(len)) == nil))
795 cthrow(lerrorf(sl_errmem, "no memory for a cv copy"), v);
796 slvm.malloc_pressure += len;
797 }
794 798
795 PUSH(v);799 PUSH(v);
796 sl_cv *ncv = alloc_words(nw);800 sl_cv *ncv = alloc_words(nw);
src/htable.c+1−0
@@ -18,6 +18,7 @@ htable_new(sl_htable *h, usize size) · 17 unmodified lines
18 size *= 2; // aim for 50% occupancy18 size *= 2; // aim for 50% occupancy
19 if((h->table = MEM_ALLOC(size * sizeof(*h->table))) == nil)19 if((h->table = MEM_ALLOC(size * sizeof(*h->table))) == nil)
20 return nil;20 return nil;
21 slvm.malloc_pressure += size * sizeof(*h->table);
21 }22 }
22 h->size = size;23 h->size = size;
23 h->i = 0;24 h->i = 0;
src/sl.c+1−0
@@ -1364,6 +1364,7 @@ BUILTIN("vm-stats", vm_stats) · 1363 unmodified lines
1364 ios_printf(io, "heap total %10"PRIuPTR" bytes\n", slvm.heapsize);1364 ios_printf(io, "heap total %10"PRIuPTR" bytes\n", slvm.heapsize);
1365 ios_printf(io, "heap free %10"PRIuPTR" bytes\n", (uintptr)(slvm.lim-slvm.curheap));1365 ios_printf(io, "heap free %10"PRIuPTR" bytes\n", (uintptr)(slvm.lim-slvm.curheap));
1366 ios_printf(io, "heap used %10"PRIuPTR" bytes\n", (uintptr)(slvm.curheap-slvm.fromspace));1366 ios_printf(io, "heap used %10"PRIuPTR" bytes\n", (uintptr)(slvm.curheap-slvm.fromspace));
1367 ios_printf(io, "alloc pressure %10"PRIuPTR" bytes\n", (uintptr)slvm.malloc_pressure);
1367 ios_printf(io, "stack %10"PRIu64" bytes\n", (u64int)sl.nstack*sizeof(sl_v));1368 ios_printf(io, "stack %10"PRIu64" bytes\n", (u64int)sl.nstack*sizeof(sl_v));
1368 ios_printf(io, "finalizers %10"PRIu32"\n", (u32int)slvm.nfinalizers);1369 ios_printf(io, "finalizers %10"PRIu32"\n", (u32int)slvm.nfinalizers);
1369 ios_printf(io, "max finalizers %10"PRIu32"\n", (u32int)slvm.maxfinalizers);1370 ios_printf(io, "max finalizers %10"PRIu32"\n", (u32int)slvm.maxfinalizers);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t