michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* This contains stubs and infrastructure to support code from v8 */ michael@0: michael@0: #ifndef V8_SUPPORT_H_ michael@0: #define V8_SUPPORT_H_ michael@0: michael@0: #if defined(_M_X64) || defined(__x86_64__) michael@0: #define V8_HOST_ARCH_X64 1 michael@0: #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) michael@0: #define V8_HOST_ARCH_IA32 1 michael@0: #elif defined(__ARMEL__) michael@0: #define V8_HOST_ARCH_ARM 1 michael@0: #else michael@0: #warning Please add support for your architecture in chromium_types.h michael@0: #endif michael@0: michael@0: typedef int32_t Atomic32; michael@0: michael@0: #if defined(V8_HOST_ARCH_X64) || defined(V8_HOST_ARCH_IA32) || defined(V8_HOST_ARCH_ARM) michael@0: inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { michael@0: *ptr = value; michael@0: } michael@0: #endif michael@0: michael@0: michael@0: const int kMaxInt = 0x7FFFFFFF; michael@0: const int kMinInt = -kMaxInt - 1; michael@0: michael@0: // A macro to disallow the evil copy constructor and operator= functions michael@0: // This should be used in the private: declarations for a class michael@0: #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ michael@0: TypeName(const TypeName&); \ michael@0: void operator=(const TypeName&) michael@0: michael@0: michael@0: // The USE(x) template is used to silence C++ compiler warnings michael@0: // issued for (yet) unused variables (typically parameters). michael@0: template michael@0: static inline void USE(T) { } michael@0: michael@0: class Malloced { michael@0: }; michael@0: michael@0: #endif // V8_SUPPORT_H_