Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
GHC
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tobias Decking
GHC
Commits
eb465927
Commit
eb465927
authored
Apr 14, 2019
by
Ben Gamari
🐢
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
NonMoving: Allocate mark queues in larger block groups
parent
9ef76b05
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
4 deletions
+7
-4
rts/sm/NonMovingMark.c
rts/sm/NonMovingMark.c
+3
-3
rts/sm/NonMovingMark.h
rts/sm/NonMovingMark.h
+4
-1
No files found.
rts/sm/NonMovingMark.c
View file @
eb465927
...
...
@@ -361,7 +361,7 @@ push (MarkQueue *q, const MarkQueueEnt *ent)
}
else
{
// allocate a fresh block.
ACQUIRE_SM_LOCK
;
bdescr
*
bd
=
allocGroup
(
1
);
bdescr
*
bd
=
allocGroup
(
MARK_QUEUE_BLOCKS
);
bd
->
link
=
q
->
blocks
;
q
->
blocks
=
bd
;
q
->
top
=
(
MarkQueueBlock
*
)
bd
->
start
;
...
...
@@ -392,7 +392,7 @@ markQueuePushClosureGC (MarkQueue *q, StgClosure *p)
// Yes, this block is full.
// allocate a fresh block.
ACQUIRE_SPIN_LOCK
(
&
gc_alloc_block_sync
);
bdescr
*
bd
=
allocGroup
(
1
);
bdescr
*
bd
=
allocGroup
(
MARK_QUEUE_BLOCKS
);
bd
->
link
=
q
->
blocks
;
q
->
blocks
=
bd
;
q
->
top
=
(
MarkQueueBlock
*
)
bd
->
start
;
...
...
@@ -742,7 +742,7 @@ again:
/* Must hold sm_mutex. */
static
void
init_mark_queue_
(
MarkQueue
*
queue
)
{
bdescr
*
bd
=
allocGroup
(
1
);
bdescr
*
bd
=
allocGroup
(
MARK_QUEUE_BLOCKS
);
queue
->
blocks
=
bd
;
queue
->
top
=
(
MarkQueueBlock
*
)
bd
->
start
;
queue
->
top
->
head
=
0
;
...
...
rts/sm/NonMovingMark.h
View file @
eb465927
...
...
@@ -93,8 +93,11 @@ typedef struct {
MarkQueue
queue
;
}
UpdRemSet
;
// Number of blocks to allocate for a mark queue
#define MARK_QUEUE_BLOCKS 16
// The length of MarkQueueBlock.entries
#define MARK_QUEUE_BLOCK_ENTRIES ((BLOCK_SIZE - sizeof(MarkQueueBlock)) / sizeof(MarkQueueEnt))
#define MARK_QUEUE_BLOCK_ENTRIES ((
MARK_QUEUE_BLOCKS *
BLOCK_SIZE - sizeof(MarkQueueBlock)) / sizeof(MarkQueueEnt))
extern
bdescr
*
nonmoving_large_objects
,
*
nonmoving_marked_large_objects
;
extern
memcount
n_nonmoving_large_blocks
,
n_nonmoving_marked_large_blocks
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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