summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2009-03-23 09:34:13 (GMT)
committerSimon Hausmann <simon.hausmann@nokia.com>2009-03-23 09:34:13 (GMT)
commit67ad0519fd165acee4a4d2a94fa502e9e4847bd0 (patch)
tree1dbf50b3dff8d5ca7e9344733968c72704eb15ff /src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
downloadQt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.zip
Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.gz
Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.bz2
Long live Qt!
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h')
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h b/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
new file mode 100644
index 0000000..f1264ac
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef WTF_FastMalloc_h
+#define WTF_FastMalloc_h
+
+#include "Platform.h"
+#include <stdlib.h>
+#include <new>
+
+namespace WTF {
+
+ // These functions call CRASH() if an allocation fails.
+ void* fastMalloc(size_t n);
+ void* fastZeroedMalloc(size_t n);
+ void* fastCalloc(size_t n_elements, size_t element_size);
+ void* fastRealloc(void* p, size_t n);
+
+ // These functions return NULL if an allocation fails.
+ void* tryFastMalloc(size_t n);
+ void* tryFastZeroedMalloc(size_t n);
+ void* tryFastCalloc(size_t n_elements, size_t element_size);
+ void* tryFastRealloc(void* p, size_t n);
+
+ void fastFree(void* p);
+
+#ifndef NDEBUG
+ void fastMallocForbid();
+ void fastMallocAllow();
+#endif
+
+ void releaseFastMallocFreeMemory();
+
+ struct FastMallocStatistics {
+ size_t heapSize;
+ size_t freeSizeInHeap;
+ size_t freeSizeInCaches;
+ size_t returnedSize;
+ };
+ FastMallocStatistics fastMallocStatistics();
+
+} // namespace WTF
+
+using WTF::fastMalloc;
+using WTF::fastZeroedMalloc;
+using WTF::fastCalloc;
+using WTF::fastRealloc;
+using WTF::tryFastMalloc;
+using WTF::tryFastZeroedMalloc;
+using WTF::tryFastCalloc;
+using WTF::tryFastRealloc;
+using WTF::fastFree;
+
+#ifndef NDEBUG
+using WTF::fastMallocForbid;
+using WTF::fastMallocAllow;
+#endif
+
+#if COMPILER(GCC) && PLATFORM(DARWIN)
+#define WTF_PRIVATE_INLINE __private_extern__ inline __attribute__((always_inline))
+#elif COMPILER(GCC)
+#define WTF_PRIVATE_INLINE inline __attribute__((always_inline))
+#elif COMPILER(MSVC)
+#define WTF_PRIVATE_INLINE __forceinline
+#else
+#define WTF_PRIVATE_INLINE inline
+#endif
+
+#ifndef _CRTDBG_MAP_ALLOC
+
+#if !defined(USE_SYSTEM_MALLOC) || !(USE_SYSTEM_MALLOC)
+WTF_PRIVATE_INLINE void* operator new(size_t s) { return fastMalloc(s); }
+WTF_PRIVATE_INLINE void operator delete(void* p) { fastFree(p); }
+WTF_PRIVATE_INLINE void* operator new[](size_t s) { return fastMalloc(s); }
+WTF_PRIVATE_INLINE void operator delete[](void* p) { fastFree(p); }
+#endif
+
+#endif // _CRTDBG_MAP_ALLOC
+
+#endif /* WTF_FastMalloc_h */