Bug 1502207 Part 1 - Specify the address of atomic values when recording ordered atomic accesses, r=froydnj.

--HG--
extra : rebase_source : 3260b427eeac3cc44d6e74df1a6da366da85aeda
This commit is contained in:
Brian Hackett 2018-10-25 11:41:04 -10:00
parent 5f7f645601
commit 55571f2bbf
2 changed files with 7 additions and 6 deletions

View File

@ -42,7 +42,7 @@ namespace recordreplay {
Macro(DefineRecordReplayControlObject, bool, (JSContext* aCx, JSObject* aObj), (aCx, aObj))
#define FOR_EACH_INTERFACE_VOID(Macro) \
Macro(InternalBeginOrderedAtomicAccess, (), ()) \
Macro(InternalBeginOrderedAtomicAccess, (const void* aValue), (aValue)) \
Macro(InternalEndOrderedAtomicAccess, (), ()) \
Macro(InternalBeginPassThroughThreadEvents, (), ()) \
Macro(InternalEndPassThroughThreadEvents, (), ()) \

View File

@ -103,15 +103,16 @@ static inline bool IsMiddleman() { return false; }
// Mark a region which occurs atomically wrt the recording. No two threads can
// be in an atomic region at once, and the order in which atomic sections are
// executed by the various threads will be the same in the replay as in the
// recording. These calls have no effect when not recording/replaying.
static inline void BeginOrderedAtomicAccess();
// executed by the various threads for the same aValue will be the same in the
// replay as in the recording. These calls have no effect when not recording or
// replaying.
static inline void BeginOrderedAtomicAccess(const void* aValue);
static inline void EndOrderedAtomicAccess();
// RAII class for an atomic access.
struct MOZ_RAII AutoOrderedAtomicAccess
{
AutoOrderedAtomicAccess() { BeginOrderedAtomicAccess(); }
explicit AutoOrderedAtomicAccess(const void* aValue) { BeginOrderedAtomicAccess(aValue); }
~AutoOrderedAtomicAccess() { EndOrderedAtomicAccess(); }
};
@ -430,7 +431,7 @@ NoteContentParse16(const void* aToken,
#endif
MOZ_MakeRecordReplayWrapperVoid(BeginOrderedAtomicAccess, (), ())
MOZ_MakeRecordReplayWrapperVoid(BeginOrderedAtomicAccess, (const void* aValue), (aValue))
MOZ_MakeRecordReplayWrapperVoid(EndOrderedAtomicAccess, (), ())
MOZ_MakeRecordReplayWrapperVoid(BeginPassThroughThreadEvents, (), ())
MOZ_MakeRecordReplayWrapperVoid(EndPassThroughThreadEvents, (), ())