// // m3_config.h // // Created by Steven Massey on 5/4/19. // Copyright © 2019 Steven Massey. All rights reserved. // #ifndef m3_config_h #define m3_config_h #include "m3_config_platforms.h" // general -------------------------------------------------------------------- # ifndef d_m3CodePageAlignSize # define d_m3CodePageAlignSize 32*1024 # endif # ifndef d_m3EnableCodePageRefCounting # define d_m3EnableCodePageRefCounting 0 # endif # ifndef d_m3MaxFunctionStackHeight # define d_m3MaxFunctionStackHeight 4000 // max: 32768 # endif # ifndef d_m3MaxLinearMemoryPages # define d_m3MaxLinearMemoryPages 32768 # endif # ifndef d_m3MaxFunctionSlots # define d_m3MaxFunctionSlots ((d_m3MaxFunctionStackHeight)*2) # endif # ifndef d_m3MaxConstantTableSize # define d_m3MaxConstantTableSize 120 # endif # ifndef d_m3MaxDuplicateFunctionImpl # define d_m3MaxDuplicateFunctionImpl 3 # endif # ifndef d_m3CascadedOpcodes // Cascaded opcodes are slightly faster at the expense of some memory # define d_m3CascadedOpcodes 1 // Adds ~3Kb to operations table in m3_compile.c # endif # ifndef d_m3VerboseErrorMessages # define d_m3VerboseErrorMessages 1 # endif # ifndef d_m3FixedHeap # define d_m3FixedHeap false //# define d_m3FixedHeap (32*1024) # endif # ifndef d_m3FixedHeapAlign # define d_m3FixedHeapAlign 16 # endif # ifndef d_m3Use32BitSlots # define d_m3Use32BitSlots 1 # endif # ifndef d_m3ProfilerSlotMask # define d_m3ProfilerSlotMask 0xFFFF # endif # ifndef d_m3RecordBacktraces # define d_m3RecordBacktraces 0 # endif # ifndef d_m3EnableExceptionBreakpoint # define d_m3EnableExceptionBreakpoint 0 // see m3_exception.h # endif // profiling and tracing ------------------------------------------------------ # ifndef d_m3EnableOpProfiling # define d_m3EnableOpProfiling 0 // opcode usage counters # endif # ifndef d_m3EnableOpTracing # define d_m3EnableOpTracing 0 // only works with DEBUG # endif # ifndef d_m3EnableStrace # define d_m3EnableStrace 0 // 1 - trace exported function calls // 2 - trace all calls (structured) - requires DEBUG // 3 - all calls + loops + memory operations # endif // logging -------------------------------------------------------------------- # ifndef d_m3LogParse # define d_m3LogParse 0 // .wasm binary decoding info # endif # ifndef d_m3LogModule # define d_m3LogModule 0 // wasm module info # endif # ifndef d_m3LogCompile # define d_m3LogCompile 0 // wasm -> metacode generation phase # endif # ifndef d_m3LogWasmStack # define d_m3LogWasmStack 0 // dump the wasm stack when pushed or popped # endif # ifndef d_m3LogEmit # define d_m3LogEmit 0 // metacode generation info # endif # ifndef d_m3LogCodePages # define d_m3LogCodePages 0 // dump metacode pages when released # endif # ifndef d_m3LogRuntime # define d_m3LogRuntime 0 // higher-level runtime information # endif # ifndef d_m3LogNativeStack # define d_m3LogNativeStack 0 // track the memory usage of the C-stack # endif # ifndef d_m3LogHeapOps # define d_m3LogHeapOps 0 // track heap usage # endif # ifndef d_m3LogTimestamps # define d_m3LogTimestamps 0 // track timestamps on heap logs # endif // other ---------------------------------------------------------------------- # ifndef d_m3HasFloat # define d_m3HasFloat 1 // implement floating point ops # endif #if !d_m3HasFloat && !defined(d_m3NoFloatDynamic) # define d_m3NoFloatDynamic 1 // if no floats, do not fail until flops are actually executed #endif # ifndef d_m3SkipStackCheck # define d_m3SkipStackCheck 0 // skip stack overrun checks # endif # ifndef d_m3SkipMemoryBoundsCheck # define d_m3SkipMemoryBoundsCheck 0 // skip memory bounds checks # endif #endif // m3_config_h