root/core/avmfeatures.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


//                     DO NOT EDIT THIS FILE
// 
//  This file has been generated by the script core/avmfeatures.as,
//  from a set of configuration parameters in that file.
// 
//  If you feel you need to make changes below, instead edit the configuration
//  file and rerun it to get a new version of this file.
// 
//  ***** BEGIN LICENSE BLOCK *****
//  Version: MPL 1.1/GPL 2.0/LGPL 2.1
// 
//  The contents of this file are subject to the Mozilla Public License Version
//  1.1 (the "License"); you may not use this file except in compliance with
//  the License. You may obtain a copy of the License at
//  http://www.mozilla.org/MPL/
// 
//  Software distributed under the License is distributed on an "AS IS" basis,
//  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
//  for the specific language governing rights and limitations under the
//  License.
// 
//  The Original Code is [Open Source Virtual Machine.].
// 
//  The Initial Developer of the Original Code is
//  Adobe System Incorporated.
//  Portions created by the Initial Developer are Copyright (C) 2009
//  the Initial Developer. All Rights Reserved.
// 
//  Contributor(s):
//    Adobe AS3 Team
// 
//  Alternatively, the contents of this file may be used under the terms of
//  either the GNU General Public License Version 2 or later (the "GPL"), or
//  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
//  in which case the provisions of the GPL or the LGPL are applicable instead
//  of those above. If you wish to allow use of your version of this file only
//  under the terms of either the GPL or the LGPL, and not to allow others to
//  use your version of this file under the terms of the MPL, indicate your
//  decision by deleting the provisions above and replace them with the notice
//  and other provisions required by the GPL or the LGPL. If you do not delete
//  the provisions above, a recipient may use your version of this file under
//  the terms of any one of the MPL, the GPL or the LGPL.
// 
//  ***** END LICENSE BLOCK ****
#undef VMCFG_32BIT
#undef VMCFG_64BIT
#undef MMGC_64BIT
#undef AVMPLUS_64BIT
#undef VMCFG_BIG_ENDIAN
#undef AVMPLUS_BIG_ENDIAN
#undef VMCFG_LITTLE_ENDIAN
#undef AVMPLUS_LITTLE_ENDIAN
#undef AVM10_BIG_ENDIAN
#undef VMCFG_DOUBLE_MSW_FIRST
#undef NJ_ARM_VFP
#undef VMCFG_IA32
#undef MMGC_IA32
#undef AVMPLUS_IA32
#undef AVMPLUS_UNALIGNED_ACCESS
#undef VMCFG_AMD64
#undef MMGC_AMD64
#undef AVMPLUS_AMD64
#undef AVMPLUS_UNALIGNED_ACCESS
#undef VMCFG_ARM
#undef MMGC_ARM
#undef AVMPLUS_ARM
#undef VMCFG_PPC
#undef MMGC_PPC
#undef AVMPLUS_PPC
#undef VMCFG_SPARC
#undef MMGC_SPARC
#undef AVMPLUS_SPARC
#undef VMCFG_MIPS
#undef AVMPLUS_UNIX
#undef AVMPLUS_MAC
#undef MMGC_MAC
#undef AVMPLUS_WIN32
#undef AVMPLUS_SYMBIAN
#undef VMCFG_SYMBIAN
#undef VMCFG_DEBUGGER
#undef VMCFG_VERIFYALL
#undef AVMPLUS_VERBOSE
#undef DEBUGGER
#undef AVMPLUS_VERIFYALL
#undef AVMPLUS_SAMPLER
#undef VTUNE
#undef AVMPLUS_VERBOSE
#undef VMCFG_NANOJIT
#undef VMCFG_PRECOMP_NAMES
#undef VMCFG_LOOKUP_CACHE
#undef FEATURE_NANOJIT
#undef VMCFG_AOT
#undef VMCFG_AOTSHELL
#undef VMCFG_INTERPRETER
#undef VMCFG_INTERPRETER
#undef VMCFG_WORDCODE
#undef VMCFG_WORDCODE_PEEPHOLE
#undef VMCFG_PRECOMP_NAMES
#undef VMCFG_LOOKUP_CACHE
#undef AVMPLUS_WORD_CODE
#undef AVMPLUS_PEEPHOLE_OPTIMIZER
#undef VMCFG_WORDCODE_THREADED
#undef AVMPLUS_DIRECT_THREADED
#undef VMCFG_SELFTEST
#undef AVMPLUS_SELFTEST
#undef VMCFG_EVAL
#undef AVMPLUS_JIT_READONLY
#undef MMGC_LOCKING
#undef MMGC_USE_SYSTEM_MALLOC
#undef MMGC_ENABLE_CPP_EXCEPTIONS
#undef MMGC_INTERIOR_PTRS
#undef AVMPLUS_WITH_JNI
#undef AVMPLUS_HEAP_ALLOCA
#undef AVMPLUS_STATIC_POINTERS
#undef AVMPLUS_INDIRECT_NATIVE_THUNKS
#undef MMGC_OVERRIDE_GLOBAL_NEW
#undef MMGC_MEMORY_PROFILER
#undef VMCFG_CACHE_GQCN
#undef VMCFG_TEST_API_VERSIONING



