diff options
author | Andreas Klebinger <klebinger.andreas@gmx.at> | 2020-03-05 17:55:43 +0100 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2020-07-15 16:41:02 -0400 |
commit | 750ebaeec06d7ee118abfbb29142c12fb31730cc (patch) | |
tree | 880d05d448908fb5cced1d8f2d417982119d643e /rts/win32/libHSbase.def | |
parent | 6aefdf62b767b7828698c3ec5bf6a15e6e20eddb (diff) | |
download | haskell-750ebaeec06d7ee118abfbb29142c12fb31730cc.tar.gz |
winio: Clean up code surrounding IOPort primitives.
According to phyx these should only be read and written once per
object. Not neccesarily in that order.
To strengthen that guarantee the primitives will now throw an
exception if we violate this invariant.
As a consequence we can eliminate some code from their primops.
In particular code dealing with multiple queued readers/writers
now simply checks the invariant and throws an exception if it
was violated. That is in contrast to mvars which will do things
like wake up all readers, queue multi writers etc.
Diffstat (limited to 'rts/win32/libHSbase.def')
-rw-r--r-- | rts/win32/libHSbase.def | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/rts/win32/libHSbase.def b/rts/win32/libHSbase.def index fb705bbd9f..733fffb5df 100644 --- a/rts/win32/libHSbase.def +++ b/rts/win32/libHSbase.def @@ -43,7 +43,8 @@ EXPORTS base_GHCziIOziException_cannotCompactFunction_closure base_GHCziIOziException_cannotCompactPinned_closure base_GHCziIOziException_cannotCompactMutable_closure - + base_GHCziIOPort_doubleReadException_closure + base_ControlziExceptionziBase_absentSumFieldError_closure base_ControlziExceptionziBase_nonTermination_closure base_ControlziExceptionziBase_nestedAtomically_closure base_GHCziEventziThread_blockedOnBadFD_closure |