Chromium Code Reviews| 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 |