/* AVMSYSTEM_32BIT
 *
 * Selects a 32-bit architecture
 */
#if !defined AVMSYSTEM_32BIT || AVMSYSTEM_32BIT != 0 && AVMSYSTEM_32BIT != 1
#  error "AVMSYSTEM_32BIT must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_64BIT
 *
 * Selects a 64-bit architecture
 */
#if !defined AVMSYSTEM_64BIT || AVMSYSTEM_64BIT != 0 && AVMSYSTEM_64BIT != 1
#  error "AVMSYSTEM_64BIT must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_BIG_ENDIAN
 *
 * Selects a big-endian architecture: the most significant byte of a word
 * is stored at the lowest byte address of the word
 */
#if !defined AVMSYSTEM_BIG_ENDIAN || AVMSYSTEM_BIG_ENDIAN != 0 && AVMSYSTEM_BIG_ENDIAN != 1
#  error "AVMSYSTEM_BIG_ENDIAN must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_LITTLE_ENDIAN
 *
 * Selects a little-endian architecture: the least significant byte of a word
 * is stored at the lowest byte address of the word
 */
#if !defined AVMSYSTEM_LITTLE_ENDIAN || AVMSYSTEM_LITTLE_ENDIAN != 0 && AVMSYSTEM_LITTLE_ENDIAN != 1
#  error "AVMSYSTEM_LITTLE_ENDIAN must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_DOUBLE_MSW_FIRST
 *
 * Selects a reverse floating-point layout on little-endian systems:
 * the most significant word (containing the sign, exponent, and most
 * significant bits of the significand) are at the lower word address.
 * Each word is stored little-endian, however.
 */
#if !defined AVMSYSTEM_DOUBLE_MSW_FIRST || AVMSYSTEM_DOUBLE_MSW_FIRST != 0 && AVMSYSTEM_DOUBLE_MSW_FIRST != 1
#  error "AVMSYSTEM_DOUBLE_MSW_FIRST must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_ARM_FPU
 *
 * Enables the just-in-time compiler to generate vector floating point 
 * instructions for ARM based architectures.
 */
#if !defined AVMSYSTEM_ARM_FPU || AVMSYSTEM_ARM_FPU != 0 && AVMSYSTEM_ARM_FPU != 1
#  error "AVMSYSTEM_ARM_FPU must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_IA32
 *
 * Selects the x86-32 architecture
 */
#if !defined AVMSYSTEM_IA32 || AVMSYSTEM_IA32 != 0 && AVMSYSTEM_IA32 != 1
#  error "AVMSYSTEM_IA32 must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_AMD64
 *
 * Selects the x86-64 architecture
 */
#if !defined AVMSYSTEM_AMD64 || AVMSYSTEM_AMD64 != 0 && AVMSYSTEM_AMD64 != 1
#  error "AVMSYSTEM_AMD64 must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_ARM
 *
 * Selects the ARM architecture (version left unspecified for now).
 */
#if !defined AVMSYSTEM_ARM || AVMSYSTEM_ARM != 0 && AVMSYSTEM_ARM != 1
#  error "AVMSYSTEM_ARM must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_PPC
 *
 * Selects the PowerPC / Power architecture.  Whether it's the 32-bit or the 
 * 64-bit version of the architecture is controlled independently.
 */
#if !defined AVMSYSTEM_PPC || AVMSYSTEM_PPC != 0 && AVMSYSTEM_PPC != 1
#  error "AVMSYSTEM_PPC must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_SPARC
 *
 * Selects the 32-bit SPARC architecture.
 */
