OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 // m_firstPages. | 322 // m_firstPages. |
323 page->sweep(); | 323 page->sweep(); |
324 page->unlink(&m_firstUnsweptPage); | 324 page->unlink(&m_firstUnsweptPage); |
325 page->link(&m_firstPage); | 325 page->link(&m_firstPage); |
326 page->markAsSwept(); | 326 page->markAsSwept(); |
327 } | 327 } |
328 } | 328 } |
329 | 329 |
330 bool BaseHeap::lazySweepWithDeadline(double deadlineSeconds) | 330 bool BaseHeap::lazySweepWithDeadline(double deadlineSeconds) |
331 { | 331 { |
332 // It might be heavy to call Platform::current()->monotonicallyIncreasingTim
e() | 332 // It might be heavy to call Platform::current()->monotonicallyIncreasingTim
eSeconds() |
333 // per page (i.e., 128 KB sweep or one LargeObject sweep), so we check | 333 // per page (i.e., 128 KB sweep or one LargeObject sweep), so we check |
334 // the deadline per 10 pages. | 334 // the deadline per 10 pages. |
335 static const int deadlineCheckInterval = 10; | 335 static const int deadlineCheckInterval = 10; |
336 | 336 |
337 RELEASE_ASSERT(threadState()->isSweepingInProgress()); | 337 RELEASE_ASSERT(threadState()->isSweepingInProgress()); |
338 ASSERT(threadState()->sweepForbidden()); | 338 ASSERT(threadState()->sweepForbidden()); |
339 ASSERT(!threadState()->isMainThread() || ScriptForbiddenScope::isScriptForbi
dden()); | 339 ASSERT(!threadState()->isMainThread() || ScriptForbiddenScope::isScriptForbi
dden()); |
340 | 340 |
341 int pageCount = 1; | 341 int pageCount = 1; |
342 while (m_firstUnsweptPage) { | 342 while (m_firstUnsweptPage) { |
343 sweepUnsweptPage(); | 343 sweepUnsweptPage(); |
344 if (pageCount % deadlineCheckInterval == 0) { | 344 if (pageCount % deadlineCheckInterval == 0) { |
345 if (deadlineSeconds <= Platform::current()->monotonicallyIncreasingT
ime()) { | 345 if (deadlineSeconds <= Platform::current()->monotonicallyIncreasingT
imeSeconds()) { |
346 // Deadline has come. | 346 // Deadline has come. |
347 Heap::reportMemoryUsageForTracing(); | 347 Heap::reportMemoryUsageForTracing(); |
348 return !m_firstUnsweptPage; | 348 return !m_firstUnsweptPage; |
349 } | 349 } |
350 } | 350 } |
351 pageCount++; | 351 pageCount++; |
352 } | 352 } |
353 Heap::reportMemoryUsageForTracing(); | 353 Heap::reportMemoryUsageForTracing(); |
354 return true; | 354 return true; |
355 } | 355 } |
(...skipping 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1584 | 1584 |
1585 m_hasEntries = true; | 1585 m_hasEntries = true; |
1586 size_t index = hash(address); | 1586 size_t index = hash(address); |
1587 ASSERT(!(index & 1)); | 1587 ASSERT(!(index & 1)); |
1588 Address cachePage = roundToBlinkPageStart(address); | 1588 Address cachePage = roundToBlinkPageStart(address); |
1589 m_entries[index + 1] = m_entries[index]; | 1589 m_entries[index + 1] = m_entries[index]; |
1590 m_entries[index] = cachePage; | 1590 m_entries[index] = cachePage; |
1591 } | 1591 } |
1592 | 1592 |
1593 } // namespace blink | 1593 } // namespace blink |
OLD | NEW |