-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathConfigFlagsList.h
1699 lines (1538 loc) · 107 KB
/
ConfigFlagsList.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft Corporation and contributors. All rights reserved.
// Copyright (c) ChakraCore Project Contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#if defined(PHASE) || defined(PHASE_DEFAULT_ON) || defined(PHASE_DEFAULT_OFF)
#ifndef PHASE
#define PHASE(name)
#endif
#ifndef PHASE_DEFAULT_ON
#define PHASE_DEFAULT_ON PHASE
#endif
#ifndef PHASE_DEFAULT_OFF
#define PHASE_DEFAULT_OFF PHASE
#endif
PHASE(All)
PHASE(BGJit)
PHASE(Module)
PHASE(LibInit)
PHASE(JsLibInit)
PHASE(Parse)
PHASE(RegexCompile)
PHASE_DEFAULT_ON(DeferParse)
PHASE(Redeferral)
PHASE(DeferEventHandlers)
PHASE(FunctionSourceInfoParse)
PHASE(StringTemplateParse)
PHASE(CreateParserState)
PHASE(SkipNestedDeferred)
PHASE(CacheScopeInfoNames)
PHASE(ScanAhead)
PHASE_DEFAULT_OFF(ParallelParse)
PHASE(EarlyReferenceErrors)
PHASE(EarlyErrorOnAssignToCall)
PHASE(BgParse)
PHASE(ByteCode)
PHASE(CachedScope)
PHASE(StackFunc)
PHASE(StackClosure)
PHASE(DisableStackFuncOnDeferredEscape)
PHASE(DelayCapture)
PHASE(DebuggerScope)
PHASE(ByteCodeSerialization)
PHASE(VariableIntEncoding)
PHASE(NativeCodeSerialization)
PHASE(OptimizeBlockScope)
PHASE(Delay)
PHASE(Speculation)
PHASE(GatherCodeGenData)
PHASE_DEFAULT_ON(Wasm)
// Wasm frontend
PHASE(WasmBytecode) // Supports -off,-dump,-trace,-profile
PHASE(WasmReader) // Support -trace,-profile
PHASE(WasmSection) // Supports -trace
PHASE(WasmOpCodeDistribution) // Support -dump
// Wasm features per functions
PHASE_DEFAULT_ON(WasmDeferred)
PHASE_DEFAULT_OFF(WasmValidatePrejit)
PHASE(WasmInOut) // Trace input and output of wasm calls
PHASE(WasmMemWrites) // Trace memory writes
PHASE(Asmjs)
PHASE(AsmjsTmpRegisterAllocation)
PHASE(AsmjsEncoder)
PHASE(AsmjsInterpreter)
PHASE(AsmJsJITTemplate)
PHASE_DEFAULT_OFF(AsmjsFunctionEntry)
PHASE(AsmjsInterpreterStack)
PHASE(AsmjsEntryPointInfo)
PHASE(AsmjsCallDebugBreak)
PHASE(BackEnd)
PHASE(IRBuilder)
PHASE(SwitchOpt)
PHASE(BailOnNoProfile)
PHASE(BackendConcatExprOpt)
PHASE(ClosureRangeCheck)
PHASE(ClosureRegCheck)
PHASE(Inline)
PHASE(InlineRecursive)
PHASE(InlineAtEveryCaller) //Inlines a function, say, foo at every caller of foo. Doesn't guarantee all the calls within foo are inlined too.
PHASE(InlineTree) //Inlines every function within a top function, say, foo (which needs to be top function) Note: -force:inline achieves the effect of both -force:InlineTree & -force:InlineAtEveryCaller
PHASE(TryAggressiveInlining)
PHASE(InlineConstructors)
PHASE(InlineBuiltIn)
PHASE(InlineInJitLoopBody)
PHASE(InlineAccessors)
PHASE(InlineGetters)
PHASE(InlineSetters)
PHASE(InlineApply)
PHASE(InlineApplyTarget)
PHASE(InlineApplyWithoutArrayArg)
PHASE(InlineAnyCallApplyTarget)
PHASE(BailOutOnNotStackArgs)
PHASE(InlineCall)
PHASE(InlineCallTarget)
PHASE(PartialPolymorphicInline)
PHASE(PolymorphicInline)
PHASE(PolymorphicInlineFixedMethods)
PHASE(InlineOutsideLoops)
PHASE(InlineFunctionsWithLoops)
PHASE(EliminateArgoutForInlinee)
PHASE(InlineBuiltInCaller)
PHASE(InlineArgsOpt)
PHASE(RemoveInlineFrame)
PHASE(InlinerConstFold)
PHASE_DEFAULT_ON(InlineCallbacks)
PHASE(ExecBOIFastPath)
PHASE(FGBuild)
PHASE(OptimizeTryFinally)
PHASE(RemoveBreakBlock)
PHASE(TailDup)
PHASE(FGPeeps)
PHASE(GlobOpt)
PHASE(PathDepBranchFolding)
PHASE(OptimizeTryCatch)
PHASE_DEFAULT_ON(CaptureByteCodeRegUse)
PHASE(Backward)
PHASE(TrackIntUsage)
PHASE(TrackNegativeZero)
PHASE(TypedArrayVirtual)
PHASE(TrackIntOverflow)
PHASE(TrackCompoundedIntOverflow)
PHASE(Forward)
PHASE(ValueTable)
PHASE(ValueNumbering)
PHASE(AVTInPrePass)
PHASE(PathDependentValues)
PHASE(TrackRelativeIntBounds)
PHASE(BoundCheckElimination)
PHASE(BoundCheckHoist)
PHASE(LoopCountBasedBoundCheckHoist)
PHASE(CopyProp)
PHASE(ObjPtrCopyProp)
PHASE(ConstProp)
PHASE(Int64ConstProp)
PHASE(ConstFold)
PHASE(CSE)
PHASE(HoistConstInt)
PHASE(TypeSpec)
PHASE(AggressiveIntTypeSpec)
PHASE(AggressiveMulIntTypeSpec)
PHASE(LossyIntTypeSpec)
PHASE(FloatTypeSpec)
PHASE(StringTypeSpec)
PHASE(InductionVars)
PHASE(Invariants)
PHASE(FieldCopyProp)
PHASE(FieldPRE)
PHASE(MakeObjSymLiveInLandingPad)
PHASE(HostOpt)
PHASE(ObjTypeSpec)
PHASE(ObjTypeSpecNewObj)
PHASE(ObjTypeSpecIsolatedFldOps)
PHASE(ObjTypeSpecIsolatedFldOpsWithBailOut)
PHASE(ObjTypeSpecStore)
PHASE(EquivObjTypeSpec)
PHASE(EquivObjTypeSpecByDefault)
PHASE(TraceObjTypeSpecTypeGuards)
PHASE(TraceObjTypeSpecWriteGuards)
PHASE(LiveOutFields)
PHASE(DisabledObjTypeSpec)
PHASE(DepolymorphizeInlinees)
PHASE(ReuseAuxSlotPtr)
PHASE(PolyEquivTypeGuard)
PHASE(DeadStoreTypeChecksOnStores)
#if DBG
PHASE(SimulatePolyCacheWithOneTypeForFunction)
#endif
PHASE(CheckThis)
PHASE(StackArgOpt)
PHASE(StackArgFormalsOpt)
PHASE(StackArgLenConstOpt)
PHASE(IndirCopyProp)
PHASE(ArrayCheckHoist)
PHASE(ArrayMissingValueCheckHoist)
PHASE(ArraySegmentHoist)
PHASE(JsArraySegmentHoist)
PHASE(ArrayLengthHoist)
PHASE(EliminateArrayAccessHelperCall)
PHASE(NativeArray)
PHASE(NativeNewScArray)
PHASE(NativeArrayConversion)
PHASE(CopyOnAccessArray)
PHASE(NativeArrayLeafSegment)
PHASE(TypedArrayTypeSpec)
PHASE(LdLenIntSpec)
PHASE(FixDataProps)
PHASE(FixMethodProps)
PHASE(FixAccessorProps)
PHASE(FixDataVarProps)
PHASE(UseFixedDataProps)
PHASE(UseFixedDataPropsInInliner)
PHASE(LazyBailout)
PHASE(LazyBailoutOnImplicitCalls)
PHASE(LazyFixedDataBailout)
PHASE(LazyFixedTypeBailout)
PHASE(FixedMethods)
PHASE(FEFixedMethods)
PHASE(FixedFieldGuardCheck)
PHASE(FixedNewObj)
PHASE(JitAllocNewObj)
PHASE(FixedCtorInlining)
PHASE(FixedCtorCalls)
PHASE(FixedScriptMethodInlining)
PHASE(FixedScriptMethodCalls)
PHASE(FixedBuiltInMethodInlining)
PHASE(FixedBuiltInMethodCalls)
PHASE(SplitNewScObject)
PHASE(OptTagChecks)
PHASE(MemOp)
PHASE(MemSet)
PHASE(MemCopy)
PHASE(IncrementalBailout)
PHASE(DeadStore)
PHASE(ReverseCopyProp)
PHASE(MarkTemp)
PHASE(MarkTempNumber)
PHASE(MarkTempObject)
PHASE(MarkTempNumberOnTempObject)
PHASE(SpeculationPropagationAnalysis)
PHASE(DumpGlobOptInstr) // Print the Globopt instr string in post lower dumps
PHASE(Lowerer)
PHASE(FastPath)
PHASE(LoopFastPath)
PHASE(MathFastPath)
PHASE(Atom)
PHASE(MulStrengthReduction)
PHASE(AgenPeeps)
PHASE(BranchFastPath)
PHASE(CallFastPath)
PHASE(BitopsFastPath)
PHASE(OtherFastPath)
PHASE(ObjectFastPath)
PHASE(ProfileBasedFldFastPath)
PHASE(AddFldFastPath)
PHASE(RootObjectFldFastPath)
PHASE(ArrayLiteralFastPath)
PHASE(ArrayCtorFastPath)
PHASE(NewScopeSlotFastPath)
PHASE(FrameDisplayFastPath)
PHASE(HoistMarkTempInit)
PHASE(HoistConstAddr)
PHASE(JitWriteBarrier)
PHASE(PreLowererPeeps)
PHASE(CFGInJit)
PHASE(TypedArray)
PHASE(TracePinnedTypes)
PHASE(InterruptProbe)
PHASE(EncodeConstants)
PHASE(RegAlloc)
PHASE(Liveness)
PHASE(RegParams)
PHASE(LinearScan)
PHASE(OpHelperRegOpt)
PHASE(StackPack)
PHASE(SecondChance)
PHASE(RegionUseCount)
PHASE(RegHoistLoads)
PHASE(ClearRegLoopExit)
PHASE(Peeps)
PHASE(Layout)
PHASE(EHBailoutPatchUp)
PHASE(FinalLower)
PHASE(PrologEpilog)
PHASE(InsertNOPs)
PHASE(Encoder)
PHASE(Assembly)
PHASE(Emitter)
PHASE(DebugBreak)
#if defined(_M_IX86) || defined(_M_X64)
PHASE(BrShorten)
PHASE(LoopAlign)
#endif
#ifdef RECYCLER_WRITE_BARRIER
#if DBG_DUMP
PHASE(SWB)
#endif
#endif
PHASE(Run)
PHASE(Interpreter)
PHASE(EvalCompile)
PHASE(FastIndirectEval)
PHASE(IdleDecommit)
PHASE(IdleCollect)
PHASE(Marshal)
PHASE(MemoryAllocation)
#ifdef RECYCLER_PAGE_HEAP
PHASE(PageHeap)
#endif
PHASE(LargeMemoryAllocation)
PHASE(PageAllocatorAlloc)
PHASE(Recycler)
PHASE(ThreadCollect)
PHASE(ExplicitFree)
PHASE(ExpirableCollect)
PHASE(GarbageCollect)
PHASE(ConcurrentCollect)
PHASE(BackgroundResetMarks)
PHASE(BackgroundFindRoots)
PHASE(BackgroundRescan)
PHASE(BackgroundRepeatMark)
PHASE(BackgroundFinishMark)
PHASE(ConcurrentPartialCollect)
PHASE(ParallelMark)
PHASE(PartialCollect)
PHASE(ResetMarks)
PHASE(ResetWriteWatch)
PHASE(FindRoot)
PHASE(FindRootArena)
PHASE(FindImplicitRoot)
PHASE(FindRootExt)
PHASE(ScanStack)
PHASE(ConcurrentMark)
PHASE(ConcurrentWait)
PHASE(Rescan)
PHASE(Mark)
PHASE(Sweep)
PHASE(SweepWeak)
PHASE(SweepSmall)
PHASE(SweepLarge)
PHASE(SweepPartialReuse)
PHASE(ConcurrentSweep)
PHASE(Finalize)
PHASE(Dispose)
PHASE(FinishPartial)
PHASE(Host)
PHASE(BailOut)
PHASE(BailIn)
PHASE(GeneratorGlobOpt)
PHASE(RegexQc)
PHASE(RegexOptBT)
PHASE(InlineCache)
PHASE(PolymorphicInlineCache)
PHASE(MissingPropertyCache)
PHASE(PropertyCache) // Trace caching of property lookups using PropertyString and JavascriptSymbol
PHASE(CloneCacheInCollision)
PHASE(ConstructorCache)
PHASE(InlineCandidate)
PHASE(ScriptFunctionWithInlineCache)
PHASE(IsConcatSpreadableCache)
PHASE(Arena)
PHASE(ApplyUsage)
PHASE(ObjectHeaderInlining)
PHASE(ObjectHeaderInliningForConstructors)
PHASE(ObjectHeaderInliningForObjectLiterals)
PHASE(ObjectHeaderInliningForEmptyObjects)
PHASE(OptUnknownElementName)
PHASE(TypePropertyCache)
#if DBG_DUMP
PHASE(InlineSlots)
#endif
PHASE(DynamicProfile)
#ifdef DYNAMIC_PROFILE_STORAGE
PHASE(DynamicProfileStorage)
#endif
PHASE(JITLoopBody)
PHASE(JITLoopBodyInTryCatch)
PHASE(JITLoopBodyInTryFinally)
PHASE(ReJIT)
PHASE(ExecutionMode)
PHASE(SimpleJitDynamicProfile)
PHASE(SimpleJit)
PHASE(FullJit)
PHASE(FailNativeCodeInstall)
PHASE(PixelArray)
PHASE(Etw)
PHASE(Profiler)
PHASE(CustomHeap)
PHASE(XDataAllocator)
PHASE(PageAllocator)
PHASE(StringConcat)
#if DBG_DUMP
PHASE(PRNG)
#endif
PHASE(PreReservedHeapAlloc)
PHASE(CFG)
PHASE(ExceptionStackTrace)
PHASE(ExtendedExceptionInfoStackTrace)
PHASE(TypeHandlerTransition)
PHASE(Debugger)
PHASE(ENC)
PHASE(ConsoleScope)
PHASE(ScriptProfiler)
PHASE(JSON)
PHASE(Intl)
PHASE(RegexResultNotUsed)
PHASE(Error)
PHASE(PropertyRecord)
PHASE(TypePathDynamicSize)
PHASE(ObjectCopy)
PHASE(ShareTypesWithAttributes)
PHASE(ShareAccessorTypes)
PHASE(ShareFuncTypes)
PHASE(ShareCrossSiteFuncTypes)
PHASE(ConditionalCompilation)
PHASE(InterpreterProfile)
PHASE(InterpreterAutoProfile)
PHASE(ByteCodeConcatExprOpt)
PHASE(TraceInlineCacheInvalidation)
PHASE(TracePropertyGuards)
#ifdef ENABLE_JS_ETW
PHASE(StackFramesEvent)
#endif
PHASE(PerfHint)
PHASE(TypeShareForChangePrototype)
PHASE(DeferSourceLoad)
PHASE(DataCache)
PHASE(ObjectMutationBreakpoint)
PHASE(NativeCodeData)
PHASE(XData)
#undef PHASE
#undef PHASE_DEFAULT_ON
#undef PHASE_DEFAULT_OFF
#endif
#ifndef DEFAULT_CONFIG_BgJitDelay
#if _M_ARM
#define DEFAULT_CONFIG_BgJitDelay (70)
#else
#define DEFAULT_CONFIG_BgJitDelay (30)
#endif
#endif // DEFAULT_CONFIG_BgJitDelay
#define DEFAULT_CONFIG_AsmJs (true)
#define DEFAULT_CONFIG_AsmJsEdge (false)
#define DEFAULT_CONFIG_AsmJsStopOnError (false)
#define DEFAULT_CONFIG_Wasm (true)
#define DEFAULT_CONFIG_WasmI64 (false)
#if ENABLE_FAST_ARRAYBUFFER
#define DEFAULT_CONFIG_WasmFastArray (true)
#else
#define DEFAULT_CONFIG_WasmFastArray (false)
#endif
#define DEFAULT_CONFIG_WasmSharedArrayVirtualBuffer (true)
#define DEFAULT_CONFIG_WasmCheckVersion (true)
#define DEFAULT_CONFIG_WasmAssignModuleID (false)
#define DEFAULT_CONFIG_WasmIgnoreLimits (false)
#define DEFAULT_CONFIG_WasmFold (true)
#define DEFAULT_CONFIG_WasmMathExFilter (false)
#define DEFAULT_CONFIG_WasmIgnoreResponse (false)
#define DEFAULT_CONFIG_WasmMaxTableSize (10000000)
#define DEFAULT_CONFIG_WasmThreads (false)
#define DEFAULT_CONFIG_WasmMultiValue (false)
#define DEFAULT_CONFIG_WasmSignExtends (true)
#define DEFAULT_CONFIG_WasmNontrapping (true)
#define DEFAULT_CONFIG_WasmExperimental (false)
#define DEFAULT_CONFIG_BgParse (false)
#define DEFAULT_CONFIG_BgJitDelayFgBuffer (0)
#define DEFAULT_CONFIG_BgJitPendingFuncCap (31)
#define DEFAULT_CONFIG_CurrentSourceInfo (true)
#define DEFAULT_CONFIG_CreateFunctionProxy (true)
#define DEFAULT_CONFIG_HybridFgJit (false)
#define DEFAULT_CONFIG_HybridFgJitBgQueueLengthThreshold (32)
#define DEFAULT_CONFIG_Prejit (false)
#define DEFAULT_CONFIG_ParserStateCache (true)
#define DEFAULT_CONFIG_CompressParserStateCache (false)
#define DEFAULT_CONFIG_DeferTopLevelTillFirstCall (true)
#define DEFAULT_CONFIG_DirectCallTelemetryStats (false)
#define DEFAULT_CONFIG_errorStackTrace (true)
#define DEFAULT_CONFIG_FastLineColumnCalculation (true)
#define DEFAULT_CONFIG_PrintLineColumnInfo (false)
#define DEFAULT_CONFIG_ForceDecommitOnCollect (false)
#define DEFAULT_CONFIG_ForceDeferParse (false)
#define DEFAULT_CONFIG_NoDeferParse (false)
#define DEFAULT_CONFIG_ForceDynamicProfile (false)
#define DEFAULT_CONFIG_ForceExpireOnNonCacheCollect (false)
#define DEFAULT_CONFIG_ForceFastPath (false)
#define DEFAULT_CONFIG_ForceJITLoopBody (false)
#define DEFAULT_CONFIG_ForceStaticInterpreterThunk (false)
#define DEFAULT_CONFIG_ForceCleanPropertyOnCollect (false)
#define DEFAULT_CONFIG_ForceCleanCacheOnCollect (false)
#define DEFAULT_CONFIG_ForceGCAfterJSONParse (false)
#define DEFAULT_CONFIG_ForceSerialized (false)
#define DEFAULT_CONFIG_ForceES5Array (false)
#define DEFAULT_CONFIG_ForceAsmJsLinkFail (false)
#define DEFAULT_CONFIG_StrongArraySort (false)
#define DEFAULT_CONFIG_DumpCommentsFromReferencedFiles (false)
#define DEFAULT_CONFIG_ExtendedErrorStackForTestHost (false)
#define DEFAULT_CONFIG_ForceSplitScope (false)
#define DEFAULT_CONFIG_DelayFullJITSmallFunc (0)
#define DEFAULT_CONFIG_EnableFatalErrorOnOOM (true)
#define DEFAULT_CONFIG_RedeferralCap (3)
//Following determines inline thresholds
#define DEFAULT_CONFIG_InlineThreshold (35) //Default start
#define DEFAULT_CONFIG_AggressiveInlineThreshold (80) //Limit for aggressive inlining.
#define DEFAULT_CONFIG_InlineThresholdAdjustCountInLargeFunction (20)
#define DEFAULT_CONFIG_InlineThresholdAdjustCountInMediumSizedFunction (6)
#define DEFAULT_CONFIG_InlineThresholdAdjustCountInSmallFunction (10)
#define DEFAULT_CONFIG_ConstructorInlineThreshold (21) //Monomorphic constructor threshold
#define DEFAULT_CONFIG_AsmJsInlineAdjust (35) // wasm functions are cheaper to inline, so worth being more aggressive
#define DEFAULT_CONFIG_ConstructorCallsRequiredToFinalizeCachedType (2)
#define DEFAULT_CONFIG_OutsideLoopInlineThreshold (16) //Threshold to inline outside loops
#define DEFAULT_CONFIG_LeafInlineThreshold (60) //Inlinee threshold for function which is leaf (irrespective of it has loops or not)
#define DEFAULT_CONFIG_LoopInlineThreshold (25) //Inlinee threshold for function with loops
#define DEFAULT_CONFIG_PolymorphicInlineThreshold (35) //Polymorphic inline threshold
#define DEFAULT_CONFIG_InlineCountMax (1200) //Max sum of bytecodes of inlinees inlined into a function (excluding built-ins)
#define DEFAULT_CONFIG_InlineCountMaxInLoopBodies (500) // Max sum of bytecodes of inlinees that can be inlined into a jitted loop body (excluding built-ins)
#define DEFAULT_CONFIG_AggressiveInlineCountMax (8000) //Max sum of bytecodes of inlinees inlined into a function (excluding built-ins) when inlined aggressively
#define DEFAULT_CONFIG_MaxFuncInlineDepth (2) //Maximum number of times a function can be inlined within a top function
#define DEFAULT_CONFIG_MaxNumberOfInlineesWithLoop (40) //Inlinee with a loop is controlled by LoopInlineThreshold, though we don't want to inline lot of inlinees with loop, this ensures a limit.
#define DEFAULT_CONFIG_ConstantArgumentInlineThreshold (157) // Bytecode threshold for functions with constant arguments which are used for branching
#define DEFAULT_CONFIG_RecursiveInlineThreshold (2000) // Bytecode threshold recursive call at a call site
#define DEFAULT_CONFIG_RecursiveInlineDepthMax (8) // Maximum inline depth for recursive calls
#define DEFAULT_CONFIG_RecursiveInlineDepthMin (2) // Minimum inline depth for recursive call
#define DEFAULT_CONFIG_InlineInLoopBodyScaleDownFactor (4)
#define DEFAULT_CONFIG_PropertyCacheMissPenalty (10)
#define DEFAULT_CONFIG_PropertyCacheMissThreshold (-100)
#define DEFAULT_CONFIG_PropertyCacheMissReset (-5000)
#define DEFAULT_CONFIG_CloneInlinedPolymorphicCaches (true)
#define DEFAULT_CONFIG_HighPrecisionDate (false)
#define DEFAULT_CONFIG_ForceOldDateAPI (false)
#define DEFAULT_CONFIG_Loop (1)
#define DEFAULT_CONFIG_ForceDiagnosticsMode (false)
#define DEFAULT_CONFIG_UseFullName (true)
#define DEFAULT_CONFIG_EnableContinueAfterExceptionWrappersForHelpers (true)
#define DEFAULT_CONFIG_EnableContinueAfterExceptionWrappersForBuiltIns (true)
#define DEFAULT_CONFIG_EnableFunctionSourceReportForHeapEnum (true)
#define DEFAULT_CONFIG_LoopInterpretCount (150)
#define DEFAULT_CONFIG_LoopProfileIterations (25)
#define DEFAULT_CONFIG_JitLoopBodyHotLoopThreshold (20000)
#define DEFAULT_CONFIG_LoopBodySizeThresholdToDisableOpts (255)
#define DEFAULT_CONFIG_MaxJitThreadCount (2)
#define DEFAULT_CONFIG_ForceMaxJitThreadCount (false)
#ifdef ENABLE_SPECTRE_RUNTIME_MITIGATIONS
#define DEFAULT_CONFIG_MitigateSpectre (true)
#define DEFAULT_CONFIG_AddMaskingBlocks (true)
#define DEFAULT_CONFIG_PoisonVarArrayLoad (true)
#define DEFAULT_CONFIG_PoisonIntArrayLoad (true)
#define DEFAULT_CONFIG_PoisonFloatArrayLoad (true)
#define DEFAULT_CONFIG_PoisonTypedArrayLoad (true)
#define DEFAULT_CONFIG_PoisonStringLoad (true)
#define DEFAULT_CONFIG_PoisonObjectsForLoads (true)
#define DEFAULT_CONFIG_PoisonVarArrayStore (true)
#define DEFAULT_CONFIG_PoisonIntArrayStore (true)
#define DEFAULT_CONFIG_PoisonFloatArrayStore (true)
#define DEFAULT_CONFIG_PoisonTypedArrayStore (true)
#define DEFAULT_CONFIG_PoisonStringStore (true)
#define DEFAULT_CONFIG_PoisonObjectsForStores (true)
#else
#define DEFAULT_CONFIG_MitigateSpectre (false)
#define DEFAULT_CONFIG_AddMaskingBlocks (false)
#define DEFAULT_CONFIG_PoisonVarArrayLoad (false)
#define DEFAULT_CONFIG_PoisonIntArrayLoad (false)
#define DEFAULT_CONFIG_PoisonFloatArrayLoad (false)
#define DEFAULT_CONFIG_PoisonTypedArrayLoad (false)
#define DEFAULT_CONFIG_PoisonStringLoad (false)
#define DEFAULT_CONFIG_PoisonObjectsForLoads (false)
#define DEFAULT_CONFIG_PoisonVarArrayStore (false)
#define DEFAULT_CONFIG_PoisonIntArrayStore (false)
#define DEFAULT_CONFIG_PoisonFloatArrayStore (false)
#define DEFAULT_CONFIG_PoisonTypedArrayStore (false)
#define DEFAULT_CONFIG_PoisonStringStore (false)
#define DEFAULT_CONFIG_PoisonObjectsForStores (false)
#endif
#ifdef RECYCLER_PAGE_HEAP
#define DEFAULT_CONFIG_PageHeap ((Js::Number) PageHeapMode::PageHeapModeOff)
#define DEFAULT_CONFIG_PageHeapAllocStack (false)
#define DEFAULT_CONFIG_PageHeapFreeStack (false)
#define DEFAULT_CONFIG_PageHeapBlockType ((Js::Number) PageHeapBlockTypeFilter::PageHeapBlockTypeFilterAll)
#endif
#define DEFAULT_CONFIG_LowMemoryCap (0xB900000) // 185 MB - based on memory cap for process on low-capacity device
#define DEFAULT_CONFIG_NewPagesCapDuringBGSweeping (15000 * 4)
#define DEFAULT_CONFIG_MaxSingleAllocSizeInMB (2048)
#define DEFAULT_CONFIG_AllocationPolicyLimit (-1)
#define DEFAULT_CONFIG_MaxCodeFill (500)
#define DEFAULT_CONFIG_MaxLoopsPerFunction (10)
#define DEFAULT_CONFIG_NopFrequency (8)
#define DEFAULT_CONFIG_SpeculationCap (1) // Needs to be 1 and not 0 since the compiler complains about a condition being always false
#define DEFAULT_CONFIG_ProfileBasedSpeculationCap (1600)
#define DEFAULT_CONFIG_Verbose (false)
#define DEFAULT_CONFIG_ForceStrictMode (false)
#define DEFAULT_CONFIG_EnableEvalMapCleanup (true)
#define DEFAULT_CONFIG_ExpirableCollectionGCCount (5) // Number of GCs during which entry point profiling occurs
#define DEFAULT_CONFIG_ExpirableCollectionTriggerThreshold (50) // Threshold at which Entry Point Collection is triggered
#define DEFAULT_CONFIG_RegexTracing (false)
#define DEFAULT_CONFIG_RegexProfile (false)
#define DEFAULT_CONFIG_RegexDebug (false)
#define DEFAULT_CONFIG_RegexDebugAST (true)
#define DEFAULT_CONFIG_RegexDebugAnnotatedAST (true)
#define DEFAULT_CONFIG_RegexBytecodeDebug (false)
#define DEFAULT_CONFIG_RegexOptimize (true)
#define DEFAULT_CONFIG_DynamicRegexMruListSize (16)
#define DEFAULT_CONFIG_GoptCleanupThreshold (25)
#define DEFAULT_CONFIG_AsmGoptCleanupThreshold (500)
#define DEFAULT_CONFIG_OptimizeForManyInstances (false)
#define DEFAULT_CONFIG_EnableArrayTypeMutation (false)
#define DEFAULT_CONFIG_DeferParseThreshold (4 * 1024) // Unit is number of characters
#define DEFAULT_CONFIG_ProfileBasedDeferParseThreshold (100) // Unit is number of characters
#define DEFAULT_CONFIG_ProfileBasedSpeculativeJit (true)
#define DEFAULT_CONFIG_WininetProfileCache (true)
#define DEFAULT_CONFIG_MinProfileCacheSize (5) // Minimum number of functions before profile is saved.
#define DEFAULT_CONFIG_ProfileDifferencePercent (15) // If 15% of the functions have different profile we will trigger a save.
#define DEFAULT_CONFIG_Intl (true)
#define DEFAULT_CONFIG_IntlBuiltIns (true)
#define DEFAULT_CONFIG_IntlPlatform (false) // Makes the EngineExtension.Intl object visible to user code as Intl.platform, meant for testing
#ifdef ENABLE_JS_BUILTINS
#define DEFAULT_CONFIG_JsBuiltIn (true)
#else
#define DEFAULT_CONFIG_JsBuiltIn (false)
#endif
#define DEFAULT_CONFIG_JitRepro (false)
#define DEFAULT_CONFIG_LdChakraLib (false)
#define DEFAULT_CONFIG_TestChakraLib (false)
#define DEFAULT_CONFIG_EntryPointInfoRpcData (false)
// ES6 DEFAULT BEHAVIOR
#define DEFAULT_CONFIG_ES6 (true) // master flag to gate all P0-spec-test compliant ES6 features
//CollectGarbage is legacy IE specific global function disabled in Microsoft Edge.
#define DEFAULT_CONFIG_CollectGarbage (false)
// ES6 sub-feature gate - to enable-disable ES6 sub-feature when ES6 flag is enabled
#define DEFAULT_CONFIG_ES6DateParseFix (true)
#define DEFAULT_CONFIG_ES6FunctionNameFull (true)
#define DEFAULT_CONFIG_ES6Generators (true)
#define DEFAULT_CONFIG_ES6IsConcatSpreadable (true)
#define DEFAULT_CONFIG_ES6Math (true)
#ifdef COMPILE_DISABLE_ES6Module
// If ES6Module needs to be disabled by compile flag, DEFAULT_CONFIG_ES6Module should be false
#define DEFAULT_CONFIG_ES6Module (false)
#else
#define DEFAULT_CONFIG_ES6Module (true)
#endif
#define DEFAULT_CONFIG_ES6Object (true)
#define DEFAULT_CONFIG_ES6Number (true)
#define DEFAULT_CONFIG_ES6ObjectLiterals (true)
#define DEFAULT_CONFIG_ES6Proxy (true)
#define DEFAULT_CONFIG_ES6Rest (true)
#define DEFAULT_CONFIG_ES6Spread (true)
#define DEFAULT_CONFIG_ES6String (true)
#define DEFAULT_CONFIG_ES6StringPrototypeFixes (true)
#define DEFAULT_CONFIG_ES2018ObjectRestSpread (true)
#ifndef DEFAULT_CONFIG_ES6PrototypeChain
#ifdef COMPILE_DISABLE_ES6PrototypeChain
// If ES6PrototypeChain needs to be disabled by compile flag, DEFAULT_CONFIG_ES6PrototypeChain should be false
#define DEFAULT_CONFIG_ES6PrototypeChain (false)
#else
#define DEFAULT_CONFIG_ES6PrototypeChain (true)
#endif
#endif
#define DEFAULT_CONFIG_ES6ToPrimitive (true)
#define DEFAULT_CONFIG_ES6ToLength (true)
#define DEFAULT_CONFIG_ES6ToStringTag (true)
#define DEFAULT_CONFIG_ES6Unicode (true)
#define DEFAULT_CONFIG_ES6UnicodeVerbose (true)
#define DEFAULT_CONFIG_ES6Unscopables (true)
#define DEFAULT_CONFIG_ES6RegExSticky (true)
#define DEFAULT_CONFIG_ES2018RegExDotAll (true)
#define DEFAULT_CONFIG_ESBigInt (false)
#define DEFAULT_CONFIG_ESNumericSeparator (true)
#define DEFAULT_CONFIG_ESHashbang (true)
#define DEFAULT_CONFIG_ESSymbolDescription (true)
#define DEFAULT_CONFIG_ESArrayFindFromLast (true)
#define DEFAULT_CONFIG_ESPromiseAny (true)
#define DEFAULT_CONFIG_ESNullishCoalescingOperator (true)
#define DEFAULT_CONFIG_ESGlobalThis (true)
// Jitting generator functions is not functional on ARM
// Also still contains significant bugs on x86/x64 hence disabled
#ifdef _M_ARM32_OR_ARM64
#define DEFAULT_CONFIG_JitES6Generators (false)
#else
#define DEFAULT_CONFIG_JitES6Generators (false)
#endif
#ifdef COMPILE_DISABLE_ES6RegExPrototypeProperties
// If ES6RegExPrototypeProperties needs to be disabled by compile flag, DEFAULT_CONFIG_ES6RegExPrototypeProperties should be false
#define DEFAULT_CONFIG_ES6RegExPrototypeProperties (false)
#else
#define DEFAULT_CONFIG_ES6RegExPrototypeProperties (false)
#endif
#ifdef COMPILE_DISABLE_ES6RegExSymbols
// If ES6RegExSymbols needs to be disabled by compile flag, DEFAULT_CONFIG_ES6RegExSymbols should be false
#define DEFAULT_CONFIG_ES6RegExSymbols (false)
#else
#define DEFAULT_CONFIG_ES6RegExSymbols (false)
#endif
#define DEFAULT_CONFIG_ES7AsyncAwait (true)
#define DEFAULT_CONFIG_ES7ExponentionOperator (true)
#define DEFAULT_CONFIG_ES7TrailingComma (true)
#define DEFAULT_CONFIG_ES7ValuesEntries (true)
#define DEFAULT_CONFIG_ESObjectGetOwnPropertyDescriptors (true)
#define DEFAULT_CONFIG_ESDynamicImport (true)
#define DEFAULT_CONFIG_ESImportMeta (true)
#define DEFAULT_CONFIG_ESExportNsAs (true)
#define DEFAULT_CONFIG_ES2018AsyncIteration (true)
#define DEFAULT_CONFIG_ESTopLevelAwait (true)
#define DEFAULT_CONFIG_ESSharedArrayBuffer (false)
#define DEFAULT_CONFIG_ES6Verbose (false)
#define DEFAULT_CONFIG_ES6All (false)
// ES6 DEFAULT BEHAVIOR
#define DEFAULT_CONFIG_AsyncDebugging (true)
#define DEFAULT_CONFIG_TraceAsyncDebugCalls (false)
#define DEFAULT_CONFIG_ForcePostLowerGlobOptInstrString (false)
#define DEFAULT_CONFIG_EnumerateSpecialPropertiesInDebugger (true)
#define DEFAULT_CONFIG_MaxJITFunctionBytecodeByteLength (4800000)
#define DEFAULT_CONFIG_MaxJITFunctionBytecodeCount (120000)
#define DEFAULT_CONFIG_JitQueueThreshold (6)
#define DEFAULT_CONFIG_FullJitRequeueThreshold (25) // Minimum number of times a function needs to be executed before it is re-added to the jit queue
#define DEFAULT_CONFIG_MinTemplatizedJitRunCount (100) // Minimum number of times a function needs to be interpreted before it is jitted
#define DEFAULT_CONFIG_MinAsmJsInterpreterRunCount (10) // Minimum number of times a function needs to be Asm interpreted before it is jitted
#define DEFAULT_CONFIG_MinTemplatizedJitLoopRunCount (500) // Minimum number of times a function needs to be interpreted before it is jitted
#define DEFAULT_CONFIG_MaxTemplatizedJitRunCount (-1) // Maximum number of times a function can be TJ before it is jitted
#define DEFAULT_CONFIG_MaxAsmJsInterpreterRunCount (-1) // Maximum number of times a function can be Asm interpreted before it is jitted
// Note: The following defaults only apply when the NewSimpleJit is on. The defaults for when it's off are computed in
// ConfigFlagsTable::TranslateFlagConfiguration.
#define DEFAULT_CONFIG_AutoProfilingInterpreter0Limit (12)
#define DEFAULT_CONFIG_ProfilingInterpreter0Limit (4)
#define DEFAULT_CONFIG_AutoProfilingInterpreter1Limit (0)
#define DEFAULT_CONFIG_SimpleJitLimit (132)
#define DEFAULT_CONFIG_ProfilingInterpreter1Limit (12)
// These are used to compute the above defaults for when NewSimpleJit is off
#define DEFAULT_CONFIG_AutoProfilingInterpreterLimit_OldSimpleJit (80)
#define DEFAULT_CONFIG_SimpleJitLimit_OldSimpleJit (25)
#define DEFAULT_CONFIG_MinProfileIterations (16)
#define DEFAULT_CONFIG_MinProfileIterations_OldSimpleJit (25)
#define DEFAULT_CONFIG_MinSimpleJitIterations (16)
#define DEFAULT_CONFIG_NewSimpleJit (false)
#define DEFAULT_CONFIG_MaxLinearIntCaseCount (3) // Maximum number of cases (in switch statement) for which instructions can be generated linearly.
#define DEFAULT_CONFIG_MaxSingleCharStrJumpTableRatio (2) // Maximum single char string jump table size as multiples of the actual case arm
#define DEFAULT_CONFIG_MaxSingleCharStrJumpTableSize (128) // Maximum single char string jump table size
#define DEFAULT_CONFIG_MinSwitchJumpTableSize (9) // Minimum number of case target entries in the jump table(this may also include values that are missing in the consecutive set of integer case arms)
#define DEFAULT_CONFIG_SwitchOptHolesThreshold (50) // Maximum percentage of holes (missing case values in a switch statement) with which a jump table can be created
#define DEFAULT_CONFIG_MaxLinearStringCaseCount (4) // Maximum number of String cases (in switch statement) for which instructions can be generated linearly.
#define DEFAULT_CONFIG_MinDeferredFuncTokenCount (20) // Minimum size in tokens of a defer-parsed function
#if DBG
#define DEFAULT_CONFIG_SkipFuncCountForBailOnNoProfile (0) //Initial Number of functions in a func body to be skipped from forcibly inserting BailOnNoProfile.
#endif
#define DEFAULT_CONFIG_BailOnNoProfileLimit 200 // The limit of bailout on no profile info before triggering a rejit
#define DEFAULT_CONFIG_BailOnNoProfileRejitLimit (50) // The limit of bailout on no profile info before disable all the no profile bailouts
#define DEFAULT_CONFIG_CallsToBailoutsRatioForRejit 10 // Ratio of function calls to bailouts above which a rejit is considered
#define DEFAULT_CONFIG_LoopIterationsToBailoutsRatioForRejit 50 // Ratio of loop iteration count to bailouts above which a rejit of the loop body is considered
#define DEFAULT_CONFIG_MinBailOutsBeforeRejit 2 // Minimum number of bailouts for a single bailout record after which a rejit is considered
#define DEFAULT_CONFIG_MinBailOutsBeforeRejitForLoops 2 // Minimum number of bailouts for a single bailout record after which a rejit is considered
#define DEFAULT_CONFIG_RejitMaxBailOutCount 500 // Maximum number of bailouts for a single bailout record after which rejit is forced.
#if DBG
#define DEFAULT_CONFIG_ValidateIntRanges (false)
#endif
#define DEFAULT_CONFIG_Sse (-1)
#define DEFAULT_CONFIG_DeletedPropertyReuseThreshold (32)
#define DEFAULT_CONFIG_BigDictionaryTypeHandlerThreshold (0xffff)
#define DEFAULT_CONFIG_ForceStringKeyedSimpleDictionaryTypeHandler (false)
#define DEFAULT_CONFIG_TypeSnapshotEnumeration (true)
#define DEFAULT_CONFIG_ConcurrentRuntime (false)
#define DEFAULT_CONFIG_PrimeRecycler (false)
#if defined(_WIN32)
#define DEFAULT_CONFIG_PrivateHeap (true)
#else // defined(_WIN32)
// Don't use PrivateHeap on xplat where we statically link and override new/delete
#define DEFAULT_CONFIG_PrivateHeap (false)
#endif // defined(_WIN32)
#define DEFAULT_CONFIG_DisableRentalThreading (false)
#define DEFAULT_CONFIG_DisableDebugObject (false)
#define DEFAULT_CONFIG_DumpHeap (false)
#define DEFAULT_CONFIG_PerfHintLevel (1)
#define DEFAULT_CONFIG_OOPJITMissingOpts (false)
#define DEFAULT_CONFIG_OOPCFGRegistration (true)
#define DEFAULT_CONFIG_CrashOnOOPJITFailure (false)
#define DEFAULT_CONFIG_ForceJITCFGCheck (false)
#define DEFAULT_CONFIG_UseJITTrampoline (true)
#define DEFAULT_CONFIG_IsolatePrototypes (true)
#define DEFAULT_CONFIG_ChangeTypeOnProto (true)
#define DEFAULT_CONFIG_FixPropsOnPathTypes (true)
#define DEFAULT_CONFIG_BailoutTraceFilter (-1)
#define DEFAULT_CONFIG_TempMin (0)
#define DEFAULT_CONFIG_TempMax (INT_MAX)
#define DEFAULT_CONFIG_LibraryStackFrame (true)
#define DEFAULT_CONFIG_LibraryStackFrameDebugger (false)
#define DEFAULT_CONFIG_FuncObjectInlineCacheThreshold (2) // Maximum number of inline caches a function body may have to allow for inline caches to be allocated on the function object.
#define DEFAULT_CONFIG_ShareInlineCaches (false)
#define DEFAULT_CONFIG_InlineCacheInvalidationListCompactionThreshold (4)
#define DEFAULT_CONFIG_ConstructorCacheInvalidationThreshold (500)
#define DEFAULT_CONFIG_InMemoryTrace (false)
#define DEFAULT_CONFIG_InMemoryTraceBufferSize (1024)
#define DEFAULT_CONFIG_RichTraceFormat (false)
#define DEFAULT_CONFIG_TraceWithStack (false)
#define DEFAULT_CONFIG_InjectPartiallyInitializedInterpreterFrameError (0)
#define DEFAULT_CONFIG_InjectPartiallyInitializedInterpreterFrameErrorType (0)
#define DEFAULT_CONFIG_DeferLoadingAvailableSource (false)
#define DEFAULT_CONFIG_RecyclerForceMarkInterior (false)
#define DEFAULT_CONFIG_MemProtectHeap (false)
#define DEFAULT_CONFIG_InduceCodeGenFailure (30) // When -InduceCodeGenFailure is passed in, 30% of JIT allocations will fail
#define DEFAULT_CONFIG_SkipSplitWhenResultIgnored (false)
#define DEFAULT_CONFIG_MinMemOpCount (16U)
#if ENABLE_COPYONACCESS_ARRAY
#define DEFAULT_CONFIG_MaxCopyOnAccessArrayLength (32U)
#define DEFAULT_CONFIG_MinCopyOnAccessArrayLength (5U)
#define DEFAULT_CONFIG_CopyOnAccessArraySegmentCacheSize (16U)
#endif
#if defined(_M_IX86) || defined(_M_X64)
#define DEFAULT_CONFIG_LoopAlignNopLimit (6)
#endif
#if defined(_M_IX86) || defined(_M_X64)
#define DEFAULT_CONFIG_ZeroMemoryWithNonTemporalStore (true)
#endif
#define DEFAULT_CONFIG_StrictWriteBarrierCheck (false)
#define DEFAULT_CONFIG_KeepRecyclerTrackData (false)
#define DEFAULT_CONFIG_EnableBGFreeZero (true)
#if !GLOBAL_ENABLE_WRITE_BARRIER
#define DEFAULT_CONFIG_ForceSoftwareWriteBarrier (false)
#else
#define DEFAULT_CONFIG_ForceSoftwareWriteBarrier (true)
#endif
#define DEFAULT_CONFIG_WriteBarrierTest (false)
#define DEFAULT_CONFIG_VerifyBarrierBit (false)
#define TraceLevel_Error (1)
#define TraceLevel_Warning (2)
#define TraceLevel_Info (3)
#define TEMP_ENABLE_FLAG_FOR_APPX_BETA_ONLY 1
#define INMEMORY_CACHE_MAX_URL (5) // This is the max number of URLs that the in-memory profile cache can hold.
#define INMEMORY_CACHE_MAX_PROFILE_MANAGER (50) // This is the max number of dynamic scripts that the in-memory profile cache can have
#ifdef SUPPORT_INTRUSIVE_TESTTRACES
#define INTRUSIVE_TESTTRACE_PolymorphicInlineCache (1)
#endif
//
//FLAG(type, name, description, defaultValue)
//
// types:
// String
// Phases
// Number
// Boolean
//
// If the default value is not required it should be left empty
// For Phases, there is no default value. it should always be empty
// Default values for stings must be prefixed with 'L'. See AsmDumpMode
// Scroll till the extreme right to see the default values
#if defined(FLAG) || defined(FLAG_EXPERIMENTAL) || defined(FLAG_REGOVR_EXP)
#ifndef FLAG
#define FLAG(...)
#endif
#ifndef FLAG_EXPERIMENTAL
#define FLAG_EXPERIMENTAL FLAG
#endif
#ifndef FLAG_REGOVR_EXP
#define FLAG_REGOVR_EXP FLAG_EXPERIMENTAL
#endif
// NON-RELEASE FLAGS
#ifdef ENABLE_DEBUG_CONFIG_OPTIONS
// Regular FLAG
#define FLAGNR(Type, Name, String, Default) FLAG(Type, Name, String, Default, NoParent, FALSE)
// Regular flag with acronym
#ifndef FLAGNRA
#define FLAGNRA(Type, Name, Acronym, String, Default) \
FLAGNR(Type, Name, String, Default) \
FLAGNR(Type, Acronym, String, Default)
#endif
// Child FLAG with PARENT FLAG
#define FLAGPNR(Type, ParentName, Name, String, Default) FLAG(Type, Name, String, Default, ParentName, FALSE)
// Regular FLAG with callback function
#define FLAGNRC(Type, Name, String, Default) FLAG(Type, Name, String, Default, NoParent, TRUE)
#else
#define FLAGNR(Type, Name, String, Default)
#ifdef FLAGNRA
#undef FLAGNRA
#endif
#define FLAGNRA(Type, Name, Acronym, String, Default)
#define FLAGPNR(Type, ParentName, Name, String, Default)
#define FLAGNRC(Type, Name, String, Default)
#endif
// RELEASE FLAGS
#define FLAGPR(Type, ParentName, Name, String, Default) FLAG(Type, Name, String, Default, ParentName, FALSE)
#define FLAGR(Type, Name, String, Default) FLAG(Type, Name, String, Default, NoParent, FALSE)
// Release flags with parent and acronym
#ifndef FLAGPRA
#define FLAGPRA(Type, ParentName, Name, Acronym, String, Default) \
FLAG_REGOVR_EXP(Type, Name, String, Default, ParentName, FALSE) \
FLAGNR(Type, Acronym, String, Default)
#endif
// RELEASE Flags enabled by Edge experimental flag
#define FLAGPR_EXPERIMENTAL_WASM(Type, Name, String) FLAG_EXPERIMENTAL(Type, Name, String, true, WasmExperimental, FALSE)
// RELEASE FLAGS WITH REGISTRY OVERRIDE AND EDGE
#define FLAGPR_REGOVR_EXP(Type, ParentName, Name, String, Default) FLAG_REGOVR_EXP(Type, Name, String, Default, ParentName, FALSE)
// Release flag with non-release acronym
#ifndef FLAGRA
#define FLAGRA(Type, Name, Acronym, String, Default) \
FLAGR(Type, Name, String, Default) \
FLAGNR(Type, Acronym, String, Default)
#endif
// Please keep this list alphabetically sorted
#if DBG
FLAGNR(Boolean, ArrayValidate , "Validate each array for valid elements (default: false)", false)
FLAGNR(Boolean, MemOpMissingValueValidate, "Validate Missing Value Tracking on memset/memcopy", false)
FLAGNR(Boolean, OOPJITFixupValidate, "Validate that all entries in fixup list are allocated as NativeCodeData and that all NativeCodeData gets fixed up", false)
#endif
#ifdef ARENA_MEMORY_VERIFY
FLAGNR(Boolean, ArenaNoFreeList , "Do not free list in arena", false)
FLAGNR(Boolean, ArenaNoPageReuse , "Do not reuse page in arena", false)
FLAGNR(Boolean, ArenaUseHeapAlloc , "Arena use heap to allocate memory instead of page allocator", false)
#endif
FLAGNR(Boolean, ValidateInlineStack, "Does a stack walk on helper calls to validate inline stack is correctly restored", false)
FLAGNR(Boolean, AsmDiff , "Dump the IR without memory locations and varying parameters.", false)
FLAGNR(String, AsmDumpMode , "Dump the final assembly to a file without memory locations and varying parameters\n\t\t\t\t\tThe 'filename' is the file where the assembly will be dumped. Dump to console if no file is specified", nullptr)
FLAGNR(Boolean, AsmJs , "Enable Asmjs", DEFAULT_CONFIG_AsmJs)
FLAGNR(Boolean, AsmJsStopOnError , "Stop execution on any AsmJs validation errors", DEFAULT_CONFIG_AsmJsStopOnError)
FLAGNR(Boolean, AsmJsEdge , "Enable asm.js features which may have backward incompatible changes or not validate on old demos", DEFAULT_CONFIG_AsmJsEdge)
FLAGNR(Boolean, Wasm , "Enable WebAssembly", DEFAULT_CONFIG_Wasm)
FLAGNR(Boolean, WasmI64 , "Enable Int64 testing for WebAssembly. ArgIns can be [number,string,{low:number,high:number}]. Return values will be {low:number,high:number}", DEFAULT_CONFIG_WasmI64)
FLAGNR(Boolean, WasmFastArray , "Enable fast array implementation for WebAssembly", DEFAULT_CONFIG_WasmFastArray)
FLAGNR(Boolean, WasmSharedArrayVirtualBuffer, "Use Virtual allocation for WebAssemblySharedArrayBuffer (Windows only)", DEFAULT_CONFIG_WasmSharedArrayVirtualBuffer)
FLAGNR(Boolean, WasmMathExFilter , "Enable Math exception filter for WebAssembly", DEFAULT_CONFIG_WasmMathExFilter)
FLAGNR(Boolean, WasmCheckVersion , "Check the binary version for WebAssembly", DEFAULT_CONFIG_WasmCheckVersion)
FLAGNR(Boolean, WasmAssignModuleID , "Assign an individual ID for WebAssembly module", DEFAULT_CONFIG_WasmAssignModuleID)
FLAGNR(Boolean, WasmIgnoreLimits , "Ignore the WebAssembly binary limits ", DEFAULT_CONFIG_WasmIgnoreLimits)
FLAGNR(Boolean, WasmFold , "Enable i32/i64 const folding", DEFAULT_CONFIG_WasmFold)
FLAGNR(Boolean, WasmIgnoreResponse , "Ignore the type of the Response object", DEFAULT_CONFIG_WasmIgnoreResponse)
FLAGNR(Number, WasmMaxTableSize , "Maximum size allowed to the WebAssembly.Table", DEFAULT_CONFIG_WasmMaxTableSize)
FLAGNR(Boolean, WasmThreads , "Enable WebAssembly threads feature", DEFAULT_CONFIG_WasmThreads)
FLAGNR(Boolean, WasmMultiValue , "Use new WebAssembly multi-value", DEFAULT_CONFIG_WasmMultiValue)
FLAGNR(Boolean, WasmSignExtends , "Use new WebAssembly sign extension operators", DEFAULT_CONFIG_WasmSignExtends)
FLAGNR(Boolean, WasmNontrapping, "Enable non-trapping float-to-int conversions in WebAssembly", DEFAULT_CONFIG_WasmNontrapping)
// WebAssembly Experimental Features
// Master WasmExperimental flag to activate WebAssembly experimental features
FLAGR(Boolean, WasmExperimental, "Enable WebAssembly experimental features", DEFAULT_CONFIG_WasmExperimental)
// The default value of the experimental features will be off because the parent is off
// Turning on the parent causes the child flag to take on their default value (aka on)
// In Edge, we manually turn on the individual child flags
// Not having the DEFAULT_CONFIG_XXXX macro ensures we use CONFIG_FLAG_RELEASE instead of CONFIG_FLAG
FLAGPR_EXPERIMENTAL_WASM(Boolean, WasmSimd , "Enable SIMD in WebAssembly")
FLAGNR(Boolean, AssertBreak , "Debug break on assert", false)
FLAGNR(Boolean, AssertPopUp , "Pop up asserts (default: false)", false)
FLAGNR(Boolean, AssertIgnore , "Ignores asserts if set", false)