#if !defined AVMSYSTEM_SPARC || AVMSYSTEM_SPARC != 0 && AVMSYSTEM_SPARC != 1
#  error "AVMSYSTEM_SPARC must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_MIPS
 *
 * Selects the MIPS architecture (version left unspecified for now).
 */
#if !defined AVMSYSTEM_MIPS || AVMSYSTEM_MIPS != 0 && AVMSYSTEM_MIPS != 1
#  error "AVMSYSTEM_MIPS must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_UNIX
 *
 * Selects Unix / Linux (but not MacOS)
 */
#if !defined AVMSYSTEM_UNIX || AVMSYSTEM_UNIX != 0 && AVMSYSTEM_UNIX != 1
#  error "AVMSYSTEM_UNIX must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_MAC
 *
 * Selects MacOS X
 */
#if !defined AVMSYSTEM_MAC || AVMSYSTEM_MAC != 0 && AVMSYSTEM_MAC != 1
#  error "AVMSYSTEM_MAC must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_WIN32
 *
 * Selects Win32, Win64, Windows Mobile
 */
#if !defined AVMSYSTEM_WIN32 || AVMSYSTEM_WIN32 != 0 && AVMSYSTEM_WIN32 != 1
#  error "AVMSYSTEM_WIN32 must be defined and 0 or 1 (only)."
#endif


/* AVMSYSTEM_SYMBIAN
 *
 * Selects Symbian
 */
#if !defined AVMSYSTEM_SYMBIAN || AVMSYSTEM_SYMBIAN != 0 && AVMSYSTEM_SYMBIAN != 1
#  error "AVMSYSTEM_SYMBIAN must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_DEBUGGER
 *
 * Selects the AVM debugger API, including retaining debug information at
 * run-time and human-readable error messages for run-time errors.
 * 
 * There is a performance penalty to enabling this; clients that want
 * maximal execution performance and don't care about debugging should 
 * disable it.
 * 
 * If you enable the debugger you may want to consider enabling support for
 * specific language strings for error messages in order to avoid getting
 * them all.  See the AVMPLUS_ERROR_LANG_ macros in core/ErrorConstants.h.
 * It's easiest to define the ones you want in core/avmbuild.h.
 */
#if !defined AVMFEATURE_DEBUGGER || AVMFEATURE_DEBUGGER != 0 && AVMFEATURE_DEBUGGER != 1
#  error "AVMFEATURE_DEBUGGER must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_ALLOCATION_SAMPLER
 *
 * Enable the sample-based memory profiler.  This makes allocation a
 * little more expensive if a sampler callback is not installed, and
 * more expensive still if it is installed.  
 * 
 * FIXME: more information needed.
 * 
 * Note that this is enabled always by AVMFEATURE_DEBUGGER.
 * 
 * It is known that the Flash Player wants to enable this if SCRIPT_DEBUGGER
 * is enabled in the Player code.
 */
#if !defined AVMFEATURE_ALLOCATION_SAMPLER || AVMFEATURE_ALLOCATION_SAMPLER != 0 && AVMFEATURE_ALLOCATION_SAMPLER != 1
#  error "AVMFEATURE_ALLOCATION_SAMPLER must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_VTUNE
 *
 * Selects vtune profiling.  FIXME: more information needed.
 */
#if !defined AVMFEATURE_VTUNE || AVMFEATURE_VTUNE != 0 && AVMFEATURE_VTUNE != 1
#  error "AVMFEATURE_VTUNE must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_JIT
 *
 * Enables the just-in-time compiler.  This will typically increase performance
 * significantly but may result in significantly higher memory consumption.
 */
#if !defined AVMFEATURE_JIT || AVMFEATURE_JIT != 0 && AVMFEATURE_JIT != 1
#  error "AVMFEATURE_JIT must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_AOT
 *
 * Enables the ahead-of-time compiler. This feature is highly experimental.
 */
#if !defined AVMFEATURE_AOT || AVMFEATURE_AOT != 0 && AVMFEATURE_AOT != 1
#  error "AVMFEATURE_AOT must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_ABC_INTERP
 *
 * Selects the ABC interpreter.  Appropriate for platforms that run 
 * the interpreter only for initialization code and for 
 * platforms that are exceptionally memory-constrained.
 */
