Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: Source/platform/Timer.cpp

Issue 1120943002: Various ASan exemptions to allow Oilpan pre-sweep poisoning of unmarkeds. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * Copyright (C) 2009 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 TimerHeapReference& operator=(TimerHeapReference); 70 TimerHeapReference& operator=(TimerHeapReference);
71 private: 71 private:
72 TimerBase*& m_reference; 72 TimerBase*& m_reference;
73 }; 73 };
74 74
75 inline TimerHeapReference TimerHeapPointer::operator*() const 75 inline TimerHeapReference TimerHeapPointer::operator*() const
76 { 76 {
77 return *m_pointer; 77 return *m_pointer;
78 } 78 }
79 79
80 NO_SANITIZE_ADDRESS
80 inline TimerHeapReference& TimerHeapReference::operator=(TimerBase* timer) 81 inline TimerHeapReference& TimerHeapReference::operator=(TimerBase* timer)
81 { 82 {
82 m_reference = timer; 83 m_reference = timer;
83 Vector<TimerBase*>& heap = timer->timerHeap(); 84 Vector<TimerBase*>& heap = timer->timerHeap();
84 if (&m_reference >= heap.data() && &m_reference < heap.data() + heap.size()) 85 if (&m_reference >= heap.data() && &m_reference < heap.data() + heap.size())
85 timer->m_heapIndex = &m_reference - heap.data(); 86 timer->m_heapIndex = &m_reference - heap.data();
86 return *this; 87 return *this;
87 } 88 }
88 89
90 NO_SANITIZE_ADDRESS
89 inline TimerHeapReference& TimerHeapReference::operator=(TimerHeapReference b) 91 inline TimerHeapReference& TimerHeapReference::operator=(TimerHeapReference b)
90 { 92 {
91 TimerBase* timer = b; 93 TimerBase* timer = b;
92 return *this = timer; 94 return *this = timer;
93 } 95 }
94 96
95 inline void swap(TimerHeapReference a, TimerHeapReference b) 97 inline void swap(TimerHeapReference a, TimerHeapReference b)
96 { 98 {
97 TimerBase* timerA = a; 99 TimerBase* timerA = a;
98 TimerBase* timerB = b; 100 TimerBase* timerB = b;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 inline TimerHeapIterator operator-(TimerHeapIterator a, size_t b) { return Timer HeapIterator(a.m_pointer - b); } 163 inline TimerHeapIterator operator-(TimerHeapIterator a, size_t b) { return Timer HeapIterator(a.m_pointer - b); }
162 inline ptrdiff_t operator-(TimerHeapIterator a, TimerHeapIterator b) { return a. m_pointer - b.m_pointer; } 164 inline ptrdiff_t operator-(TimerHeapIterator a, TimerHeapIterator b) { return a. m_pointer - b.m_pointer; }
163 165
164 // ---------------- 166 // ----------------
165 167
166 class TimerHeapLessThanFunction { 168 class TimerHeapLessThanFunction {
167 public: 169 public:
168 bool operator()(const TimerBase*, const TimerBase*) const; 170 bool operator()(const TimerBase*, const TimerBase*) const;
169 }; 171 };
170 172
173 NO_SANITIZE_ADDRESS
171 inline bool TimerHeapLessThanFunction::operator()(const TimerBase* a, const Time rBase* b) const 174 inline bool TimerHeapLessThanFunction::operator()(const TimerBase* a, const Time rBase* b) const
172 { 175 {
173 // The comparisons below are "backwards" because the heap puts the largest 176 // The comparisons below are "backwards" because the heap puts the largest
174 // element first and we want the lowest time to be the first one in the heap . 177 // element first and we want the lowest time to be the first one in the heap .
175 double aFireTime = a->m_nextFireTime; 178 double aFireTime = a->m_nextFireTime;
176 double bFireTime = b->m_nextFireTime; 179 double bFireTime = b->m_nextFireTime;
177 if (bFireTime != aFireTime) 180 if (bFireTime != aFireTime)
178 return bFireTime < aFireTime; 181 return bFireTime < aFireTime;
179 182
180 // We need to look at the difference of the insertion orders instead of comp aring the two 183 // We need to look at the difference of the insertion orders instead of comp aring the two
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 } 286 }
284 287
285 inline void TimerBase::heapInsert() 288 inline void TimerBase::heapInsert()
286 { 289 {
287 ASSERT(!inHeap()); 290 ASSERT(!inHeap());
288 timerHeap().append(this); 291 timerHeap().append(this);
289 m_heapIndex = timerHeap().size() - 1; 292 m_heapIndex = timerHeap().size() - 1;
290 heapDecreaseKey(); 293 heapDecreaseKey();
291 } 294 }
292 295
296 NO_SANITIZE_ADDRESS
293 inline void TimerBase::heapPop() 297 inline void TimerBase::heapPop()
294 { 298 {
295 // Temporarily force this timer to have the minimum key so we can pop it. 299 // Temporarily force this timer to have the minimum key so we can pop it.
296 double fireTime = m_nextFireTime; 300 double fireTime = m_nextFireTime;
297 m_nextFireTime = -std::numeric_limits<double>::infinity(); 301 m_nextFireTime = -std::numeric_limits<double>::infinity();
298 heapDecreaseKey(); 302 heapDecreaseKey();
299 heapPopMin(); 303 heapPopMin();
300 m_nextFireTime = fireTime; 304 m_nextFireTime = fireTime;
301 } 305 }
302 306
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 setNextFireTime(m_unalignedNextFireTime); 404 setNextFireTime(m_unalignedNextFireTime);
401 } 405 }
402 406
403 double TimerBase::nextUnalignedFireInterval() const 407 double TimerBase::nextUnalignedFireInterval() const
404 { 408 {
405 ASSERT(isActive()); 409 ASSERT(isActive());
406 return std::max(m_unalignedNextFireTime - monotonicallyIncreasingTime(), 0.0 ); 410 return std::max(m_unalignedNextFireTime - monotonicallyIncreasingTime(), 0.0 );
407 } 411 }
408 412
409 } // namespace blink 413 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698