Home | History | Annotate | Download | only in rtl

Lines Matching refs:Shadow

212   friend class Shadow;
220 // Shadow (from most significant bit):
228 class Shadow : public FastState {
230 explicit Shadow(u64 x)
234 explicit Shadow(const FastState &s)
270 static inline bool TidsAreEqual(const Shadow s1, const Shadow s2) {
276 static inline bool Addr0AndSizeAreEqual(const Shadow s1, const Shadow s2) {
281 static inline bool TwoRangesIntersect(Shadow s1, Shadow s2,
299 // (mapped to a single shadow "cell"). Now consider that we write to the bools
301 // W/o offsetting each access will have to scan 4 shadow values at average
302 // to find the corresponding shadow value for the bool.
303 // With offsetting we start scanning shadow with the offset so that
304 // each access hits necessary shadow straight off (at least in an expected
309 // from a single thread won't need to scan all 8 shadow values.
319 // When the memory is freed (or otherwise unaccessible) we write to the shadow
322 // as msb of tid. So any access races with shadow with freed bit set
373 static bool TwoRangesIntersectSLOW(const Shadow s1, const Shadow s2) {
389 // action. It allows to reduce number of shadow state updates.
409 // C/C++ uses embed shadow stack of fixed size.
412 // Go uses satellite shadow stack with dynamic size.
554 void AddMemoryAccess(uptr addr, Shadow s, const StackTrace *stack,
632 u64 *shadow_mem, Shadow cur);