#if !defined AVMFEATURE_ABC_INTERP || AVMFEATURE_ABC_INTERP != 0 && AVMFEATURE_ABC_INTERP != 1
#  error "AVMFEATURE_ABC_INTERP must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_WORDCODE_INTERP
 *
 * Selects the wordcode interpreter.  Appropriate for platforms that run the
 * interpreter for some or all methods and are not exceptionally memory-constrained.
 */
#if !defined AVMFEATURE_WORDCODE_INTERP || AVMFEATURE_WORDCODE_INTERP != 0 && AVMFEATURE_WORDCODE_INTERP != 1
#  error "AVMFEATURE_WORDCODE_INTERP must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_THREADED_INTERP
 *
 * Selects the faster, direct threaded wordcode interpreter.
 * This is appropriate only for C++ compilers that support GCC-style computed
 * "goto".  It is believed that RCVT, Intel's C++ compiler, and the Sunpro
 * compiler all do.
 */
#if !defined AVMFEATURE_THREADED_INTERP || AVMFEATURE_THREADED_INTERP != 0 && AVMFEATURE_THREADED_INTERP != 1
#  error "AVMFEATURE_THREADED_INTERP must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_SELFTEST
 *
 * AVMFEATURE_SELFTEST enables the built-in selftests.  These can be run by -Dselftest
 * at the shell or by calling the global function avmplus::selftests(), see extensions/Selftest.h.
 * Mostly they are useful for AVM development, not for embedders.
 * 
 * Apart from code size considerations this can be enabled for release builds.
 */
#if !defined AVMFEATURE_SELFTEST || AVMFEATURE_SELFTEST != 0 && AVMFEATURE_SELFTEST != 1
#  error "AVMFEATURE_SELFTEST must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_EVAL
 *
 * Select support for the AS3 run-time compiler.  NOT RECOMMENDED.  The run-time compiler
 * is still undergoing development.
 */
#if !defined AVMFEATURE_EVAL || AVMFEATURE_EVAL != 0 && AVMFEATURE_EVAL != 1
#  error "AVMFEATURE_EVAL must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_PROTECT_JITMEM
 *
 * Makes JIT code buffers read-only to reduce the probability of heap overflow attacks.
 * If you select this then the MMgc platform layer must be able to set the protection
 * on the pages containing JIT code.
 */
#if !defined AVMFEATURE_PROTECT_JITMEM || AVMFEATURE_PROTECT_JITMEM != 0 && AVMFEATURE_PROTECT_JITMEM != 1
#  error "AVMFEATURE_PROTECT_JITMEM must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_SHARED_GCHEAP
 *
 * Selects locking around calls to the memory block manager (GCHeap), allowing multiple
 * threads to share the block manager.  Any client with more than one thread that uses
 * MMgc either for garbage collected or manually managed memory wants this; the Flash
 * Player requires it.
 */
#if !defined AVMFEATURE_SHARED_GCHEAP || AVMFEATURE_SHARED_GCHEAP != 0 && AVMFEATURE_SHARED_GCHEAP != 1
#  error "AVMFEATURE_SHARED_GCHEAP must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_USE_SYSTEM_MALLOC
 *
 * Make MMgc's overridden global new and delete operators delegate allocation and
 * deallocation to VMPI_alloc and VMPI_free instead of going to FixedMalloc.
 * 
 * Whether you want this or not probably depends on the performance of the
 * underlying malloc and might depend on memory consumption patterns.  On desktop
 * systems you probably want this to be disabled.
 */
#if !defined AVMFEATURE_USE_SYSTEM_MALLOC || AVMFEATURE_USE_SYSTEM_MALLOC != 0 && AVMFEATURE_USE_SYSTEM_MALLOC != 1
#  error "AVMFEATURE_USE_SYSTEM_MALLOC must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_CPP_EXCEPTIONS
 *
 * Support C++ exceptions in the MMgc API.  At the time of writing (Apr 2009) 
 * this means decorating the global new and delete operator with appropriate 'throw'
 * clauses.  It is unlikely to mean anything more, as AVM+ and MMgc do not use and
 * do not generally support C++ exceptions.  
 * 
 * Note that even if this is enabled, the global new and delete operators may
 * not throw exceptions when memory can't be allocated, because the out-of-memory
 * handling in MMgc may take precedence.
 * 
 * FixedMalloc never throws an exception for a failed allocation.
 */
