GCActivityCallback.h revision 81bc750723a18f21cd17d1b173cd2a4dda9cea6e
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * documentation and/or other materials provided with the distribution. 13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * its contributors may be used to endorse or promote products derived 15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * from this software without specific prior written permission. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 285af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 29dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#ifndef GCActivityCallback_h 30dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#define GCActivityCallback_h 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/OwnPtr.h> 33dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/PassOwnPtr.h> 34545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CF) 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <CoreFoundation/CoreFoundation.h> 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 39dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochnamespace JSC { 40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 41dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochclass Heap; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 43dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochclass GCActivityCallback { 44dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochpublic: 45dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual ~GCActivityCallback() {} 46dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch virtual void operator()() {} 47f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void synchronize() {} 48dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 49dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochprotected: 50dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch GCActivityCallback() {} 51dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch}; 52dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 53dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochstruct DefaultGCActivityCallbackPlatformData; 54dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 55dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochclass DefaultGCActivityCallback : public GCActivityCallback { 56dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochpublic: 57dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch static PassOwnPtr<DefaultGCActivityCallback> create(Heap*); 58dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 59dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch DefaultGCActivityCallback(Heap*); 60dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ~DefaultGCActivityCallback(); 61dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 62dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch void operator()(); 63f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch void synchronize(); 64dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 6581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if USE(CF) 662fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockprotected: 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block DefaultGCActivityCallback(Heap*, CFRunLoopRef); 682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block void commonConstructor(Heap*, CFRunLoopRef); 692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 71dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochprivate: 72dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch OwnPtr<DefaultGCActivityCallbackPlatformData*> d; 73dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch}; 74dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 75dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochinline PassOwnPtr<DefaultGCActivityCallback> DefaultGCActivityCallback::create(Heap* heap) 76dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 77dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return adoptPtr(new DefaultGCActivityCallback(heap)); 78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 79dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 80dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 81dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 82dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#endif 83