continue;
int order = 0;
- // Read-only access to old data always comes first
- if(flags1==System::READ_OLD)
- order = -1;
- else if(flags2==System::READ_OLD)
- order = 1;
- // Read-only access to fresh data always comes last
- else if(flags1==System::READ_FRESH)
+ // Read-only access to fresh data comes after any writes
+ if(flags1==System::READ_FRESH && (flags2&System::WRITE))
order = 1;
- else if(flags2==System::READ_FRESH)
+ else if(flags2==System::READ_FRESH && (flags1&System::WRITE))
order = -1;
+ // Other read-only access situations are not ordered
+ else if(!(flags1&System::WRITE) || !(flags2&System::WRITE))
+ order = 0;
// Chained updates always come after non-chained writes
else if(flags1==System::CHAINED_UPDATE && (flags2==System::WRITE || flags2==System::UPDATE))
order = 1;