#if !defined AVMFEATURE_CPP_EXCEPTIONS || AVMFEATURE_CPP_EXCEPTIONS != 0 && AVMFEATURE_CPP_EXCEPTIONS != 1
#  error "AVMFEATURE_CPP_EXCEPTIONS must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_INTERIOR_POINTERS
 *
 * Recognize a pointer or pointer-like value into anywhere in an object as referencing
 * that object during marking in the garbage collector.
 * 
 * Enabling this tends to be increase GC cost but it can be a useful debugging aid.
 */
#if !defined AVMFEATURE_INTERIOR_POINTERS || AVMFEATURE_INTERIOR_POINTERS != 0 && AVMFEATURE_INTERIOR_POINTERS != 1
#  error "AVMFEATURE_INTERIOR_POINTERS must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_JNI
 *
 * Enable interfacing to Java so you can access java methods/properties like 
 * native AS properties; e.g.
 * var hello = JObject.create("java.lang.String", " hello world ");  
 * print(hello.indexOf('o'));
 */
#if !defined AVMFEATURE_JNI || AVMFEATURE_JNI != 0 && AVMFEATURE_JNI != 1
#  error "AVMFEATURE_JNI must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_HEAP_ALLOCA
 *
 * If enabled then always divert VMPI_alloca() to a separately managed stack,
 * to avoid blowing the stack on small systems or to support systems that
 * don't provide alloca().  If disabled then smallish allocations are handled
 * by the built-in alloca() (which must be provided) and larger allocations
 * are handled by diverting to a separately managed stack; the latter case is
 * mainly a security issue, as alloca() will do strange things if given sufficiently
 * large requests.
 */
#if !defined AVMFEATURE_HEAP_ALLOCA || AVMFEATURE_HEAP_ALLOCA != 0 && AVMFEATURE_HEAP_ALLOCA != 1
#  error "AVMFEATURE_HEAP_ALLOCA must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_STATIC_FUNCTION_PTRS
 *
 * Enable this if you are building on a system that allows static
 * initialization of global constant function pointers (almost all systems
 * except some mobile-phone and other embedded operating systems).
 * 
 * Disabling this will increase code size slightly.
 */
#if !defined AVMFEATURE_STATIC_FUNCTION_PTRS || AVMFEATURE_STATIC_FUNCTION_PTRS != 0 && AVMFEATURE_STATIC_FUNCTION_PTRS != 1
#  error "AVMFEATURE_STATIC_FUNCTION_PTRS must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_INDIRECT_NATIVE_THUNKS
 *
 * Enabling this will recycle native thunks with similar signatures.
 * This decreases code size at the expense of slightly slower thunks
 * and an extra field in NativeMethodInfo.
 */
#if !defined AVMFEATURE_INDIRECT_NATIVE_THUNKS || AVMFEATURE_INDIRECT_NATIVE_THUNKS != 0 && AVMFEATURE_INDIRECT_NATIVE_THUNKS != 1
#  error "AVMFEATURE_INDIRECT_NATIVE_THUNKS must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_OVERRIDE_GLOBAL_NEW
 *
 * Enabling this will cause the mmfx_* memory macros to use global new/delete.
 * By default we use specialized new/delete operators and avoid global new/delete.  However
 * this requires some tricks to get multiple inheritance and private destructors to work
 * so some codebases may want to use the simpler path of overriding global new/delete.
 * Note that this feature works independently of AVMFEATURE_USE_SYSTEM_MALLOC.
 */
#if !defined AVMFEATURE_OVERRIDE_GLOBAL_NEW || AVMFEATURE_OVERRIDE_GLOBAL_NEW != 0 && AVMFEATURE_OVERRIDE_GLOBAL_NEW != 1
#  error "AVMFEATURE_OVERRIDE_GLOBAL_NEW must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_MEMORY_PROFILER
 *
 * Enabling this will compile in code to enable memory profiling. (Must still be
 * enabled at runtime.)
 */
#if !defined AVMFEATURE_MEMORY_PROFILER || AVMFEATURE_MEMORY_PROFILER != 0 && AVMFEATURE_MEMORY_PROFILER != 1
#  error "AVMFEATURE_MEMORY_PROFILER must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_CACHE_GQCN
 *
 * Enabling this will cache the result of getQualifiedClassName, making it run
 * much more quickly, at the expense of more memory usage.
 */
