Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
a0ca27ac
Commit
a0ca27ac
authored
Dec 04, 2009
by
Simon Marlow
Browse files
Correction to the allocation stats following earlier refactoring
parent
5f9075da
Changes
5
Hide whitespace changes
Inline
Side-by-side
includes/Cmm.h
View file @
a0ca27ac
...
...
@@ -385,7 +385,7 @@
// allocate() - this includes many of the primops.
#define MAYBE_GC(liveness,reentry) \
if (bdescr_link(CurrentNursery) == NULL || \
generation_n_large_blocks(W_[g0]) >= CInt[alloc_blocks_lim]) { \
generation_n_
new_
large_blocks(W_[g0]) >= CInt[alloc_blocks_lim]) { \
R9 = liveness; \
R10 = reentry; \
HpAlloc = 0; \
...
...
includes/mkDerivedConstants.c
View file @
a0ca27ac
...
...
@@ -249,7 +249,7 @@ main(int argc, char *argv[])
struct_size
(
generation
);
struct_field
(
generation
,
mut_list
);
struct_field
(
generation
,
n_large_blocks
);
struct_field
(
generation
,
n_
new_
large_blocks
);
struct_size
(
CostCentreStack
);
struct_field
(
CostCentreStack
,
ccsID
);
...
...
includes/rts/storage/GC.h
View file @
a0ca27ac
...
...
@@ -67,10 +67,11 @@ typedef struct generation_ {
bdescr
*
large_objects
;
// large objects (doubly linked)
unsigned
int
n_large_blocks
;
// no. of blocks used by large objs
unsigned
int
n_new_large_blocks
;
// count freshly allocated large objects
unsigned
int
max_blocks
;
// max blocks
bdescr
*
mut_list
;
// mut objects in this gen (not G0)
StgTSO
*
threads
;
// threads in this gen
// linked via global_link
struct
generation_
*
to
;
// destination gen for live objects
...
...
rts/sm/GC.c
View file @
a0ca27ac
...
...
@@ -649,6 +649,7 @@ SET_GCT(gc_threads[0]);
freeChain
(
gen
->
large_objects
);
gen
->
large_objects
=
gen
->
scavenged_large_objects
;
gen
->
n_large_blocks
=
gen
->
n_scavenged_large_blocks
;
gen
->
n_new_large_blocks
=
0
;
ASSERT
(
countBlocks
(
gen
->
large_objects
)
==
gen
->
n_large_blocks
);
}
else
// for generations > N
...
...
rts/sm/Storage.c
View file @
a0ca27ac
...
...
@@ -79,6 +79,7 @@ initGeneration (generation *gen, int g)
gen
->
n_old_blocks
=
0
;
gen
->
large_objects
=
NULL
;
gen
->
n_large_blocks
=
0
;
gen
->
n_new_large_blocks
=
0
;
gen
->
mut_list
=
allocBlock
();
gen
->
scavenged_large_objects
=
NULL
;
gen
->
n_scavenged_large_blocks
=
0
;
...
...
@@ -567,6 +568,7 @@ allocate (Capability *cap, lnat n)
bd
=
allocGroup
(
req_blocks
);
dbl_link_onto
(
bd
,
&
g0
->
large_objects
);
g0
->
n_large_blocks
+=
bd
->
blocks
;
// might be larger than req_blocks
g0
->
n_new_large_blocks
+=
bd
->
blocks
;
RELEASE_SM_LOCK
;
initBdescr
(
bd
,
g0
,
g0
);
bd
->
flags
=
BF_LARGE
;
...
...
@@ -666,6 +668,7 @@ allocatePinned (Capability *cap, lnat n)
cap
->
pinned_object_block
=
bd
=
allocBlock
();
dbl_link_onto
(
bd
,
&
g0
->
large_objects
);
g0
->
n_large_blocks
++
;
g0
->
n_new_large_blocks
++
;
RELEASE_SM_LOCK
;
initBdescr
(
bd
,
g0
,
g0
);
bd
->
flags
=
BF_PINNED
|
BF_LARGE
;
...
...
@@ -784,6 +787,8 @@ calcAllocated( void )
}
}
allocated
+=
g0
->
n_new_large_blocks
*
BLOCK_SIZE_W
;
total_allocated
+=
allocated
;
return
allocated
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment