with
out_of_line = True
+primop ReadTVarIOOp "readTVarIO#" GenPrimOp
+ TVar# s a
+ -> State# s -> (# State# s, a #)
+ {Read contents of {\tt TVar\#} outside an STM transaction}
+ with
+ out_of_line = True
+
primop WriteTVarOp "writeTVar#" GenPrimOp
TVar# s a
-> a
RTS_FUN(atomicallyzh_fast);
RTS_FUN(newTVarzh_fast);
RTS_FUN(readTVarzh_fast);
+RTS_FUN(readTVarIOzh_fast);
RTS_FUN(writeTVarzh_fast);
RTS_FUN(checkzh_fast);
closure_field(StgTVarWatchQueue, next_queue_entry);
closure_field(StgTVarWatchQueue, prev_queue_entry);
+ closure_field(StgTVar, current_value);
+
closure_size(StgWeak);
closure_field(StgWeak,link);
closure_field(StgWeak,key);
SymX(raisezh_fast) \
SymX(raiseIOzh_fast) \
SymX(readTVarzh_fast) \
+ SymX(readTVarIOzh_fast) \
SymX(remIntegerzh_fast) \
SymX(resetNonBlockingFd) \
SymX(resumeThread) \
RET_P(result);
}
+readTVarIOzh_fast
+{
+ W_ result;
+
+again:
+ result = StgTVar_current_value(R1);
+ if (%INFO_PTR(result) == stg_TREC_HEADER_info) {
+ goto again;
+ }
+ RET_P(result);
+}
writeTVarzh_fast
{