#if !defined AVMFEATURE_CACHE_GQCN || AVMFEATURE_CACHE_GQCN != 0 && AVMFEATURE_CACHE_GQCN != 1
#  error "AVMFEATURE_CACHE_GQCN must be defined and 0 or 1 (only)."
#endif


/* AVMFEATURE_API_VERSIONING
 *
 * Enabling this will enable api-versioning in the avmshell
 */
#if !defined AVMFEATURE_API_VERSIONING || AVMFEATURE_API_VERSIONING != 0 && AVMFEATURE_API_VERSIONING != 1
#  error "AVMFEATURE_API_VERSIONING must be defined and 0 or 1 (only)."
#endif

#if AVMSYSTEM_32BIT
#  if AVMSYSTEM_64BIT
#    error "AVMSYSTEM_64BIT is precluded for AVMSYSTEM_32BIT"
#  endif
#endif
#if AVMSYSTEM_64BIT
#  if AVMSYSTEM_32BIT
#    error "AVMSYSTEM_32BIT is precluded for AVMSYSTEM_64BIT"
#  endif
#endif
#if AVMSYSTEM_BIG_ENDIAN
#  if AVMSYSTEM_LITTLE_ENDIAN
#    error "AVMSYSTEM_LITTLE_ENDIAN is precluded for AVMSYSTEM_BIG_ENDIAN"
#  endif
#endif
#if AVMSYSTEM_LITTLE_ENDIAN
#  if AVMSYSTEM_BIG_ENDIAN
#    error "AVMSYSTEM_BIG_ENDIAN is precluded for AVMSYSTEM_LITTLE_ENDIAN"
#  endif
#endif
#if AVMSYSTEM_DOUBLE_MSW_FIRST
#  if !AVMSYSTEM_LITTLE_ENDIAN
#    error "AVMSYSTEM_LITTLE_ENDIAN is required for AVMSYSTEM_DOUBLE_MSW_FIRST"
#  endif
#endif
#if AVMSYSTEM_ARM_FPU
#  if !AVMSYSTEM_ARM
#    error "AVMSYSTEM_ARM is required for AVMSYSTEM_ARM_FPU"
#  endif
#endif
#if AVMSYSTEM_IA32
#  if AVMSYSTEM_64BIT
#    error "AVMSYSTEM_64BIT is precluded for AVMSYSTEM_IA32"
#  endif
#endif
#if AVMSYSTEM_AMD64
#  if !AVMSYSTEM_64BIT
#    error "AVMSYSTEM_64BIT is required for AVMSYSTEM_AMD64"
#  endif
#endif
#if AVMSYSTEM_ARM
#  if AVMSYSTEM_64BIT
#    error "AVMSYSTEM_64BIT is precluded for AVMSYSTEM_ARM"
#  endif
#endif

#if AVMSYSTEM_SPARC
#  if AVMSYSTEM_64BIT
#    error "AVMSYSTEM_64BIT is precluded for AVMSYSTEM_SPARC"
#  endif
#endif








#if AVMFEATURE_JIT
#if AVMSYSTEM_IA32+AVMSYSTEM_AMD64+AVMSYSTEM_ARM+AVMSYSTEM_PPC+AVMSYSTEM_SPARC+AVMSYSTEM_MIPS != 1
#  error "Exactly one of AVMSYSTEM_IA32,AVMSYSTEM_AMD64,AVMSYSTEM_ARM,AVMSYSTEM_PPC,AVMSYSTEM_SPARC,AVMSYSTEM_MIPS must be defined."
#endif

#endif
#if AVMFEATURE_AOT
#if AVMSYSTEM_IA32+AVMSYSTEM_ARM != 1
#  error "Exactly one of AVMSYSTEM_IA32,AVMSYSTEM_ARM must be defined."
#endif

#endif


#if AVMFEATURE_THREADED_INTERP
#  if !AVMFEATURE_WORDCODE_INTERP
#    error "AVMFEATURE_WORDCODE_INTERP is required for AVMFEATURE_THREADED_INTERP"
#  endif
#endif

















