summaryrefslogtreecommitdiff
path: root/rts/win32
diff options
context:
space:
mode:
authorAndreas Klebinger <klebinger.andreas@gmx.at>2020-03-05 17:55:43 +0100
committerBen Gamari <ben@smart-cactus.org>2020-07-15 16:41:02 -0400
commit750ebaeec06d7ee118abfbb29142c12fb31730cc (patch)
tree880d05d448908fb5cced1d8f2d417982119d643e /rts/win32
parent6aefdf62b767b7828698c3ec5bf6a15e6e20eddb (diff)
downloadhaskell-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')
-rw-r--r--rts/win32/libHSbase.def3
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