27 #include "gc/z/zMarkCache.hpp"
28 #include "gc/z/zPage.inline.hpp"
29
30 inline void ZMarkCacheEntry::inc_live(ZPage* page, size_t bytes) {
31 if (_page == page) {
32 // Cache hit
33 _objects++;
34 _bytes += bytes;
35 } else {
36 // Cache miss
37 evict();
38 _page = page;
39 _objects = 1;
40 _bytes = bytes;
41 }
42 }
43
44 inline void ZMarkCacheEntry::evict() {
45 if (_page != NULL) {
46 // Write cached data out to page
47 _page->inc_live_atomic(_objects, _bytes);
48 _page = NULL;
49 }
50 }
51
52 inline void ZMarkCache::inc_live(ZPage* page, size_t bytes) {
53 const size_t mask = ZMarkCacheSize - 1;
54 const size_t index = (page->start() >> _shift) & mask;
55 _cache[index].inc_live(page, bytes);
56 }
57
58 #endif // SHARE_GC_Z_ZMARKCACHE_INLINE_HPP
|
27 #include "gc/z/zMarkCache.hpp"
28 #include "gc/z/zPage.inline.hpp"
29
30 inline void ZMarkCacheEntry::inc_live(ZPage* page, size_t bytes) {
31 if (_page == page) {
32 // Cache hit
33 _objects++;
34 _bytes += bytes;
35 } else {
36 // Cache miss
37 evict();
38 _page = page;
39 _objects = 1;
40 _bytes = bytes;
41 }
42 }
43
44 inline void ZMarkCacheEntry::evict() {
45 if (_page != NULL) {
46 // Write cached data out to page
47 _page->inc_live(_objects, _bytes);
48 _page = NULL;
49 }
50 }
51
52 inline void ZMarkCache::inc_live(ZPage* page, size_t bytes) {
53 const size_t mask = ZMarkCacheSize - 1;
54 const size_t index = (page->start() >> _shift) & mask;
55 _cache[index].inc_live(page, bytes);
56 }
57
58 #endif // SHARE_GC_Z_ZMARKCACHE_INLINE_HPP
|