#if AVMSYSTEM_IA32+AVMSYSTEM_AMD64+AVMSYSTEM_ARM+AVMSYSTEM_PPC+AVMSYSTEM_SPARC+AVMSYSTEM_MIPS > 1
#  error "At most one of AVMSYSTEM_IA32,AVMSYSTEM_AMD64,AVMSYSTEM_ARM,AVMSYSTEM_PPC,AVMSYSTEM_SPARC,AVMSYSTEM_MIPS must be defined."
#endif
#if AVMFEATURE_WORDCODE_INTERP+AVMFEATURE_ABC_INTERP > 1
#  error "At most one of AVMFEATURE_WORDCODE_INTERP,AVMFEATURE_ABC_INTERP must be defined."
#endif
#if AVMFEATURE_WORDCODE_INTERP+AVMFEATURE_JIT > 1
#  error "At most one of AVMFEATURE_WORDCODE_INTERP,AVMFEATURE_JIT must be defined."
#endif

#if AVMSYSTEM_UNIX+AVMSYSTEM_MAC+AVMSYSTEM_WIN32+AVMSYSTEM_SYMBIAN != 1
#  error "Exactly one of AVMSYSTEM_UNIX,AVMSYSTEM_MAC,AVMSYSTEM_WIN32,AVMSYSTEM_SYMBIAN must be defined."
#endif

