OLD | NEW |
---|---|
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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
133 TRACE_EVENT2("blink", "ThreadTimers::sharedTimerFiredInternal", | 133 TRACE_EVENT2("blink", "ThreadTimers::sharedTimerFiredInternal", |
134 "src_file", timer.location().fileName(), | 134 "src_file", timer.location().fileName(), |
135 "src_func", timer.location().functionName()); | 135 "src_func", timer.location().functionName()); |
136 | 136 |
137 // Once the timer has been fired, it may be deleted, so do nothing else with it after this point. | 137 // Once the timer has been fired, it may be deleted, so do nothing else with it after this point. |
138 timer.fired(); | 138 timer.fired(); |
139 | 139 |
140 // Catch the case where the timer asked timers to fire in a nested event loop, or we are over time limit. | 140 // Catch the case where the timer asked timers to fire in a nested event loop, or we are over time limit. |
141 if (!m_firingTimers || timeToQuit < monotonicallyIncreasingTime()) | 141 if (!m_firingTimers || timeToQuit < monotonicallyIncreasingTime()) |
142 break; | 142 break; |
143 | |
144 ThreadState::current()->safePoint(ThreadState::NoHeapPointersOnStack); | |
haraken
2014/05/28 11:23:46
The underlying issue is that a full GC is not invo
| |
143 } | 145 } |
144 | 146 |
145 m_firingTimers = false; | 147 m_firingTimers = false; |
146 | 148 |
147 updateSharedTimer(); | 149 updateSharedTimer(); |
148 } | 150 } |
149 | 151 |
150 void ThreadTimers::fireTimersInNestedEventLoop() | 152 void ThreadTimers::fireTimersInNestedEventLoop() |
151 { | 153 { |
152 // Reset the reentrancy guard so the timers can fire again. | 154 // Reset the reentrancy guard so the timers can fire again. |
153 m_firingTimers = false; | 155 m_firingTimers = false; |
154 updateSharedTimer(); | 156 updateSharedTimer(); |
155 } | 157 } |
156 | 158 |
157 } // namespace WebCore | 159 } // namespace WebCore |
158 | 160 |
OLD | NEW |