Merge pull request #367 from kalvdans/zero-allocations
Add initialization of seginfo sorted and trigger_ephemerons fields original commit: d677c0d03b734b3cf5166f2cd6b97effd64667ec
This commit is contained in:
commit
03a33fb4fc
2
LOG
2
LOG
|
@ -1025,3 +1025,5 @@
|
||||||
where the cp register copy in the thread context could be changed
|
where the cp register copy in the thread context could be changed
|
||||||
in the callable prep before S_call_help gets it
|
in the callable prep before S_call_help gets it
|
||||||
cpnanopass.ss, x86_64.ss, x86.ss, foreign2.c, foreign.ms
|
cpnanopass.ss, x86_64.ss, x86.ss, foreign2.c, foreign.ms
|
||||||
|
- added initialization of seginfo sorted and trigger_ephemerons fields.
|
||||||
|
segment.c
|
||||||
|
|
|
@ -228,7 +228,9 @@ static void initialize_seginfo(seginfo *si, ISPC s, IGEN g) {
|
||||||
|
|
||||||
si->space = s;
|
si->space = s;
|
||||||
si->generation = g;
|
si->generation = g;
|
||||||
|
si->sorted = 0;
|
||||||
si->min_dirty_byte = 0xff;
|
si->min_dirty_byte = 0xff;
|
||||||
|
si->trigger_ephemerons = NULL;
|
||||||
for (d = 0; d < cards_per_segment; d += sizeof(ptr)) {
|
for (d = 0; d < cards_per_segment; d += sizeof(ptr)) {
|
||||||
iptr *dp = (iptr *)(si->dirty_bytes + d);
|
iptr *dp = (iptr *)(si->dirty_bytes + d);
|
||||||
/* fill sizeof(iptr) bytes at a time with 0xff */
|
/* fill sizeof(iptr) bytes at a time with 0xff */
|
||||||
|
@ -261,7 +263,6 @@ iptr S_find_segments(s, g, n) ISPC s; IGEN g; iptr n; {
|
||||||
|
|
||||||
chunk->nused_segs += 1;
|
chunk->nused_segs += 1;
|
||||||
initialize_seginfo(si, s, g);
|
initialize_seginfo(si, s, g);
|
||||||
si->sorted = 0;
|
|
||||||
si->next = S_G.occupied_segments[s][g];
|
si->next = S_G.occupied_segments[s][g];
|
||||||
S_G.occupied_segments[s][g] = si;
|
S_G.occupied_segments[s][g] = si;
|
||||||
S_G.number_of_empty_segments -= 1;
|
S_G.number_of_empty_segments -= 1;
|
||||||
|
@ -300,7 +301,6 @@ iptr S_find_segments(s, g, n) ISPC s; IGEN g; iptr n; {
|
||||||
S_G.occupied_segments[s][g] = si;
|
S_G.occupied_segments[s][g] = si;
|
||||||
for (j = n, nextsi = si; j > 0; j -= 1, nextsi = nextsi->next) {
|
for (j = n, nextsi = si; j > 0; j -= 1, nextsi = nextsi->next) {
|
||||||
initialize_seginfo(nextsi, s, g);
|
initialize_seginfo(nextsi, s, g);
|
||||||
nextsi->sorted = 0;
|
|
||||||
}
|
}
|
||||||
S_G.number_of_empty_segments -= n;
|
S_G.number_of_empty_segments -= n;
|
||||||
return si->number;
|
return si->number;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user