#if AVMSYSTEM_32BIT
#  define VMCFG_32BIT
#endif
#if AVMSYSTEM_64BIT
#  define VMCFG_64BIT
#endif
#if AVMSYSTEM_64BIT
#  define MMGC_64BIT
#endif
#if AVMSYSTEM_64BIT
#  define AVMPLUS_64BIT
#endif
#if AVMSYSTEM_BIG_ENDIAN
#  define VMCFG_BIG_ENDIAN
#endif
#if AVMSYSTEM_BIG_ENDIAN
#  define AVMPLUS_BIG_ENDIAN
#endif
#if AVMSYSTEM_LITTLE_ENDIAN
#  define VMCFG_LITTLE_ENDIAN
#endif
#if AVMSYSTEM_LITTLE_ENDIAN
#  define AVMPLUS_LITTLE_ENDIAN
#endif
#if AVMSYSTEM_LITTLE_ENDIAN
#  define AVM10_BIG_ENDIAN
#endif
#if AVMSYSTEM_DOUBLE_MSW_FIRST
#  define VMCFG_DOUBLE_MSW_FIRST
#endif
#if AVMSYSTEM_ARM_FPU
#  define NJ_ARM_VFP
#endif
#if AVMSYSTEM_IA32
#  define VMCFG_IA32
#endif
#if AVMSYSTEM_IA32
#  define MMGC_IA32
#endif
#if AVMSYSTEM_IA32
#  define AVMPLUS_IA32
#endif
#if AVMSYSTEM_IA32
#  define AVMPLUS_UNALIGNED_ACCESS
#endif
#if AVMSYSTEM_AMD64
#  define VMCFG_AMD64
#endif
#if AVMSYSTEM_AMD64
#  define MMGC_AMD64
#endif
#if AVMSYSTEM_AMD64
#  define AVMPLUS_AMD64
#endif
#if AVMSYSTEM_AMD64
#  define AVMPLUS_UNALIGNED_ACCESS
#endif
#if AVMSYSTEM_ARM
#  define VMCFG_ARM
#endif
#if AVMSYSTEM_ARM
#  define MMGC_ARM
#endif
#if AVMSYSTEM_ARM
#  define AVMPLUS_ARM
#endif
#if AVMSYSTEM_PPC
#  define VMCFG_PPC
#endif
#if AVMSYSTEM_PPC
#  define MMGC_PPC
#endif
#if AVMSYSTEM_PPC
#  define AVMPLUS_PPC
#endif
#if AVMSYSTEM_SPARC
#  define VMCFG_SPARC
#endif
#if AVMSYSTEM_SPARC
#  define MMGC_SPARC
#endif
#if AVMSYSTEM_SPARC
#  define AVMPLUS_SPARC
#endif
#if AVMSYSTEM_MIPS
#  define VMCFG_MIPS
#endif
#if AVMSYSTEM_UNIX
#  define AVMPLUS_UNIX
#endif
#if AVMSYSTEM_MAC
#  define AVMPLUS_MAC
#endif
#if AVMSYSTEM_MAC
#  define MMGC_MAC
#endif
#if AVMSYSTEM_WIN32
#  define AVMPLUS_WIN32
#endif
#if AVMSYSTEM_SYMBIAN
#  define AVMPLUS_SYMBIAN
#endif
#if AVMSYSTEM_SYMBIAN
#  define VMCFG_SYMBIAN
#endif
#if AVMFEATURE_DEBUGGER
#  define VMCFG_DEBUGGER
#endif
#if AVMFEATURE_DEBUGGER
#  define VMCFG_VERIFYALL
#endif
#if AVMFEATURE_DEBUGGER
#  define AVMPLUS_VERBOSE
#endif
#if AVMFEATURE_DEBUGGER
#  define DEBUGGER
#endif
#if AVMFEATURE_DEBUGGER
#  define AVMPLUS_VERIFYALL
#endif
#if AVMFEATURE_ALLOCATION_SAMPLER
#  define AVMPLUS_SAMPLER
#endif
#if AVMFEATURE_VTUNE
#  define VTUNE
#endif
#if AVMFEATURE_VTUNE
#  define AVMPLUS_VERBOSE
#endif
#if AVMFEATURE_JIT
#  define VMCFG_NANOJIT
#endif
#if AVMFEATURE_JIT
#  define VMCFG_PRECOMP_NAMES
#endif
#if AVMFEATURE_JIT
#  define VMCFG_LOOKUP_CACHE
#endif
#if AVMFEATURE_JIT
#  define FEATURE_NANOJIT
#endif
#if AVMFEATURE_AOT
#  define VMCFG_AOT
#endif
#if AVMFEATURE_AOT
#  define VMCFG_AOTSHELL
#endif
#if AVMFEATURE_ABC_INTERP
#  define VMCFG_INTERPRETER
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define VMCFG_INTERPRETER
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define VMCFG_WORDCODE
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define VMCFG_WORDCODE_PEEPHOLE
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define VMCFG_PRECOMP_NAMES
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define VMCFG_LOOKUP_CACHE
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define AVMPLUS_WORD_CODE
#endif
#if AVMFEATURE_WORDCODE_INTERP
#  define AVMPLUS_PEEPHOLE_OPTIMIZER
#endif
#if AVMFEATURE_THREADED_INTERP
#  define VMCFG_WORDCODE_THREADED
#endif
#if AVMFEATURE_THREADED_INTERP
#  define AVMPLUS_DIRECT_THREADED
#endif
#if AVMFEATURE_SELFTEST
#  define VMCFG_SELFTEST
#endif
#if AVMFEATURE_SELFTEST
#  define AVMPLUS_SELFTEST
#endif
#if AVMFEATURE_EVAL
#  define VMCFG_EVAL
#endif
#if AVMFEATURE_PROTECT_JITMEM
#  define AVMPLUS_JIT_READONLY
#endif
#if AVMFEATURE_SHARED_GCHEAP
#  define MMGC_LOCKING
#endif
#if AVMFEATURE_USE_SYSTEM_MALLOC
#  define MMGC_USE_SYSTEM_MALLOC
#endif
#if AVMFEATURE_CPP_EXCEPTIONS
#  define MMGC_ENABLE_CPP_EXCEPTIONS
#endif
#if AVMFEATURE_INTERIOR_POINTERS
#  define MMGC_INTERIOR_PTRS
#endif
#if AVMFEATURE_JNI
#  define AVMPLUS_WITH_JNI
#endif
#if AVMFEATURE_HEAP_ALLOCA
#  define AVMPLUS_HEAP_ALLOCA
#endif
#if AVMFEATURE_STATIC_FUNCTION_PTRS
#  define AVMPLUS_STATIC_POINTERS
#endif
#if AVMFEATURE_INDIRECT_NATIVE_THUNKS
#  define AVMPLUS_INDIRECT_NATIVE_THUNKS
#endif
#if AVMFEATURE_OVERRIDE_GLOBAL_NEW
#  define MMGC_OVERRIDE_GLOBAL_NEW
#endif
#if AVMFEATURE_MEMORY_PROFILER
#  define MMGC_MEMORY_PROFILER
#endif
#if AVMFEATURE_CACHE_GQCN
#  define VMCFG_CACHE_GQCN
#endif
#if AVMFEATURE_API_VERSIONING
#  define VMCFG_TEST_API_VERSIONING
#endif

#ifdef AVMSHELL_BUILD
extern const char * const avmfeatures;
#endif


/* [<][>][^][v][top][bottom][index][help] */