| 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 1937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1948 result.storedValue->value.add(reinterpret_cast<uintptr_t>(objectPoin
ter)); | 1948 result.storedValue->value.add(reinterpret_cast<uintptr_t>(objectPoin
ter)); |
| 1949 } | 1949 } |
| 1950 ObjectGraph::AddResult result = objectGraph().add(reinterpret_cast<uintp
tr_t>(objectPointer), std::make_pair(reinterpret_cast<uintptr_t>(m_hostObject),
m_hostName)); | 1950 ObjectGraph::AddResult result = objectGraph().add(reinterpret_cast<uintp
tr_t>(objectPointer), std::make_pair(reinterpret_cast<uintptr_t>(m_hostObject),
m_hostName)); |
| 1951 ASSERT(result.isNewEntry); | 1951 ASSERT(result.isNewEntry); |
| 1952 // fprintf(stderr, "%s[%p] -> %s[%p]\n", m_hostName.ascii().data(), m_ho
stObject, className.ascii().data(), objectPointer); | 1952 // fprintf(stderr, "%s[%p] -> %s[%p]\n", m_hostName.ascii().data(), m_ho
stObject, className.ascii().data(), objectPointer); |
| 1953 #endif | 1953 #endif |
| 1954 if (callback) | 1954 if (callback) |
| 1955 Heap::pushTraceCallback(m_markingStack, const_cast<void*>(objectPoin
ter), callback); | 1955 Heap::pushTraceCallback(m_markingStack, const_cast<void*>(objectPoin
ter), callback); |
| 1956 } | 1956 } |
| 1957 | 1957 |
| 1958 virtual void mark(HeapObjectHeader* header, TraceCallback callback) OVERRIDE | 1958 virtual void mark(HeapObjectHeader* header, TraceCallback callback) override |
| 1959 { | 1959 { |
| 1960 // We need both the HeapObjectHeader and FinalizedHeapObjectHeader | 1960 // We need both the HeapObjectHeader and FinalizedHeapObjectHeader |
| 1961 // version to correctly find the payload. | 1961 // version to correctly find the payload. |
| 1962 visitHeader(header, header->payload(), callback); | 1962 visitHeader(header, header->payload(), callback); |
| 1963 } | 1963 } |
| 1964 | 1964 |
| 1965 virtual void mark(FinalizedHeapObjectHeader* header, TraceCallback callback)
OVERRIDE | 1965 virtual void mark(FinalizedHeapObjectHeader* header, TraceCallback callback)
override |
| 1966 { | 1966 { |
| 1967 // We need both the HeapObjectHeader and FinalizedHeapObjectHeader | 1967 // We need both the HeapObjectHeader and FinalizedHeapObjectHeader |
| 1968 // version to correctly find the payload. | 1968 // version to correctly find the payload. |
| 1969 visitHeader(header, header->payload(), callback); | 1969 visitHeader(header, header->payload(), callback); |
| 1970 } | 1970 } |
| 1971 | 1971 |
| 1972 virtual void mark(const void* objectPointer, TraceCallback callback) OVERRID
E | 1972 virtual void mark(const void* objectPointer, TraceCallback callback) overrid
e |
| 1973 { | 1973 { |
| 1974 if (!objectPointer) | 1974 if (!objectPointer) |
| 1975 return; | 1975 return; |
| 1976 FinalizedHeapObjectHeader* header = FinalizedHeapObjectHeader::fromPaylo
ad(objectPointer); | 1976 FinalizedHeapObjectHeader* header = FinalizedHeapObjectHeader::fromPaylo
ad(objectPointer); |
| 1977 visitHeader(header, header->payload(), callback); | 1977 visitHeader(header, header->payload(), callback); |
| 1978 } | 1978 } |
| 1979 | 1979 |
| 1980 virtual void registerDelayedMarkNoTracing(const void* object) OVERRIDE | 1980 virtual void registerDelayedMarkNoTracing(const void* object) override |
| 1981 { | 1981 { |
| 1982 Heap::pushPostMarkingCallback(const_cast<void*>(object), markNoTracingCa
llback); | 1982 Heap::pushPostMarkingCallback(const_cast<void*>(object), markNoTracingCa
llback); |
| 1983 } | 1983 } |
| 1984 | 1984 |
| 1985 virtual void registerWeakMembers(const void* closure, const void* containing
Object, WeakPointerCallback callback) OVERRIDE | 1985 virtual void registerWeakMembers(const void* closure, const void* containing
Object, WeakPointerCallback callback) override |
| 1986 { | 1986 { |
| 1987 Heap::pushWeakObjectPointerCallback(const_cast<void*>(closure), const_ca
st<void*>(containingObject), callback); | 1987 Heap::pushWeakObjectPointerCallback(const_cast<void*>(closure), const_ca
st<void*>(containingObject), callback); |
| 1988 } | 1988 } |
| 1989 | 1989 |
| 1990 virtual void registerWeakTable(const void* closure, EphemeronCallback iterat
ionCallback, EphemeronCallback iterationDoneCallback) | 1990 virtual void registerWeakTable(const void* closure, EphemeronCallback iterat
ionCallback, EphemeronCallback iterationDoneCallback) |
| 1991 { | 1991 { |
| 1992 Heap::registerWeakTable(const_cast<void*>(closure), iterationCallback, i
terationDoneCallback); | 1992 Heap::registerWeakTable(const_cast<void*>(closure), iterationCallback, i
terationDoneCallback); |
| 1993 } | 1993 } |
| 1994 | 1994 |
| 1995 #if ENABLE(ASSERT) | 1995 #if ENABLE(ASSERT) |
| 1996 virtual bool weakTableRegistered(const void* closure) | 1996 virtual bool weakTableRegistered(const void* closure) |
| 1997 { | 1997 { |
| 1998 return Heap::weakTableRegistered(closure); | 1998 return Heap::weakTableRegistered(closure); |
| 1999 } | 1999 } |
| 2000 #endif | 2000 #endif |
| 2001 | 2001 |
| 2002 virtual bool isMarked(const void* objectPointer) OVERRIDE | 2002 virtual bool isMarked(const void* objectPointer) override |
| 2003 { | 2003 { |
| 2004 return FinalizedHeapObjectHeader::fromPayload(objectPointer)->isMarked()
; | 2004 return FinalizedHeapObjectHeader::fromPayload(objectPointer)->isMarked()
; |
| 2005 } | 2005 } |
| 2006 | 2006 |
| 2007 // This macro defines the necessary visitor methods for typed heaps | 2007 // This macro defines the necessary visitor methods for typed heaps |
| 2008 #define DEFINE_VISITOR_METHODS(Type)
\ | 2008 #define DEFINE_VISITOR_METHODS(Type)
\ |
| 2009 virtual void mark(const Type* objectPointer, TraceCallback callback) OVERRID
E \ | 2009 virtual void mark(const Type* objectPointer, TraceCallback callback) overrid
e \ |
| 2010 {
\ | 2010 {
\ |
| 2011 if (!objectPointer)
\ | 2011 if (!objectPointer)
\ |
| 2012 return;
\ | 2012 return;
\ |
| 2013 HeapObjectHeader* header =
\ | 2013 HeapObjectHeader* header =
\ |
| 2014 HeapObjectHeader::fromPayload(objectPointer);
\ | 2014 HeapObjectHeader::fromPayload(objectPointer);
\ |
| 2015 visitHeader(header, header->payload(), callback);
\ | 2015 visitHeader(header, header->payload(), callback);
\ |
| 2016 }
\ | 2016 }
\ |
| 2017 virtual bool isMarked(const Type* objectPointer) OVERRIDE
\ | 2017 virtual bool isMarked(const Type* objectPointer) override
\ |
| 2018 {
\ | 2018 {
\ |
| 2019 return HeapObjectHeader::fromPayload(objectPointer)->isMarked();
\ | 2019 return HeapObjectHeader::fromPayload(objectPointer)->isMarked();
\ |
| 2020 } | 2020 } |
| 2021 | 2021 |
| 2022 FOR_EACH_TYPED_HEAP(DEFINE_VISITOR_METHODS) | 2022 FOR_EACH_TYPED_HEAP(DEFINE_VISITOR_METHODS) |
| 2023 #undef DEFINE_VISITOR_METHODS | 2023 #undef DEFINE_VISITOR_METHODS |
| 2024 | 2024 |
| 2025 #if ENABLE(GC_PROFILE_MARKING) | 2025 #if ENABLE(GC_PROFILE_MARKING) |
| 2026 void reportStats() | 2026 void reportStats() |
| 2027 { | 2027 { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2112 } | 2112 } |
| 2113 | 2113 |
| 2114 static HashSet<uintptr_t>& objectsToFindPath() | 2114 static HashSet<uintptr_t>& objectsToFindPath() |
| 2115 { | 2115 { |
| 2116 DEFINE_STATIC_LOCAL(HashSet<uintptr_t>, set, ()); | 2116 DEFINE_STATIC_LOCAL(HashSet<uintptr_t>, set, ()); |
| 2117 return set; | 2117 return set; |
| 2118 } | 2118 } |
| 2119 #endif | 2119 #endif |
| 2120 | 2120 |
| 2121 protected: | 2121 protected: |
| 2122 virtual void registerWeakCell(void** cell, WeakPointerCallback callback) OVE
RRIDE | 2122 virtual void registerWeakCell(void** cell, WeakPointerCallback callback) ove
rride |
| 2123 { | 2123 { |
| 2124 Heap::pushWeakCellPointerCallback(cell, callback); | 2124 Heap::pushWeakCellPointerCallback(cell, callback); |
| 2125 } | 2125 } |
| 2126 | 2126 |
| 2127 private: | 2127 private: |
| 2128 CallbackStack* m_markingStack; | 2128 CallbackStack* m_markingStack; |
| 2129 }; | 2129 }; |
| 2130 | 2130 |
| 2131 void Heap::init() | 2131 void Heap::init() |
| 2132 { | 2132 { |
| (...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2893 CallbackStack* Heap::s_weakCallbackStack; | 2893 CallbackStack* Heap::s_weakCallbackStack; |
| 2894 CallbackStack* Heap::s_ephemeronStack; | 2894 CallbackStack* Heap::s_ephemeronStack; |
| 2895 HeapDoesNotContainCache* Heap::s_heapDoesNotContainCache; | 2895 HeapDoesNotContainCache* Heap::s_heapDoesNotContainCache; |
| 2896 bool Heap::s_shutdownCalled = false; | 2896 bool Heap::s_shutdownCalled = false; |
| 2897 bool Heap::s_lastGCWasConservative = false; | 2897 bool Heap::s_lastGCWasConservative = false; |
| 2898 FreePagePool* Heap::s_freePagePool; | 2898 FreePagePool* Heap::s_freePagePool; |
| 2899 OrphanedPagePool* Heap::s_orphanedPagePool; | 2899 OrphanedPagePool* Heap::s_orphanedPagePool; |
| 2900 Heap::RegionTree* Heap::s_regionTree = 0; | 2900 Heap::RegionTree* Heap::s_regionTree = 0; |
| 2901 | 2901 |
| 2902 } | 2902 } |
| OLD | NEW |