| 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 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 | 820 |
| 821 // Is the finalizable GC object still alive, but slated for lazy sweeping? | 821 // Is the finalizable GC object still alive, but slated for lazy sweeping? |
| 822 // If a lazy sweep is in progress, returns true if the object was found | 822 // If a lazy sweep is in progress, returns true if the object was found |
| 823 // to be not reachable during the marking phase, but it has yet to be swept | 823 // to be not reachable during the marking phase, but it has yet to be swept |
| 824 // and finalized. The predicate returns false in all other cases. | 824 // and finalized. The predicate returns false in all other cases. |
| 825 // | 825 // |
| 826 // Holding a reference to an already-dead object is not a valid state | 826 // Holding a reference to an already-dead object is not a valid state |
| 827 // to be in; willObjectBeLazilySwept() has undefined behavior if passed | 827 // to be in; willObjectBeLazilySwept() has undefined behavior if passed |
| 828 // such a reference. | 828 // such a reference. |
| 829 template<typename T> | 829 template<typename T> |
| 830 NO_LAZY_SWEEP_SANITIZE_ADDRESS |
| 830 static bool willObjectBeLazilySwept(const T* objectPointer) | 831 static bool willObjectBeLazilySwept(const T* objectPointer) |
| 831 { | 832 { |
| 832 static_assert(IsGarbageCollectedType<T>::value, "only objects deriving f
rom GarbageCollected can be used."); | 833 static_assert(IsGarbageCollectedType<T>::value, "only objects deriving f
rom GarbageCollected can be used."); |
| 833 #if ENABLE(OILPAN) | 834 #if ENABLE(OILPAN) |
| 834 BasePage* page = pageFromObject(objectPointer); | 835 BasePage* page = pageFromObject(objectPointer); |
| 835 if (page->hasBeenSwept()) | 836 if (page->hasBeenSwept()) |
| 836 return false; | 837 return false; |
| 837 ASSERT(page->heap()->threadState()->isSweepingInProgress()); | 838 ASSERT(page->heap()->threadState()->isSweepingInProgress()); |
| 838 | 839 |
| 839 return !ObjectAliveTrait<T>::isHeapObjectAlive(s_markingVisitor, const_c
ast<T*>(objectPointer)); | 840 return !ObjectAliveTrait<T>::isHeapObjectAlive(s_markingVisitor, const_c
ast<T*>(objectPointer)); |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1266 size_t copySize = previousHeader->payloadSize(); | 1267 size_t copySize = previousHeader->payloadSize(); |
| 1267 if (copySize > size) | 1268 if (copySize > size) |
| 1268 copySize = size; | 1269 copySize = size; |
| 1269 memcpy(address, previous, copySize); | 1270 memcpy(address, previous, copySize); |
| 1270 return address; | 1271 return address; |
| 1271 } | 1272 } |
| 1272 | 1273 |
| 1273 } // namespace blink | 1274 } // namespace blink |
| 1274 | 1275 |
| 1275 #endif // Heap_h | 1276 #endif // Heap_h |
| OLD | NEW |