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
c8072f7b
Commit
c8072f7b
authored
Feb 06, 2009
by
Simon Marlow
Browse files
add debugging code and comments
parent
894864ea
Changes
1
Hide whitespace changes
Inline
Side-by-side
rts/parallel/WSDeque.c
View file @
c8072f7b
...
...
@@ -30,7 +30,11 @@
* are synchronised without a lock, based on a cas of the top
* position. One reader wins, the others return NULL for a failure.
*
* Both popBottom and steal also return NULL when the queue is empty.
* Both popWSDeque and stealWSDeque also return NULL when the queue is empty.
*
* Testing: see testsuite/tests/ghc-regress/rts/testwsdeque.c. If
* there's anything wrong with the deque implementation, this test
* will probably catch it.
*
* ---------------------------------------------------------------------------*/
...
...
@@ -140,6 +144,7 @@ popWSDeque (WSDeque *q)
}
removed
=
*
pos
;
if
(
currSize
>
0
)
{
/* no danger, still elements in buffer after b-- */
// debugBelch("popWSDeque: t=%ld b=%ld = %ld\n", t, b, removed);
return
removed
;
}
/* otherwise, has someone meanwhile stolen the same (last) element?
...
...
@@ -153,6 +158,8 @@ popWSDeque (WSDeque *q)
ASSERT_WSDEQUE_INVARIANTS
(
q
);
ASSERT
(
q
->
bottom
>=
q
->
top
);
// debugBelch("popWSDeque: t=%ld b=%ld = %ld\n", t, b, removed);
return
removed
;
}
...
...
@@ -176,7 +183,8 @@ stealWSDeque_ (WSDeque *q)
t
=
q
->
top
;
// NB. b and t are unsigned; we need a signed value for the test
// below.
// below, because it is possible that t > b during a
// concurrent popWSQueue() operation.
if
((
long
)
b
-
(
long
)
t
<=
0
)
{
return
NULL
;
/* already looks empty, abort */
}
...
...
@@ -193,6 +201,8 @@ stealWSDeque_ (WSDeque *q)
return
NULL
;
}
/* else: OK, top has been incremented by the cas call */
// debugBelch("stealWSDeque_: t=%d b=%d\n", t, b);
// Can't do this on someone else's spark pool:
// ASSERT_WSDEQUE_INVARIANTS(q);
...
...
@@ -211,6 +221,9 @@ stealWSDeque (WSDeque *q)
return
stolen
;
}
/* -----------------------------------------------------------------------------
* pushWSQueue
* -------------------------------------------------------------------------- */
#define DISCARD_NEW
...
...
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