-
Notifications
You must be signed in to change notification settings - Fork 397
/
Copy pathOMROptions.cpp
5402 lines (4755 loc) · 298 KB
/
OMROptions.cpp
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) 2000, 2021 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
* distribution and is available at http://eclipse.org/legal/epl-2.0
* or the Apache License, Version 2.0 which accompanies this distribution
* and is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License, v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception [1] and GNU General Public
* License, version 2 with the OpenJDK Assembly Exception [2].
*
* [1] https://www.gnu.org/software/classpath/license.html
* [2] http://openjdk.java.net/legal/assembly-exception.html
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
*******************************************************************************/
#include "control/Options.hpp"
#include "control/OptionsUtil.hpp"
#include "control/Options_inlines.hpp"
#include <algorithm>
#include <ctype.h>
#include <limits.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include "codegen/CodeGenerator.hpp"
#include "compile/Compilation.hpp"
#include "compile/CompilationTypes.hpp"
#include "compile/ResolvedMethod.hpp"
#include "control/OptimizationPlan.hpp"
#include "control/Recompilation.hpp"
#include "env/CompilerEnv.hpp"
#include "env/IO.hpp"
#include "env/ObjectModel.hpp"
#include "env/Processors.hpp"
#include "env/VerboseLog.hpp"
#include "env/defines.h"
#include "env/jittypes.h"
#include "il/DataTypes.hpp"
#include "il/ILOps.hpp"
#include "infra/SimpleRegex.hpp"
#include "ras/Debug.hpp"
#include "ras/IgnoreLocale.hpp"
#if !defined(J9_PROJECT_SPECIFIC)
#include "env/JitConfig.hpp"
#endif
#ifdef J9_PROJECT_SPECIFIC
#include "control/RecompilationInfo.hpp"
#include "env/VMJ9.h"
#endif
using namespace OMR;
#define SET_OPTION_BIT(x) TR::Options::setBit, offsetof(OMR::Options,_options[(x)&TR_OWM]), (static_cast<uintptr_t>((x)&~TR_OWM))
#define RESET_OPTION_BIT(x) TR::Options::resetBit, offsetof(OMR::Options,_options[(x)&TR_OWM]), (static_cast<uintptr_t>((x)&~TR_OWM))
#define NoOptString "noOpt"
#define DisableAllocationInliningString "disableAllocationInlining"
#define DisableInlineCheckCastString "disableInlineCheckCast"
#define DisableInlineIfInstanceOfString "disableInlineIfInstanceOf"
#define DisableInlineInstanceOfString "disableInlineInstanceOf"
#define DisableInlineMonEntString "disableInlineMonEnt"
#define DisableInlineMonExitString "disableInlineMonExit"
#define DisableInliningOfNativesString "disableInliningOfNatives"
#define DisableNewInstanceImplOptString "disableNewInstanceImplOpt"
#define DisableFastStringIndexOfString "disableFastStringIndexOf"
#define DisableVirtualGuardNOPingString "disableVirtualGuardNOPing"
#define DisableAnnotations "disableAnnotations"
#define EnableAnnotations "enableAnnotations"
#define TR_VSS_ALIGNMENT 8
#define TR_AGGR_CONST_DISPLAY_SIZE 16
#define TR_STORAGE_ALIGNMENT_DISPLAY_SIZE 128
#define TR_MAX_BUCKET_INDEX_COUNT 20
#define TR_MAX_LIMITED_GRA_REGS 5
#define TR_MAX_LIMITED_GRA_CANDIDATES (INT_MAX)
#define TR_MAX_LIMITED_GRA_BLOCKS (INT_MAX)
#define TR_MAX_LIMITED_GRA_REPRIORITIZE (2)
#define TR_MAX_LIMITED_GRA_PERFORM_CELLS (INT_MAX)
#define TR_PERFORM_INLINE_TREE_EXPANSION 0
#define TR_PERFORM_INLINE_BLOCK_EXPANSION 0
static char * EXCLUDED_METHOD_OPTIONS_PREFIX = "ifExcluded";
// The following options must be placed in alphabetical order for them to work properly
TR::OptionTable OMR::Options::_jitOptions[] = {
{ "abstractTimeGracePeriodInliningAggressiveness=", "O<nnn>Time to maintain full inlining aggressiveness\t",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_abstractTimeGracePeriod, 0, "F%d", NOT_IN_SUBSET },
{ "abstractTimeToReduceInliningAggressiveness=", "O<nnn>Time to lower inlining aggressiveness from highest to lowest level\t",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_abstractTimeToReduceInliningAggressiveness, 0, "F%d", NOT_IN_SUBSET },
{"acceptHugeMethods", "O\tallow processing of really large methods", SET_OPTION_BIT(TR_ProcessHugeMethods), "F" },
{"activateCompThreadWhenHighPriReqIsBlocked", "M\tactivate another compilation thread when high priority request is blocked", SET_OPTION_BIT(TR_ActivateCompThreadWhenHighPriReqIsBlocked), "F", NOT_IN_SUBSET},
{"aggressiveRecompilationChances=", "O<nnn>\tnumber of chances per method to recompile with the "
"aggressive recompilation mechanism",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_aggressiveRecompilationChances, 0, "F%d", NOT_IN_SUBSET},
{"allowVPRangeNarrowingBasedOnDeclaredType",
"I\tallow value propagation to assume that integers declared "
"narrower than 32-bits (boolean, byte, char, short) are in-range",
SET_OPTION_BIT(TR_AllowVPRangeNarrowingBasedOnDeclaredType), "F" },
{"alwaysFatalAssert", "I\tAlways execute fatal assertion for testing purposes", SET_OPTION_BIT(TR_AlwaysFatalAssert), "F"},
{"alwaysSafeFatalAssert", "I\tAlways issue a safe fatal assertion for testing purposes", SET_OPTION_BIT(TR_AlwaysSafeFatal), "F"},
{"alwaysWorthInliningThreshold=", "O<nnn>\t", TR::Options::set32BitNumeric, offsetof(OMR::Options, _alwaysWorthInliningThreshold), 0, "F%d" },
{"aot", "O\tahead-of-time compilation",
SET_OPTION_BIT(TR_AOT), "F", NOT_IN_SUBSET},
{"aotOnlyFromBootstrap", "O\tahead-of-time compilation allowed only for methods from bootstrap classes",
SET_OPTION_BIT(TR_AOTCompileOnlyFromBootstrap), "F", NOT_IN_SUBSET },
{"aotrtDebugLevel=", "R<nnn>\tprint aotrt debug output according to level", TR::Options::set32BitNumeric, offsetof(OMR::Options,_newAotrtDebugLevel), 0, "F%d"},
{"aotSecondRunDetection", "M\tperform second run detection for AOT", RESET_OPTION_BIT(TR_NoAotSecondRunDetection), "F", NOT_IN_SUBSET},
{"assignEveryGlobalRegister", "I\tnever refuse to assign any possible register for GRA in spite of the resulting potential spills", SET_OPTION_BIT(TR_AssignEveryGlobalRegister), "F"},
{"assumeStartupPhaseUntilToldNotTo", "M\tUse compiler.Command(""endOfStartup"") to exit startup phase",
SET_OPTION_BIT(TR_AssumeStartupPhaseUntilToldNotTo), "F" },
{"assumeStrictFP", "C\talways assume strictFP semantics",
SET_OPTION_BIT(TR_StrictFP), "F" },
{"bcount=", "O<nnn>\tnumber of invocations before compiling methods with loops",
TR::Options::setCount, offsetof(OMR::Options,_initialBCount), 0, "F%d"},
{"bestAvailOpt", "O\tdeprecated; equivalent to optLevel=warm",
TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), warm},
{"bigAppThreshold=", "R<nnn>\tNumber of loaded classes used to determine if crt app is 'big'",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_bigAppThreshold, 0, "F%d", NOT_IN_SUBSET},
{"bigCalleeFreqCutoffAtHot=", "O<nnn>\tInliner threshold for block frequncy for cold callees for opt level higher then warm",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeFreqCutoffAtHot), 40, "F%d"},
{"bigCalleeFreqCutoffAtWarm=", "O<nnn>\tInliner threshold for block frequncy for cold callees for opt level less of equal to warm",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeFreqCutoffAtWarm), 40, "F%d"},
{"bigCalleeHotOptThreshold=", "O<nnn>\tInliner threshold", TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeHotOptThreshold), 0, "F%d" },
{"bigCalleeScorchingOptThreshold=", "O<nnn>\tInliner threshold", TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeScorchingOptThreshold), 0, "F%d" },
{"bigCalleeThreshold=", "O<nnn>\tInliner threshold", TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeThreshold), 0, "F%d" },
{"bigCalleeThresholdForColdCallsAtHot=", "O<nnn>\tInliner threshold for cold calls for opt level higher then warm",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeThresholdForColdCallsAtHot), 500, "F%d"},
{"bigCalleeThresholdForColdCallsAtWarm=", "O<nnn>\tInliner threshold for cold calls for opt level less or equal to warm",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _bigCalleeThresholdForColdCallsAtWarm), 100, "F%d"},
{"blockShufflingSequence=", "D<string>\tDescription of the particular block shuffling operations to perform; see source code for more details",
TR::Options::setString, offsetof(OMR::Options,_blockShufflingSequence), 0, "P%s"},
{"breakAfterCompile", "D\traise trap when method compilation ends", SET_OPTION_BIT(TR_BreakAfterCompile), "F" },
{"breakBeforeCompile", "D\traise trap when method compilation begins", SET_OPTION_BIT(TR_BreakBeforeCompile), "F" },
{"breakOnBBStart", "D\traise trap on BBStarts of method", SET_OPTION_BIT(TR_BreakBBStart), "F" },
{"breakOnCompile", "D\tdeprecated; equivalent to breakBeforeCompile", SET_OPTION_BIT(TR_BreakBeforeCompile), "F" },
{"breakOnCreate=", "D{regex}\traise trap when creating an item whose name matches regex", TR::Options::setRegex, offsetof(OMR::Options,_breakOnCreate), 0, "P"},
{"breakOnEntry", "D\tinsert entry breakpoint instruction in generated code",
SET_OPTION_BIT(TR_EntryBreakPoints), "F" },
{"breakOnJ2IThunk", "D\tbreak before executing a jit-to-interpreter thunk", SET_OPTION_BIT(TR_BreakOnJ2IThunk), "P", NOT_IN_SUBSET},
{"breakOnLoad", "D\tbreak after the options have been processed", TR::Options::breakOnLoad, 0, 0, "P", NOT_IN_SUBSET},
{"breakOnNew", "D\tbreak before an inlined object allocation", SET_OPTION_BIT(TR_BreakOnNew), "F"},
{"breakOnOpts=", "D{regex}\traise trap when performing opts with matching regex",
TR::Options::setRegex, offsetof(OMR::Options, _breakOnOpts), 0, "P"},
{"breakOnPrint=", "D{regex}\traise trap when print an item whose name matches regex", TR::Options::setRegex, offsetof(OMR::Options,_breakOnPrint), 0, "P"},
{"breakOnThrow=", "D{regex}\traise trap when throwing an exception whose class name matches regex", TR::Options::setRegex, offsetof(OMR::Options, _breakOnThrow), 0, "P"},
{"breakOnWriteBarrier", "D\tinsert breakpoint instruction ahead of inline write barrier", SET_OPTION_BIT(TR_BreakOnWriteBarrier), "F" },
{"breakOnWriteBarrierSnippet", "D\tinsert breakpoint instruction at beginning of write barrier snippet", SET_OPTION_BIT(BreakOnWriteBarrierSnippet), "F" },
{"checkGRA", "D\tPreserve stores that would otherwise be removed by GRA, and then verify that the stored value matches the global register", SET_OPTION_BIT(TR_CheckGRA), "F"},
{"checkStructureDuringExitExtraction", "D\tCheck structure after each step of exit extraction", SET_OPTION_BIT(TR_CheckStructureDuringExitExtraction), "F"},
{"classesWithFoldableFinalFields=", "O{regex}\tAllow hard-coding of values of final fields in the specified classes. Default is to fold anything considered safe.", TR::Options::setRegex, offsetof(OMR::Options, _classesWithFolableFinalFields), 0, "F"},
{"classExtendRatSize=", "M<nnn>\tsize of runtime assumption table for class extend",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_classExtendRatSize, 0, "F%d", NOT_IN_SUBSET},
{"classRedefinitionUPICRatSize=", "M<nnn>\tsize of runtime assumption table for classRedefinitionUPIC",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_classRedefinitionUPICRatSize, 0, "F%d", NOT_IN_SUBSET},
{"coldRunBCount=", "O<nnn>\tnumber of invocations before compiling methods with loops in AOT cold runs",
TR::Options::setCount, offsetof(OMR::Options,_initialColdRunBCount), 0, "F%d", NOT_IN_SUBSET},
{"coldRunCount=", "O<nnn>\tnumber of invocations before compiling methods with loops in AOT cold runs",
TR::Options::setCount, offsetof(OMR::Options,_initialColdRunCount), 0, "F%d", NOT_IN_SUBSET},
{"coldUpgradeSampleThreshold=", "O<nnn>\tnumber of samples a method needs to get in order "
"to be upgraded from cold to warm. Default 30. ",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_coldUpgradeSampleThreshold, 0, "P%d", NOT_IN_SUBSET},
{"compilationStrategy=", "O<strategyname>\tname of the compilation strategy to use",
TR::Options::setStaticString, (intptr_t)(&OMR::Options::_compilationStrategyName), 0, "F%s", NOT_IN_SUBSET},
{"compilationThreads=", "R<nnn>\tnumber of compilation threads to use",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_numUsableCompilationThreads, 0, "F%d", NOT_IN_SUBSET},
{"compile", "D\tCompile these methods immediately. Primarily for use with Compiler.command", SET_OPTION_BIT(TR_CompileBit), "F" },
{"compThreadCPUEntitlement=", "M<nnn>\tThreshold for CPU utilization of compilation threads",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_compThreadCPUEntitlement, 0, "F%d", NOT_IN_SUBSET },
{"concurrentLPQ", "M\tCompilations from low priority queue can go in parallel with compilations from main queue", SET_OPTION_BIT(TR_ConcurrentLPQ), "F", NOT_IN_SUBSET },
{"conservativeCompilation","O\tmore conservative decisions regarding compilations", SET_OPTION_BIT(TR_ConservativeCompilation), "F"},
{"continueAfterILValidationError", "O\tDo not abort compilation upon encountering an ILValidation failure.", SET_OPTION_BIT(TR_ContinueAfterILValidationError), "F"},
{"count=", "O<nnn>\tnumber of invocations before compiling methods without loops",
TR::Options::setCount, offsetof(OMR::Options,_initialCount), 0, "F%d"},
{"countOptTransformations=", "D\treport number of matching opt transformations in verbose log", TR::Options::configureOptReporting, TR_VerboseOptTransformations, 0, "F"},
{"countPercentageForEarlyCompilation=", "M<nnn>\tNumber 1..100",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_countPercentageForEarlyCompilation, 0, "F%d", NOT_IN_SUBSET },
{"counts=", "Oc0 b0 m0 c1 b1 m1 ...\trecompilation counts, where cN, "
"bN and mN are the count, bcount and milcount values to "
"recompile at level N. If a value is '-' that opt level "
"is skipped.\n"
"Overrides count, bcount, milcount and optLevel options.",
TR::Options::setString, offsetof(OMR::Options,_countString), 0, "P%s", NOT_IN_SUBSET},
{"countWriteBarriersRT", "D\tcount how many fast and slow RT write barriers occur per thread", SET_OPTION_BIT(TR_CountWriteBarriersRT), "F" },
{"cpuExpensiveCompThreshold=", "M<nnn>\tthreshold for when compilations are considered cpu expensive",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_cpuExpensiveCompThreshold, 0, "F%d", NOT_IN_SUBSET},
{"cpuUsageCircularBufferSize=", "O<nnn>\tSet the size of the CPU Usage Circular Buffer; Set it to 0 to disable",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_cpuUsageCircularBufferSize, 0, "F%d", NOT_IN_SUBSET},
{"cpuUsageCircularBufferUpdateFrequencySec=", "O<nnn>\tFrequency of the CPU Usage Array update",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_cpuUsageCircularBufferUpdateFrequencySec, 0, "F%d", NOT_IN_SUBSET},
{"crashDuringCompile", "M\tforce a crash during compilation", SET_OPTION_BIT(TR_CrashDuringCompilation), "F" },
{"debugBeforeCompile", "D\tinvoke the debugger when method compilation begins", SET_OPTION_BIT(TR_DebugBeforeCompile), "F" },
{"debugCounterBucketGranularity=", "D<nnn>\tNumber of buckets per power of two for histogram debug counters", TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_counterBucketGranularity), 0, "F%d"},
{"debugCounterBuckets=", "D<nnn>\tAlias for counterBucketGranularity", TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_counterBucketGranularity), 0, "F%d"},
{"debugCounterFidelity=", "D<nnn>\tDisable dynamic debug counters with fidelity rating below this", TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_minCounterFidelity), 0, "F%d"},
{"debugCounterHistograms=", "D{regex}\tEnable these debug counters broken down into value buckets", TR::Options::setRegex, offsetof(OMR::Options, _counterHistogramNames), 0, "F"},
{"debugCounters=", "D{regex}\tEnable dynamic debug counters with names matching regex (unless they fail to meet some other criterion)", TR::Options::setRegex, offsetof(OMR::Options, _enabledDynamicCounterNames), 0, "F"},
{"debugCounterWarmupSeconds=", "D<nnn>\tDebug counters will be reset to zero after nnn seconds, so only increments after this point will end up in the final report", TR::Options::set64BitSignedNumeric, offsetof(OMR::Options,_debugCounterWarmupSeconds), 0, "F%d"},
{"debugInliner", "O\ttrace statements to debug the Inliner", SET_OPTION_BIT(TR_DebugInliner), "F" },
{"debugOnCompile", "D\tdeprecated; equivalent to debugBeforeCompile", SET_OPTION_BIT(TR_DebugBeforeCompile), "F" },
{"debugOnCreate=", "D{regex}\tinvoke the debugger when creating an item whose name matches regex", TR::Options::setRegex, offsetof(OMR::Options,_debugOnCreate), 0, "P"},
{"debugOnEntry", "D\tinvoke the debugger at the entry of a method", SET_OPTION_BIT(TR_DebugOnEntry), "F" },
{"debugRedundantMonitorElimination", "O\ttrace statements to debug Monitor Elimination", SET_OPTION_BIT(TR_DebugRedundantMonitorElimination), "F" },
{"deferReferenceManipulations", "I\tdefer object reference manipulations to the host runtime.", SET_OPTION_BIT(TR_DeferReferenceManipulations), "F"},
{"delayCompile=", "I<nnn>\tAmount of time in ms before compile is started",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_delayCompile), 0, "F%d"},
{"delayToEnableIdleCpuExploitation=", "M<nnn>\t",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_delayToEnableIdleCpuExploitation, 0, "F%d", NOT_IN_SUBSET },
{"disableAbstractInlining", "O\tdisable inlining of abstract methods with a single implementor", SET_OPTION_BIT(TR_DisableAbstractInlining), "F"},
{"disableAdaptiveDumbInliner", "O\tdisable adaptive dumbInliner strategy", SET_OPTION_BIT(TR_DisableAdaptiveDumbInliner), "F"},
{"disableAESInHardware", "O\tdo not use native AES instructions", SET_OPTION_BIT(TR_DisableAESInHardware), "F"},
{"disableAggressiveRecompilations", "R\trecompilation to higher opt levels is not anymore twice as probable", SET_OPTION_BIT(TR_DisableAggressiveRecompilations), "F"},
{DisableAllocationInliningString, "O\tdisable ANewArray inline fast helper", SET_OPTION_BIT(TR_DisableAllocationInlining) , "F"},
{"disableAllocationOfScratchBTL", "M\tRefuse to allocate scratch memory below the line (zOS 31-bit)", SET_OPTION_BIT(TR_DontAllocateScratchBTL), "F", NOT_IN_SUBSET },
{"disableAllocationSinking", "O\tdon't delay object allocations until immediately before the corresponding constructor calls", TR::Options::disableOptimization, allocationSinking, 0, "P"},
{"disableAndSimplification", "O\tdisable and simplification", TR::Options::disableOptimization, andSimplification, 0, "P"},
{DisableAnnotations, "O\tdisable annotation support", RESET_OPTION_BIT(TR_EnableAnnotations), "F"},
{"disableAOTAtCheapWarm", "O\tdisable AOT with cheap warm opt level", SET_OPTION_BIT(TR_DisableAotAtCheapWarm), "F", NOT_IN_SUBSET},
{"disableAOTBytesCompression", "O\tdisable compressing AOT bytes", SET_OPTION_BIT(TR_DisableAOTBytesCompression), "F"},
{"disableAOTCheckCastInlining", "O\tdisable AOT check cast inlining", SET_OPTION_BIT(TR_DisableAOTCheckCastInlining), "F"},
{"disableAOTColdCheapTacticalGRA", "O\tdisable AOT cold cheap tactical GRA", SET_OPTION_BIT(TR_DisableAOTColdCheapTacticalGRA), "F"},
{"disableAOTInstanceFieldResolution", "O\tdisable AOT instance field resolution", SET_OPTION_BIT(TR_DisableAOTInstanceFieldResolution), "F"},
{"disableAOTInstanceOfInlining", "O\tdisable AOT instance of inlining", SET_OPTION_BIT(TR_DisableAOTInstanceOfInlining), "F"},
{"disableAOTResolutionPeeking", "O\tdo not use resolved state at AOT compile time for performance decisions", SET_OPTION_BIT(TR_DisablePeekAOTResolutions), "F"},
{"disableAOTResolveDiffCLMethods", "O\tdo not resolve AOT methods from different class loaders", SET_OPTION_BIT(TR_DisableAOTResolveDiffCLMethods), "F"},
{"disableAOTStaticField", "O\tdisable AOT static field inlining", SET_OPTION_BIT(TR_DisableAOTStaticField), "F"},
{"disableAOTValidationOpts", "O\tdisable AOT optimizations with validations", SET_OPTION_BIT(TR_DisableAOTCheckCastInlining | TR_DisableAOTInstanceOfInlining | TR_DisableAOTInstanceFieldResolution | TR_DisableAOTStaticField), "F"},
{"disableAOTWarmRunThroughputImprovement", "O\tdisable change iprofiler entry choosing heuristic to improve aot warm run throughput", SET_OPTION_BIT(TR_DisableAOTWarmRunThroughputImprovement), "F"},
{"disableArrayCopyOpts", "O\tdisable array copy optimiations", SET_OPTION_BIT(TR_DisableArrayCopyOpts), "F"},
{"disableArraySetOpts", "O\tdisable array set optimiations", SET_OPTION_BIT(TR_DisableArraySetOpts), "F"},
{"disableArraySetStoreElimination", "O\tdisable arrayset store elimination", SET_OPTION_BIT(TR_DisableArraysetStoreElimination), "F"},
{"disableArrayStoreCheckOpts", "O\tdisable array store check optimizations",SET_OPTION_BIT(TR_DisableArrayStoreCheckOpts), "F"},
{"disableAsyncCheckInsertion", "O\tdisable insertion of async checks in large loopless methods", TR::Options::disableOptimization, asyncCheckInsertion, 0, "F" },
{"disableAsyncCheckVersioning", "O\tdisable versioning of loops wrt async checks", SET_OPTION_BIT(TR_DisableAsyncCheckVersioning), "F"},
{"disableAsyncCompilation", "M\tdisable asynchronous compilation", SET_OPTION_BIT(TR_DisableAsyncCompilation), "F"},
{"disableAutoSIMD", "M\tdisable automatic vectorization of loops", SET_OPTION_BIT(TR_DisableAutoSIMD), "F"},
{"disableBasicBlockExtension", "O\tdisable basic block extension", TR::Options::disableOptimization, basicBlockExtension, 0, "P"},
{"disableBasicBlockPeepHole", "O\tdisable basic blocks peepHole", SET_OPTION_BIT(TR_DisableBasicBlockPeepHole), "F"},
{"disableBCDArithChildOrdering", "O\tstress testing option -- do not reorder children of BCD arithmetic nodes", SET_OPTION_BIT(TR_DisableBCDArithChildOrdering), "F" },
{"disableBCDOppTracing", "O\tdisable tracing of various BCD perf opportunities", SET_OPTION_BIT(TR_DisableBCDOppTracing), "F"},
{"disableBDLLVersioning", "O\tdisable BigDecimal long lookaside versioning", SET_OPTION_BIT(TR_DisableBDLLVersioning), "F"},
{"disableBitOpcode", "O\tdisable converting calling bit operation java method to bitOpcode", SET_OPTION_BIT(TR_DisableBitOpcode), "F"},
{"disableBlockShuffling", "O\tdisable random rearrangement of blocks", TR::Options::disableOptimization, blockShuffling, 0, "P"},
{"disableBlockSplitter", "O\tdisable block splitter", TR::Options::disableOptimization, blockSplitter, 0, "P"},
{"disableBlockVersioner", "O\tdisable block versioner", SET_OPTION_BIT(TR_DisableBlockVersioner), "P"},
{"disableBranchOnCount", "O\tdisable branch on count instructions for s390", SET_OPTION_BIT(TR_DisableBranchOnCount), "F"},
{"disableBranchPreload", "O\tdisable return branch preload", SET_OPTION_BIT(TR_DisableBranchPreload), "F"},
{"disableCallConstUncommoning", "O\tdisable uncommon call constant node phase", SET_OPTION_BIT(TR_DisableCallConstUncommoning), "F"},
{"disableCallGraphInlining", "O\tdisable Interpreter Profiling based inlining and code size estimation", SET_OPTION_BIT(TR_DisableCallGraphInlining), "P"},
{"disableCatchBlockRemoval", "O\tdisable catch block removal", TR::Options::disableOptimization, catchBlockRemoval, 0, "P"},
{"disableCFGSimplification", "O\tdisable Control Flow Graph simplification", TR::Options::disableOptimization, CFGSimplification, 0, "P"},
{"disableCheapWarmOpts", "O\tenable cheap warm optimizations", SET_OPTION_BIT(TR_DisableCheapWarmOpts), "F"},
{"disableCheckcastAndProfiledGuardCoalescer", "O\tdisable checkcast and profiled guard coalescion optimization ", SET_OPTION_BIT(TR_DisableCheckcastAndProfiledGuardCoalescer), "F"},
{"disableCHOpts", "O\tdisable CHTable based optimizations", SET_OPTION_BIT(TR_DisableCHOpts), "F"},
{"disableClassChainSharing", "M\tdisable class sharing", RESET_OPTION_BIT(TR_EnableClassChainSharing), "F", NOT_IN_SUBSET},
{"disableClassChainValidationCaching", "M\tdisable class chain validation caching", RESET_OPTION_BIT(TR_EnableClassChainValidationCaching), "F", NOT_IN_SUBSET},
{"disableClearCodeCacheFullFlag", "I\tdisable the re-enabling of full code cache when a method body is freed.", SET_OPTION_BIT(TR_DisableClearCodeCacheFullFlag),"F", NOT_IN_SUBSET},
{"disableCodeCacheConsolidation", "M\tdisable code cache consolidation", RESET_OPTION_BIT(TR_EnableCodeCacheConsolidation), "F", NOT_IN_SUBSET},
{"disableCodeCacheReclamation", "I\tdisable the freeing of compilations.", SET_OPTION_BIT(TR_DisableCodeCacheReclamation),"F", NOT_IN_SUBSET},
{"disableCodeCacheSnippets", "O\tdisable code cache snippets (e.g. allocation prefetch snippet) ", SET_OPTION_BIT(TR_DisableCodeCacheSnippets), "F"},
{"disableColdBlockMarker", "O\tdisable detection of cold blocks", TR::Options::disableOptimization, coldBlockMarker, 0, "P"},
{"disableColdBlockOutlining", "O\tdisable outlining of cold blocks", TR::Options::disableOptimization, coldBlockOutlining, 0, "P"},
{"disableCompactLocals", "O\tdisable compact locals", TR::Options::disableOptimization, compactLocals, 0, "P"},
{"disableCompactNullChecks", "O\tdisable compact null checks", TR::Options::disableOptimization, compactNullChecks, 0, "P"},
{"disableCompareAndBranchInstruction", "O\tdisable compareAndBranch instruction", SET_OPTION_BIT(TR_DisableCompareAndBranchInstruction), "F"},
{"disableCompilationAfterDLT", "O\tdisable queueing of normal compilation for method that has been DLT compiled.", SET_OPTION_BIT(TR_DisableCompilationAfterDLT), "F"},
{"disableCompilationThread", "M\tdisable compilation on a separate thread", SET_OPTION_BIT(TR_DisableCompilationThread), "F"},
{"disableConservativeColdInlining", "O\tDo not be conservative with inlining at cold", SET_OPTION_BIT(TR_DisableConservativeColdInlining), "F" },
{"disableConservativeHotRecompForServerMode", "R\tDo not be more conservative in server mode", SET_OPTION_BIT(TR_DisableConservativeHotRecompilationForServerMode), "F", NOT_IN_SUBSET},
{"disableConservativeInlining", "O\tDo not be conservative with inlining", SET_OPTION_BIT(TR_DisableConservativeInlining), "F" },
{"disableConverterReducer", "O\tdisable reuducing converters methods to intrinisic arrayTranslate",SET_OPTION_BIT(TR_DisableConverterReducer), "F"},
{"disableCPUUtilization", "M\tdisable tracking of cpu utilization", SET_OPTION_BIT(TR_DisableCPUUtilization), "F", NOT_IN_SUBSET},
{"disableCrackedEdit", "O\tdisable cracking of edit/edit-and-mark", SET_OPTION_BIT(TR_DisableCrackedEditOptimization), "F" },
{"disableCustomMethodHandleThunks", "R\tdisable creation of custom invokeExact thunks for MethodHandles", SET_OPTION_BIT(TR_DisableCustomMethodHandleThunks), "F", NOT_IN_SUBSET},
{"disableDAATrailingZeros", "O\tdisable DAA trailing zero in byte array acceleration", SET_OPTION_BIT(TR_DisableDAATrailingZero), "F"},
{"disableDataCacheReclamation", "I\tdisable the reaping of data caches when they are no longer needed.", SET_OPTION_BIT(TR_DisableDataCacheReclamation),"F", NOT_IN_SUBSET},
{"disableDeadStoreBailOut", "O\tdisable bail out of dead store", SET_OPTION_BIT(TR_DisableDeadStoreBailOut), "F"},
{"disableDeadTreeElimination", "O\tdisable dead tree elimination", TR::Options::disableOptimization, deadTreesElimination, 0, "P"},
{"disableDelayRelocationForAOTCompilations", "M\tDo not relocate code for AOT compilations right away", SET_OPTION_BIT(TR_DisableDelayRelocationForAOTCompilations), "F" },
{"disableDememoization", "O\talways call \"memoizing\" getters (like Integer.valueOf) rather than having Escape Analysis turn them into noncontiguous stack allocations", SET_OPTION_BIT(TR_DisableDememoization), "F"},
{"disableDirectMemoryOps", "O\tdisable generation of direct memory instructions",SET_OPTION_BIT(TR_DisableDirectMemoryOps), "F"},
{"disableDirectStaticAccessOnZ", "O\tsupport relative load instructions for c and c++", SET_OPTION_BIT(TR_DisableDirectStaticAccessOnZ), "F"},
{"disableDirectToJNI", "O\tdisable all JNI linkage dispatch sequences including thunks", SET_OPTION_BIT(TR_DisableDirectToJNI), "F"},
{"disableDirectToJNIInline", "O\tdisable direct calls to JNI methods from jitted methods (but still create thunks)", SET_OPTION_BIT(TR_DisableDirectToJNIInline), "F"},
{"disableDLTBytecodeIndex=", "O<nnn>\tprevent DLT compilation at the specified bytecode index", TR::Options::set32BitNumeric, offsetof(OMR::Options,_disableDLTBytecodeIndex), 0, "F%d"},
{"disableDLTrecompilationPrevention", "M\tdisable the prevention of DLT bogus recompilations", SET_OPTION_BIT(TR_DisableDLTrecompilationPrevention), "F", NOT_IN_SUBSET},
{"disableDoubleWordStackAlignment", "O\tdisable double word java stack alignement on z", SET_OPTION_BIT(TR_DisableDoubleWordStackAlignment), "F"},
{"disableDowngradeToColdOnVMPhaseStartup", "M\tdisable downgrading optLevel to cold during STARTUP VM phase", SET_OPTION_BIT( TR_DisableDowngradeToColdOnVMPhaseStartup), "F", NOT_IN_SUBSET},
{"disableDualTLH", "D\tDisable use of non-zero initialized TLH", SET_OPTION_BIT(TR_DisableDualTLH), "F"},
{"disableDumpFlowGraph", "L\tDisable dumping of the flow graph into trace file", SET_OPTION_BIT(TR_DisableDumpFlowGraph), "P"},
{"disableDynamicLoopTransfer", "O\tdisable dynamic loop transfer", SET_OPTION_BIT(TR_DisableDynamicLoopTransfer), "F"},
{"disableDynamicRIBufferProcessing", "O\tprevent disabling buffer processing", SET_OPTION_BIT(TR_DisableDynamicRIBufferProcessing), "F", NOT_IN_SUBSET},
{"disableDynamicSamplingWindow", "M\t", SET_OPTION_BIT(TR_DisableDynamicSamplingWindow), "F", NOT_IN_SUBSET},
{"disableEarlyCompilationDuringIdleCpu","M\t", RESET_OPTION_BIT(TR_EnableEarlyCompilationDuringIdleCpu), "F", NOT_IN_SUBSET},
{"disableEDO", "O\tdisable exception directed optimizations", SET_OPTION_BIT(TR_DisableEDO), "F"},
{"disableEmptyPreHeaderCheck", "O\tdisable Empty pre-header check in loop canonicalization", SET_OPTION_BIT(TR_DisableEmptyPreHeaderCheck), "F"},
{"disableEnhancedClobberEval", "O\tdisable passthrough clobber eval", SET_OPTION_BIT(TR_DisableEnhancedClobberEval), "F"},
{"disableEscapeAnalysis", "O\tdisable escape analysis", TR::Options::disableOptimization, escapeAnalysis, 0, "P"},
{"disableExitExtraction", "O\tdisable extraction of structure nodes that unconditionally exit to outer regions", SET_OPTION_BIT(TR_DisableExitExtraction), "F"},
{"disableExplicitNewInitialization", "O\tdisable explicit new initialization", TR::Options::disableOptimization, explicitNewInitialization, 0, "P"},
{"disableFastAssumptionReclamation", "O\tdisable fast assumption reclamation", SET_OPTION_BIT(TR_DisableFastAssumptionReclamation), "F", NOT_IN_SUBSET},
{"disableFastDLTOnLongRunningInterpreter", "O\tdisable logic to trigger DLT when a compiled body exists, but we're receiving interpreter ticks",
SET_OPTION_BIT(TR_DisableFastDLTOnLongRunningInterpreter), "F", NOT_IN_SUBSET},
{DisableFastStringIndexOfString, "O\tdisable fast String.indexOf", SET_OPTION_BIT(TR_DisableFastStringIndexOf), "F"},
{"disableFieldPrivatization", "O\tdisable field privatization", TR::Options::disableOptimization, fieldPrivatization, 0, "P"},
{"disableForcedEXInlining", "O\tdisable forced EX inlining", SET_OPTION_BIT(TR_DisableForcedEXInlining), "F"},
{"disableFPCodeGen", "O\tdisable floating point code generation", SET_OPTION_BIT(TR_DisableFPCodeGen), "F"},
{"disableFPE", "C\tdisable FPE", SET_OPTION_BIT(TR_DisableFPE), "F"},
{"disableGCRPatching", "R\tdisable patching of the GCR guard", RESET_OPTION_BIT(TR_EnableGCRPatching), "F"},
{"disableGlobalCopyPropagation", "O\tdisable global copy propagation", TR::Options::disableOptimization, globalCopyPropagation, 0, "P"},
{"disableGlobalDSE", "O\tdisable global dead store elimination", TR::Options::disableOptimization, globalDeadStoreElimination, 0, "P"},
{"disableGlobalLiveVariablesForGC", "O\tdisable global live variables for GC", TR::Options::disableOptimization, globalLiveVariablesForGC, 0, "P"},
{"disableGlobalStaticBaseRegister", "O\tdisable global static base register ", SET_OPTION_BIT(TR_DisableGlobalStaticBaseRegister), "F"},
{"disableGlobalVP", "O\tdisable global value propagation", TR::Options::disableOptimization, globalValuePropagation, 0, "P"},
{"disableGLU", "O\tdisable general loop unroller", TR::Options::disableOptimization, generalLoopUnroller, 0, "P"},
{"disableGLUColdRedirection", "O\tdisable general loop unroller redirection of cold edges to loop header", SET_OPTION_BIT(TR_DisableGLUColdRedirection), "F"},
{"disableGRA", "O\tdisable IL based global register allocator", TR::Options::disableOptimization, tacticalGlobalRegisterAllocator, 0, "P"},
{"disableGRACostBenefitModel", "O\tdisable GRA cost/benefit model", RESET_OPTION_BIT(TR_EnableGRACostBenefitModel), "F" },
{"disableGuardedCallArgumentRemat", "O\tdon't rematerialize a guarded virtual call's arguments on the cold path; instead, leave the expressions on the mainline path", SET_OPTION_BIT(TR_DisableGuardedCallArgumentRemat), "F"},
{"disableGuardedCountingRecompilation","O\tDisable insertion of a recompilation counter at the beginning of the method due to the original compile being done early", SET_OPTION_BIT(TR_DisableGuardedCountingRecompilations), "F"},
{"disableGuardedCountingRecompilations","O\tdeprecated. Same as disableGuardedCountingRecompilation", SET_OPTION_BIT(TR_DisableGuardedCountingRecompilations), "F"},
{"disableGuardedStaticFinalFieldFolding", "O\tdisable static final field folding guarded by OSR guards", SET_OPTION_BIT(TR_DisableGuardedStaticFinalFieldFolding), "F", NOT_IN_SUBSET },
{"disableHalfSlotSpills", "O\tdisable sharing of a single 8-byte spill temp for two 4-byte values", SET_OPTION_BIT(TR_DisableHalfSlotSpills), "P"},
#ifdef J9_PROJECT_SPECIFIC
{"disableHandleRecompilationOps", "O\tdisable handling operations that require recompilation", TR::Options::disableOptimization, handleRecompilationOps, 0, "P"},
#endif
{"disableHardwareProfilerDataCollection", "O\tdisable the collection of hardware profiler information while maintaining the framework", SET_OPTION_BIT(TR_DisableHWProfilerDataCollection), "F", NOT_IN_SUBSET},
{"disableHardwareProfilerDuringStartup", "O\tdisable hardware profiler during startup", SET_OPTION_BIT(TR_DisableHardwareProfilerDuringStartup), "F", NOT_IN_SUBSET},
{"disableHardwareProfileRecompilation","O\tdisable hardware profile recompilation", RESET_OPTION_BIT(TR_EnableHardwareProfileRecompilation), "F", NOT_IN_SUBSET},
{"disableHardwareProfilerReducedWarm", "O\tdisable hardware profiler reduced warm recompilation", SET_OPTION_BIT(TR_DisableHardwareProfilerReducedWarm), "F", NOT_IN_SUBSET},
{"disableHardwareProfilerReducedWarmUpgrades", "O\tdisable hardware profiler reduced warm recompilation Upgrades", SET_OPTION_BIT(TR_DisableHardwareProfilerReducedWarmUpgrades), "F", NOT_IN_SUBSET},
{"disableHardwareProfilingThread", "O\tdo not create a separate thread for hardware profiling", SET_OPTION_BIT(TR_DisableHWProfilerThread), "F", NOT_IN_SUBSET},
{"disableHeapAllocOOL", "O\tdisable heap alloc OOL and replace with heap alloc snippet", SET_OPTION_BIT(TR_DisableHeapAllocOOL), "F"},
{"disableHierarchyInlining", "O\tdisable inlining of overridden methods not overridden in subclass of the type of this pointer", SET_OPTION_BIT(TR_DisableHierarchyInlining), "F"},
{"disableHighWordRA", "O\tdisable High Word register allocations on z196 or newer", SET_OPTION_BIT(TR_DisableHighWordRA), "F"},
{"disableHPRSpill", "O\tdisable spilling 31-bit values into High Word registers on z196 or newer", SET_OPTION_BIT(TR_DisableHPRSpill), "F"},
{"disableHPRUpgrade", "O\tdisable upgrading 31-bit instructions to use High Word registers on z196 or newer", SET_OPTION_BIT(TR_DisableHPRUpgrade), "F"},
{"disableHWAcceleratedStringCaseConv", "O\tdisable SIMD case conversion for toUpperCase and toLowerCase in Java", SET_OPTION_BIT(TR_DisableSIMDStringCaseConv), "F"},
#ifdef J9_PROJECT_SPECIFIC
{"disableIdiomPatterns=", "I{regex}\tlist of idiom patterns to disable",
TR::Options::setRegex, offsetof(OMR::Options, _disabledIdiomPatterns), 0, "P"},
{"disableIdiomRecognition", "O\tdisable idiom recognition", TR::Options::disableOptimization, idiomRecognition, 0, "P"},
#endif
{"disableImmutableFieldAliasing", "O\tdisable special handling for immutable fields.", SET_OPTION_BIT(TR_DisableImmutableFieldAliasing), "P"},
{"disableIncrementalCCR", "O\tdisable incremental ccr", SET_OPTION_BIT(TR_DisableIncrementalCCR), "F" ,NOT_IN_SUBSET},
{DisableInlineCheckCastString, "O\tdisable CheckCast inline fast helper", SET_OPTION_BIT(TR_DisableInlineCheckCast) , "F"},
{"disableInlineCheckIfFinalizeObject", "M\tdisable CheckIfFinalizeObject inline helper", SET_OPTION_BIT(TR_DisableInlineCheckIfFinalizeObject), "F"},
{"disableInlineEXTarget", "O\tdisable inlining of EX target for arraycopy and arraycmp", SET_OPTION_BIT(TR_DisableInlineEXTarget), "F"},
{DisableInlineIfInstanceOfString, "O\tdisable IfInstanceOf inline fast helper", SET_OPTION_BIT(TR_DisableInlineIfInstanceOf), "F"},
{DisableInlineInstanceOfString, "O\tdisable InstanceOf inline fast helper", SET_OPTION_BIT(TR_DisableInlineInstanceOf) , "F"},
{"disableInlineIsInstance", "O\tdisable isInstance inline fast helper", SET_OPTION_BIT(TR_DisableInlineIsInstance) , "F"},
{DisableInlineMonEntString, "O\tdisable MonEnt inline fast helper", SET_OPTION_BIT(TR_DisableInlineMonEnt) , "F"},
{DisableInlineMonExitString, "O\tdisable MonExit inline fast helper", SET_OPTION_BIT(TR_DisableInlineMonExit) , "F"},
{"disableInlinerArgsPropagation", "O\tenable argument propagation in inliner", SET_OPTION_BIT(TR_DisableInlinerArgsPropagation), "F"},
{"disableInlinerFanIn", "O\tdisable fan in as a consideration for inlining", SET_OPTION_BIT(TR_DisableInlinerFanIn), "F"},
{"disableInlineSites=", "O{regex}\tlist of inlined sites to disable",
TR::Options::setRegex, offsetof(OMR::Options, _disabledInlineSites), 0, "P"},
{"disableInlineWriteBarriersRT", "O\tdisable write barrier inline fast helper for real-time", SET_OPTION_BIT(TR_DisableInlineWriteBarriersRT) , "F"},
{"disableInlining", "O\tdisable IL inlining", TR::Options::disableOptimization, inlining, 0, "P"},
{"disableInliningDuringVPAtWarm", "O\tdisable inlining during VP for warm bodies", SET_OPTION_BIT(TR_DisableInliningDuringVPAtWarm), "F"},
{DisableInliningOfNativesString, "O\tdisable inlining of natives", SET_OPTION_BIT(TR_DisableInliningOfNatives), "F"},
{"disableInnerPreexistence", "O\tdisable inner preexistence", TR::Options::disableOptimization, innerPreexistence, 0, "P"},
{"disableIntegerCompareSimplification", "O\tdisable byte/short/int/long compare simplification ", SET_OPTION_BIT(TR_DisableIntegerCompareSimplification), "F"},
{"disableInterfaceCallCaching", "O\tdisable interfaceCall caching ", SET_OPTION_BIT(TR_disableInterfaceCallCaching), "F"},
{"disableInterfaceInlining", "O\tdisable merge new", SET_OPTION_BIT(TR_DisableInterfaceInlining), "F"},
{"disableInternalPointers", "O\tdisable internal pointer creation", SET_OPTION_BIT(TR_DisableInternalPointers), "F"},
{"disableInterpreterProfiling", "O\tdisable Interpreter Profiling hooks ", SET_OPTION_BIT(TR_DisableInterpreterProfiling), "F"},
{"disableInterpreterProfilingThread", "O\tdo not create a separate thread for interpreter profiling", SET_OPTION_BIT(TR_DisableIProfilerThread), "F", NOT_IN_SUBSET},
{"disableInterpreterSampling", "O\tdisable sampling of interpreted methods", SET_OPTION_BIT(TR_DisableInterpreterSampling), "F"},
{"disableIntrinsics", "O\tdisable inlining of packed decimal intrinsic functions", SET_OPTION_BIT(TR_DisableIntrinsics), "F"},
{"disableInvariantArgumentPreexistence", "O\tdisable invariable argument preexistence", TR::Options::disableOptimization, invariantArgumentPreexistence, 0, "P"},
{"disableInvariantCodeMotion", "O\tdisable invariant code motion.", SET_OPTION_BIT(TR_DisableInvariantCodeMotion), "P"},
{"disableIPA", "O\tdisable inter procedural analysis.", SET_OPTION_BIT(TR_DisableIPA), "P"},
{"disableIprofilerDataCollection", "M\tdisables the collection of iprofiler information while maintaining the framework", SET_OPTION_BIT(TR_DisableIProfilerDataCollection), "F", NOT_IN_SUBSET},
{"disableIprofilerDataPersistence", "M\tdisable storage of iprofile information in the shared cache", SET_OPTION_BIT(TR_DisablePersistIProfile), "F"},
{"disableIsolatedSE", "O\tdisable isolated store elimination", TR::Options::disableOptimization, isolatedStoreElimination, 0, "P"},
{"disableIterativeSA", "O\trevert back to a recursive version of Structural Analysis", SET_OPTION_BIT(TR_DisableIterativeSA), "P"},
{"disableIVTT", "O\tdisable IV Type transformation", TR::Options::disableOptimization, IVTypeTransformation, 0, "P"},
{"disableJavaEightStartupHeuristics", "M\t", SET_OPTION_BIT(TR_DisableJava8StartupHeuristics), "F", NOT_IN_SUBSET },
{"disableJITServerBufferedExpensiveCompilations","O\tdisable JITServer buffered expensive compilations", SET_OPTION_BIT(TR_DisableJITServerBufferedExpensiveCompilations), "F"},
{"disableJProfiling", "O\tdisable JProfiling", RESET_OPTION_BIT(TR_EnableJProfiling), "F"},
{"disableJProfilingInProfilingCompilations", "O\tDisable use of jprofiling instrumentation in profiling compilations", SET_OPTION_BIT(TR_DisableJProfilingInProfilingCompilations), "F"},
{"disableJProfilingThread", "O\tdisable separate thread for JProfiling", SET_OPTION_BIT(TR_DisableJProfilerThread), "F", NOT_IN_SUBSET},
{"disableKnownObjectTable", "O\tdisable support for including heap object info in symbol references", SET_OPTION_BIT(TR_DisableKnownObjectTable), "F"},
{"disableLastITableCache", "C\tdisable using class lastITable cache for interface dispatches", SET_OPTION_BIT(TR_DisableLastITableCache), "F"},
{"disableLeafRoutineDetection", "O\tdisable lleaf routine detection on zlinux", SET_OPTION_BIT(TR_DisableLeafRoutineDetection), "F"},
{"disableLinkageRegisterAllocation", "O\tdon't turn parm loads into RegLoads in first basic block", SET_OPTION_BIT(TR_DisableLinkageRegisterAllocation), "F"},
{"disableLiveMonitorMetadata", "O\tdisable the creation of live monitor metadata", SET_OPTION_BIT(TR_DisableLiveMonitorMetadata), "F"},
{"disableLiveRangeSplitter", "O\tdisable live range splitter", SET_OPTION_BIT(TR_DisableLiveRangeSplitter), "F"},
{"disableLoadExtensions", "O\tdisable load extensions", TR::Options::disableOptimization, loadExtensions, 0, "P"},
{"disableLocalCSE", "O\tdisable local common subexpression elimination", TR::Options::disableOptimization, localCSE, 0, "P"},
{"disableLocalCSEVolatileCommoning", "O\tdisable local common subexpression elimination volatile commoning", SET_OPTION_BIT(TR_DisableLocalCSEVolatileCommoning), "F"},
{"disableLocalDSE", "O\tdisable local dead store elimination", TR::Options::disableOptimization, localDeadStoreElimination, 0, "P"},
{"disableLocalLiveRangeReduction", "O\tdisable local live range reduction", TR::Options::disableOptimization, localLiveRangeReduction, 0,"P"},
{"disableLocalLiveVariablesForGC", "O\tdisable local live variables for GC", TR::Options::disableOptimization, localLiveVariablesForGC, 0, "P"},
{"disableLocalReordering", "O\tdisable local reordering", TR::Options::disableOptimization, localReordering, 0, "P"},
{"disableLocalVP", "O\tdisable local value propagation", TR::Options::disableOptimization, localValuePropagation, 0, "P"},
{"disableLocalVPSkipLowFreqBlock", "O\tDo not skip processing of low frequency blocks in localVP", RESET_OPTION_BIT(TR_EnableLocalVPSkipLowFreqBlock), "F" },
{"disableLockReservation", "O\tdisable lock reservation", SET_OPTION_BIT(TR_DisableLockResevation), "F"},
{"disableLookahead", "O\tdisable class lookahead", SET_OPTION_BIT(TR_DisableLookahead), "P"},
{"disableLoopAliasRefiner", "O\tdisable loop alias refinement", TR::Options::disableOptimization, loopAliasRefiner, 0, "P"},
{"disableLoopCanonicalization", "O\tdisable loop canonicalization", TR::Options::disableOptimization, loopCanonicalization, 0, "P"},
{"disableLoopEntryAlignment", "O\tdisable loop Entry alignment", SET_OPTION_BIT(TR_DisableLoopEntryAlignment), "F"},
{"disableLoopInversion", "O\tdisable loop inversion", TR::Options::disableOptimization, loopInversion, 0, "P"},
{"disableLoopReduction", "O\tdisable loop reduction", TR::Options::disableOptimization, loopReduction, 0, "P"},
{"disableLoopReplicator", "O\tdisable loop replicator", TR::Options::disableOptimization, loopReplicator, 0, "P"},
{"disableLoopReplicatorColdSideEntryCheck","I\tdisable cold side-entry check for replicating loops containing hot inner loops", SET_OPTION_BIT(TR_DisableLoopReplicatorColdSideEntryCheck), "P"},
{"disableLoopStrider", "O\tdisable loop strider", TR::Options::disableOptimization, loopStrider, 0, "P"},
{"disableLoopTransfer", "O\tdisable the loop transfer part of loop versioner", SET_OPTION_BIT(TR_DisableLoopTransfer), "F"},
{"disableLoopVersioner", "O\tdisable loop versioner", TR::Options::disableOptimization, loopVersioner, 0, "P"},
{"disableMarkingOfHotFields", "O\tdisable marking of Hot Fields", SET_OPTION_BIT(TR_DisableMarkingOfHotFields), "F"},
{"disableMarshallingIntrinsics", "O\tDisable packed decimal to binary marshalling and un-marshalling optimization. They will not be inlined.", SET_OPTION_BIT(TR_DisableMarshallingIntrinsics), "F"},
{"disableMaskVFTPointers", "O\tdisable masking of VFT Pointers", SET_OPTION_BIT(TR_DisableMaskVFTPointers), "F"},
{"disableMaxMinOptimization", "O\tdisable max and min optimizations", SET_OPTION_BIT(TR_DisableMaxMinOptimization), "F"},
{"disableMccFreeBlockRecycling", "O\tdo not reuse code cache freed blocks", SET_OPTION_BIT(TR_DisableFreeCodeCacheBlockRecycling), "F", NOT_IN_SUBSET},
{"disableMCSBypass", "O\tdisable allocating JNI global references to skip some levels of indirection when accessing a MutableCallSite's target MethodHandle in jitted code", SET_OPTION_BIT(TR_DisableMCSBypass), "F"},
{"disableMergeStackMaps", "O\tdisable stack map merging", SET_OPTION_BIT(TR_DisableMergeStackMaps), "P"},
{"disableMetadataReclamation", "I\tdisable J9JITExceptionTable reclamation", SET_OPTION_BIT(TR_DisableMetadataReclamation), "F", NOT_IN_SUBSET},
{"disableMethodHandleInlineWithoutPeeking", "O\tInline method handle thunks using peeking in inliner ", SET_OPTION_BIT(TR_DisableMHInlineWithoutPeeking), "F" },
{"disableMethodHandleInvokeOpts", "O\tdo not perform any special optimizations on calls to MethodHandle.invoke", SET_OPTION_BIT(TR_DisableMethodHandleInvokeOpts), "F", NOT_IN_SUBSET},
{"disableMethodHandleThunks", "D\tdo not produce jitted bodies to accelerate JSR292 MethodHandle invocation", SET_OPTION_BIT(TR_DisableMethodHandleThunks), "F", NOT_IN_SUBSET},
{"disableMethodHandleTransformer", "O\tdisable MethodHandle transformer", TR::Options::disableOptimization, methodHandleTransformer, 0, "P"},
{"disableMethodIsCold", "O\tdo not use heuristics to determine whether whole methods are cold based on how many times they have been interpreted", SET_OPTION_BIT(TR_DisableMethodIsCold), "F"},
{"disableMHCustomizationLogicCalls", "C\tdo not insert calls to MethodHandle.doCustomizationLogic for handle invocations outside of thunks", RESET_OPTION_BIT(TR_EnableMHCustomizationLogicCalls), "F"},
{"disableMonitorCoarsening", "O\tdisable monitor coarsening", SET_OPTION_BIT(TR_DisableMonitorCoarsening), "F"},
{"disableMoreOpts", "O\tapply noOpt optimization level and disable codegen optimizations", TR::Options::disableMoreOpts, offsetof(OMR::Options, _optLevel), noOpt, "P"},
{"disableMultiLeafArrayCopy", "O\tdisable multi-leaf arraycopy for real-time", SET_OPTION_BIT(TR_DisableMultiLeafArrayCopy), "F"},
{"disableMultiTargetInlining", "O\tdisable multi-target inlining", SET_OPTION_BIT(TR_DisableMultiTargetInlining), "F"},
{"disableMutableCallSiteGuards", "O\tdisable virtual guards for calls to java.lang.invoke.MutableCallSite.getTarget().invokeExact(...) (including invokedynamic)", SET_OPTION_BIT(TR_DisableMutableCallSiteGuards), "F"},
{"disableNewBlockOrdering", "O\tdisable new block ordering, instead use basic block extension", SET_OPTION_BIT(TR_DisableNewBlockOrdering), "P"},
{"disableNewBVA", "O\tdisable structure based bit vector analysis",SET_OPTION_BIT(TR_DisableNewBVA), "F"},
{"disableNewInliningInfrastructure", "O\tdisable new inlining infrastructure ", SET_OPTION_BIT(TR_DisableNewInliningInfrastructure), "F"},
{DisableNewInstanceImplOptString, "O\tdisable newInstanceImpl opt", SET_OPTION_BIT(TR_DisableNewInstanceImplOpt), "F"},
{"disableNewMethodOverride", "O\tdisable replacement for jitUpdateInlineAttribute", SET_OPTION_BIT(TR_DisableNewMethodOverride), "F"},
{"disableNewStoreHint", "O\tdisable re-initializing BCD nodes to a new store hint when one is available", SET_OPTION_BIT(TR_DisableNewStoreHint), "F"},
{"disableNewX86VolatileSupport", "O\tdisable new X86 Volatile Support", SET_OPTION_BIT(TR_DisableNewX86VolatileSupport), "F"},
{"disableNextGenHCR", "O\tdisable HCR implemented with on-stack replacement", SET_OPTION_BIT(TR_DisableNextGenHCR), "F"},
{"disableNonvirtualInlining", "O\tdisable inlining of non virtual methods", SET_OPTION_BIT(TR_DisableNonvirtualInlining), "F"},
{"disableNopBreakpointGuard", "O\tdisable nop of breakpoint guards", SET_OPTION_BIT(TR_DisableNopBreakpointGuard), "F"},
{"disableNoServerDuringStartup", "M\tDo not use NoServer during startup", SET_OPTION_BIT(TR_DisableNoServerDuringStartup), "F"},
{"disableNoVMAccess", "O\tdisable compilation without holding VM access", SET_OPTION_BIT(TR_DisableNoVMAccess), "F"},
{"disableOnDemandLiteralPoolRegister", "O\tdisable on demand literal pool register", SET_OPTION_BIT(TR_DisableOnDemandLiteralPoolRegister), "F"},
{"disableOpts=", "O{regex}\tlist of optimizations to disable",
TR::Options::setRegex, offsetof(OMR::Options, _disabledOpts), 0, "P"},
{"disableOptTransformations=", "O{regex}\tlist of optimizer transformations to disable",
TR::Options::setRegex, offsetof(OMR::Options, _disabledOptTransformations), 0, "P"},
{"disableOSR", "O\tdisable support for on-stack replacement", SET_OPTION_BIT(TR_DisableOSR), "F"},
{"disableOSRCallSiteRemat", "O\tdisable use of the call stack remat table in on-stack replacement", SET_OPTION_BIT(TR_DisableOSRCallSiteRemat), "F"},
{"disableOSRExceptionEdgeRemoval", "O\tdon't trim away unused on-stack replacement points", TR::Options::disableOptimization, osrExceptionEdgeRemoval, 0, "P"},
#ifdef J9_PROJECT_SPECIFIC
{"disableOSRGuardRemoval", "O\tdisable OSR guard removal", TR::Options::disableOptimization, osrGuardRemoval, 0, "P"},
#endif
{"disableOSRLiveRangeAnalysis", "O\tdisable live range analysis for on-stack replacement", SET_OPTION_BIT(TR_DisableOSRLiveRangeAnalysis), "F"},
{"disableOSRLocalRemat", "O\tdisable use of remat when inserting guards for on-stack replacement", SET_OPTION_BIT(TR_DisableOSRLocalRemat), "F"},
{"disableOSRSharedSlots", "O\tdisable support for shared slots in on-stack replacement", SET_OPTION_BIT(TR_DisableOSRSharedSlots), "F"},
{"disableOutlinedNew", "O\tdo object allocation logic inline instead of using a fast jit helper", SET_OPTION_BIT(TR_DisableOutlinedNew), "F"},
{"disablePackedDecimalIntrinsics", "O\tDisables packed decimal function optimizations and avoid generating exception triggering packed decimal instructions on z/Architecture.", SET_OPTION_BIT(TR_DisablePackedDecimalIntrinsics), "F"},
{"disablePartialInlining", "O\tdisable partial Inlining ", SET_OPTION_BIT(TR_DisablePartialInlining), "F"},
{"disablePeephole", "O\tdisable peephole phase ", SET_OPTION_BIT(TR_DisablePeephole), "F"},
{"disablePostProfileCompPriorityBoost","M\tdisable boosting the priority of post profiling compilations", SET_OPTION_BIT(TR_DisablePostProfileCompPriorityBoost), "F"},
{"disablePRBE", "O\tdisable partial redundancy branch elimination", SET_OPTION_BIT(TR_DisablePRBE), "F"},
{"disablePRE", "O\tdisable partial redundancy elimination", TR::Options::disableOptimization, partialRedundancyElimination, 0, "P"},
{"disablePreexistenceDuringGracePeriod","O\tdisable preexistence during CLP grace period", SET_OPTION_BIT(TR_DisablePrexistenceDuringGracePeriod), "F"},
{"disableProfiledInlining", "O\tdisable inlining based on profiled this values", SET_OPTION_BIT(TR_DisableProfiledInlining), "F"},
{"disableProfiledMethodInlining", "O\tdisable inlining based on profiled methods", SET_OPTION_BIT(TR_DisableProfiledMethodInlining), "F"},
{"disableProfiledNodeVersioning", "O\tdisable profiled node versioning", TR::Options::disableOptimization, profiledNodeVersioning, 0, "P"},
#ifdef J9_PROJECT_SPECIFIC
{"disableProfileGenerator", "O\tdisable profile generator", TR::Options::disableOptimization, profileGenerator, 0, "P"},
#endif
{"disableProfiling", "O\tdisable profiling", SET_OPTION_BIT(TR_DisableProfiling), "P"},
{"disableProfilingDataReclamation", "O\tdisable reclamation for profiling data", SET_OPTION_BIT(TR_DisableProfilingDataReclamation), "F", NOT_IN_SUBSET},
{"disableRampupImprovements", "M\tDisable various changes that improve rampup", SET_OPTION_BIT(TR_DisableRampupImprovements), "F", NOT_IN_SUBSET},
{"disableReadMonitors", "O\tdisable read monitors", SET_OPTION_BIT(TR_DisableReadMonitors), "F"},
{"disableRecognizedCallTransformer", "O\tdisable recognized call transformer", TR::Options::disableOptimization, recognizedCallTransformer, 0, "P"},
{"disableRecognizedMethods", "O\tdisable recognized methods", SET_OPTION_BIT(TR_DisableRecognizedMethods), "F"},
{"disableRecompDueToInlinedMethodRedefinition", "O\tdisable recompilation for method body with patched HCR guard", SET_OPTION_BIT(TR_DisableRecompDueToInlinedMethodRedefinition), "F"},
{"disableReducedPriorityForCustomMethodHandleThunks", "R\tcompile custom MethodHandle invoke exact thunks at the same priority as normal java methods", SET_OPTION_BIT(TR_DisableReducedPriorityForCustomMethodHandleThunks), "F", NOT_IN_SUBSET},
{"disableRedundantAsyncCheckRemoval", "O\tdisable redundant async check removal", TR::Options::disableOptimization, redundantAsyncCheckRemoval, 0, "P"},
{"disableRedundantGotoElimination", "O\tdisable redundant goto elimination", TR::Options::disableOptimization, redundantGotoElimination, 0, "P"},
{"disableRedundantMonitorElimination", "O\tdisable redundant monitor elimination", TR::Options::disableOptimization, redundantMonitorElimination, 0, "P"},
{"disableRefArraycopyRT", "O\tdisable reference arraycopy for real-time gc", SET_OPTION_BIT(TR_DisableRefArraycopyRT), "F"},
{"disableRefinedAliases", "O\tdisable collecting side-effect summaries from compilations to improve aliasing info in subsequent compilations", SET_OPTION_BIT(TR_DisableRefinedAliases), "F"},
{"disableRefinedBCDClobberEval", "O\tdisable trying to minimize the number of BCD clobber evaluate copies ", SET_OPTION_BIT(TR_DisableRefinedBCDClobberEval), "F"},
{"disableRegDepCopyRemoval", "O\tdisable register dependency copy removal", TR::Options::disableOptimization, regDepCopyRemoval, 0, "P"},
{"disableRegisterPressureSimulation", "O\tdon't walk the trees to estimate register pressure during global register allocation", SET_OPTION_BIT(TR_DisableRegisterPressureSimulation), "F"},
{"disableRematerialization", "O\tdisable rematerialization", TR::Options::disableOptimization, rematerialization, 0, "P"},
{"disableReorderArrayIndexExpr", "O\tdisable reordering of index expressions", TR::Options::disableOptimization, reorderArrayExprGroup, 0, "P"},
{"disableRMODE64", "O\tDisable residence mode of compiled bodies on z/OS to reside above the 2-gigabyte bar", RESET_OPTION_BIT(TR_EnableRMODE64), "F"},
{"disableRXusage", "O\tdisable increased usage of RX instructions", SET_OPTION_BIT(TR_DisableRXusage), "F"},
{"disableSamplingJProfiling", "O\tDisable profiling in the jitted code", SET_OPTION_BIT(TR_DisableSamplingJProfiling), "F" },
{"disableScorchingSampleThresholdScalingBasedOnNumProc", "M\t", SET_OPTION_BIT(TR_DisableScorchingSampleThresholdScalingBasedOnNumProc), "F", NOT_IN_SUBSET},
{"disableSelectiveNoServer", "D\tDisable turning on noServer selectively", SET_OPTION_BIT(TR_DisableSelectiveNoOptServer), "F" },
{"disableSeparateInitFromAlloc", "O\tdisable separating init from alloc", SET_OPTION_BIT(TR_DisableSeparateInitFromAlloc), "F"},
{"disableSequenceSimplification", "O\tdisable arithmetic sequence simplification", TR::Options::disableOptimization, expressionsSimplification, 0, "P"},
#ifdef J9_PROJECT_SPECIFIC
{"disableSequentialStoreSimplification","O\tdisable sequential store simplification phase", TR::Options::disableOptimization, sequentialStoreSimplification, 0, "P"},
#endif
{"disableShareableMethodHandleThunks", "R\tdisable creation of shareable invokeExact thunks for MethodHandles", SET_OPTION_BIT(TR_DisableShareableMethodHandleThunks), "F", NOT_IN_SUBSET},
{"disableSharedCacheHints", "R\tdisable storing and loading hints from shared cache", SET_OPTION_BIT(TR_DisableSharedCacheHints), "F"},
{"disableSIMD", "O\tdisable SIMD exploitation and infrastructure on platforms supporting vector register and instructions", SET_OPTION_BIT(TR_DisableSIMD), "F"},
{"disableSIMDArrayCompare", "O\tDisable vectorized array comparison using SIMD instruction", SET_OPTION_BIT(TR_DisableSIMDArrayCompare), "F"},
{"disableSIMDArrayCopy", "O\tDisable vectorized array copying using SIMD instruction", SET_OPTION_BIT(TR_DisableSIMDArrayCopy), "F"},
{"disableSIMDArrayTranslate", "O\tdisable SIMD instructions for array translate", SET_OPTION_BIT(TR_DisableSIMDArrayTranslate), "F"},
{"disableSIMDDoubleMaxMin", "O\tdisable SIMD instructions for double max min", SET_OPTION_BIT(TR_DisableSIMDDoubleMaxMin), "F"},
{"disableSIMDStringHashCode", "O\tdisable vectorized java/lang/String.hashCode implementation", SET_OPTION_BIT(TR_DisableSIMDStringHashCode), "F"},
{"disableSIMDUTF16BEEncoder", "M\tdisable inlining of SIMD UTF16 Big Endian encoder", SET_OPTION_BIT(TR_DisableSIMDUTF16BEEncoder), "F"},
{"disableSIMDUTF16LEEncoder", "M\tdisable inlining of SIMD UTF16 Little Endian encoder", SET_OPTION_BIT(TR_DisableSIMDUTF16LEEncoder), "F"},
{"disableSmartPlacementOfCodeCaches", "O\tdisable placement of code caches in memory so they are near each other and the DLLs", SET_OPTION_BIT(TR_DisableSmartPlacementOfCodeCaches), "F", NOT_IN_SUBSET},
{"disableStableAnnotations", "M\tdisable recognition of @Stable", SET_OPTION_BIT(TR_DisableStableAnnotations), "F"},
{"disableStaticFinalFieldFolding", "O\tdisable generic static final field folding", TR::Options::disableOptimization, staticFinalFieldFolding, 0, "P"},
{"disableStoreOnCondition", "O\tdisable store on condition (STOC) code gen", SET_OPTION_BIT(TR_DisableStoreOnCondition), "F"},
{"disableStoreSinking", "O\tdisable store sinking", SET_OPTION_BIT(TR_DisableStoreSinking), "F"},
{"disableStringBuilderTransformer", "O\tenable transforming StringBuilder constructor to preallocate a buffer for String concatenation operations", SET_OPTION_BIT(TR_DisableStringBuilderTransformer), "F"},
{"disableStringPeepholes", "O\tdisable stringPeepholes", SET_OPTION_BIT(TR_DisableStringPeepholes), "F"},
{"disableStripMining", "O\tdisable loop strip mining", SET_OPTION_BIT(TR_DisableStripMining), "F"},
{"disableSuffixLogs", "O\tdo not add the date/time/pid suffix to the file name of the logs", RESET_OPTION_BIT(TR_EnablePIDExtension), "F"},
{"disableSupportForCpuSpentInCompilation", "M\tdo not provide CPU spent in compilation", SET_OPTION_BIT(TR_DisableSupportForCpuSpentInCompilation), "F" },
{"disableSwitchAnalyzer", "O\tdisable switch analyzer", TR::Options::disableOptimization, switchAnalyzer, 0, "P"},
{"disableSwitchAwayFromProfilingForHotAndVeryhot", "O\tdisable switch away from profiling for hot and veryhot", SET_OPTION_BIT(TR_DisableSwitchAwayFromProfilingForHotAndVeryhot), "F"},
{"disableSymbolValidationManager", "M\tEnable Symbol Validation Manager for Relocatable Compile Validations", RESET_OPTION_BIT(TR_EnableSymbolValidationManager), "F"},
{"disableSynchronizedFieldLoad", "O\tDisable the use of hardware optimized synchronized field load intrinsics", SET_OPTION_BIT(TR_DisableSynchronizedFieldLoad), "F"},
{"disableSyncMethodInlining", "O\tdisable inlining of synchronized methods", SET_OPTION_BIT(TR_DisableSyncMethodInlining), "F"},
{"disableTailRecursion", "O\tdisable tail recursion", SET_OPTION_BIT(TR_DisableTailRecursion), "F"},
{"disableTarokInlineArrayletAllocation", "O\tdisable Tarok inline Arraylet Allocation in genHeapAlloc", SET_OPTION_BIT(TR_DisableTarokInlineArrayletAllocation), "F"},
{"disableThrowToGoto", "O\tdisable throw to goto", SET_OPTION_BIT(TR_DisableThrowToGoto), "F"},
{"disableThunkTupleJ2I", "D\tdo not replace initialInvokeExactThunk with J2I thunk / helper address in ThunkTuple", SET_OPTION_BIT(TR_DisableThunkTupleJ2I), "F", NOT_IN_SUBSET},
{"disableTLE", "O\tdisable transactional lock elision", SET_OPTION_BIT(TR_DisableTLE), "F"},
{"disableTlhPrefetch", "O\tdisable software prefetch on allocation", SET_OPTION_BIT(TR_DisableTLHPrefetch), "F"},
{"disableTM", "O\tdisable transactional memory support", SET_OPTION_BIT(TR_DisableTM), "F"},
{"disableTOC", "O\tdisable use of the Table of Constants (TOC) on relevant architectures", SET_OPTION_BIT(TR_DisableTOC), "F"},
{"disableTraceRegDeps", "O\tdisable printing of register dependancies for each instruction in trace file", SET_OPTION_BIT(TR_DisableTraceRegDeps), "F"},
{"disableTraps", "C\tdisable trap instructions", SET_OPTION_BIT(TR_DisableTraps), "F"},
{"disableTreeCleansing", "O\tdisable tree cleansing", TR::Options::disableOptimization, treesCleansing, 0, "P"},
{"disableTreeSimplification", "O\tdisable tree simplification", TR::Options::disableOptimization, treeSimplification, 0, "P"},
{"disableTrivialBlockExtension", "O\tdisable trivial block extension", TR::Options::disableOptimization, trivialBlockExtension, 0, "P"},
{"disableTrivialDeadBlockRemoval", "O\tdisable trivial dead block removal ", SET_OPTION_BIT(TR_DisableTrivialDeadBlockRemover), "F"},
{"disableTrivialDeadTreeRemoval", "O\tdisable trivial dead tree removal", TR::Options::disableOptimization, trivialDeadTreeRemoval, 0, "P"},
{"disableUncountedUnrolls", "O\tdisable GLU from unrolling uncounted loops ",SET_OPTION_BIT(TR_DisableUncountedUnrolls), "F"},
{"disableUnsafe", "O\tdisable code to inline Unsafe natives", SET_OPTION_BIT(TR_DisableUnsafe), "F"},
{"disableUnsafeFastPath", "O\tdisable unsafe fast path", TR::Options::disableOptimization, unsafeFastPath, 0, "P"}, // Java specific option
{"disableUpdateAOTBytesSize", "M\tDon't send VM size of bodies that could have been AOT'd if the SCC wasn't full", SET_OPTION_BIT(TR_DisableUpdateAOTBytesSize), "F", NOT_IN_SUBSET},
{"disableUpdateJITBytesSize", "M\tDon't send VM size of IProfiler Entires and Hints that could have been persisted if the SCC wasn't full", SET_OPTION_BIT(TR_DisableUpdateJITBytesSize), "F", NOT_IN_SUBSET},
{"disableUpgradeBootstrapAtWarm", "R\tRecompile bootstrap AOT methods at warm instead of cold", RESET_OPTION_BIT(TR_UpgradeBootstrapAtWarm), "F", NOT_IN_SUBSET},
{"disableUpgrades", "O\tPrevent Jit Sampling from upgrading cold compilations",
SET_OPTION_BIT(TR_DisableUpgrades), "F", NOT_IN_SUBSET},
{"disableUpgradingColdCompilations", "R\tdisable upgrading to warm those methods compiled at cold due to classLoadPhase", SET_OPTION_BIT(TR_DisableUpgradingColdCompilations), "F", NOT_IN_SUBSET},
{"disableUseDefForShadows", "I\ttemporary, disables usedef for shadows.", SET_OPTION_BIT(TR_DisableUseDefForShadows),"F"},
{"disableUseRIOnlyForLargeQSZ", "M\t", RESET_OPTION_BIT(TR_UseRIOnlyForLargeQSZ), "F", NOT_IN_SUBSET },
{"disableUTF16BEEncoder", "M\tdisable inlining of UTF16 Big Endian encoder", SET_OPTION_BIT(TR_DisableUTF16BEEncoder), "F"},
{"disableValueProfiling", "O\tdisable value profiling", SET_OPTION_BIT(TR_DisableValueProfiling), "F"},
{"disableVariablePrecisionDAA", "O\tdisable variable precision DAA optimizations", SET_OPTION_BIT(TR_DisableVariablePrecisionDAA), "F"},
{"disableVectorBCD", "O\tdisable vector instructions for DAA BCD intrinsics ", SET_OPTION_BIT(TR_DisableVectorBCD), "F"},
{"disableVectorRegGRA", "O\tdisable global register allocation for vector regs", SET_OPTION_BIT(TR_DisableVectorRegGRA), "F"},
{"disableVerification", "O\tdisable verification of internal data structures between passes", SET_OPTION_BIT(TR_DisableVerification), "F"},
{"disableVirtualGuardHeadMerger", "O\tdisable virtual guard head merger", TR::Options::disableOptimization, virtualGuardHeadMerger, 0, "P"},
{DisableVirtualGuardNOPingString, "O\tdisable virtual guard NOPing", SET_OPTION_BIT(TR_DisableVirtualGuardNOPing), "F"},
{"disableVirtualGuardTailSplitter", "O\tdisable virtual guard tail splitter", TR::Options::disableOptimization, virtualGuardTailSplitter, 0, "P"},
{"disableVirtualInlining", "O\tdisable inlining of virtual methods", SET_OPTION_BIT(TR_DisableVirtualInlining), "F"},
{"disableVirtualScratchMemory", "M\tdisable scratch memory to be allocated using virtual memory allocators",
RESET_OPTION_BIT(TR_EnableVirtualScratchMemory), "F", NOT_IN_SUBSET},
{"disableVMCSProfiling", "O\tdisable VM data for virtual call sites", SET_OPTION_BIT(TR_DisableVMCSProfiling), "F", NOT_IN_SUBSET},
{"disableVSSStackCompaction", "O\tdisable VariableSizeSymbol stack compaction", SET_OPTION_BIT(TR_DisableVSSStackCompaction), "F"},
{"disableWriteBarriersRangeCheck", "O\tdisable adding range check to write barriers", SET_OPTION_BIT(TR_DisableWriteBarriersRangeCheck), "F"},
{"disableWrtBarSrcObjCheck", "O\tdisable to not check srcObj location for wrtBar in gc", SET_OPTION_BIT(TR_DisableWrtBarSrcObjCheck), "F"},
{"disableZ10", "O\tdisable z10 support", SET_OPTION_BIT(TR_DisableZ10), "F"},
{"disableZ13", "O\tdisable z13 support", SET_OPTION_BIT(TR_DisableZ13), "F"},
{"disableZ14", "O\tdisable z14 support", SET_OPTION_BIT(TR_DisableZ14), "F"},
{"disableZ15", "O\tdisable z15 support", SET_OPTION_BIT(TR_DisableZ15), "F"},
{"disableZ196", "O\tdisable z196 support", SET_OPTION_BIT(TR_DisableZ196), "F"},
{"disableZArraySetUnroll", "O\tdisable arraySet unrolling on 390.", SET_OPTION_BIT(TR_DisableZArraySetUnroll), "F"},
{"disableZealousCodegenOpts", "O\tdisable use of zealous codegen optimizations.", SET_OPTION_BIT(TR_DisableZealousCodegenOpts), "F"},
{"disableZEC12", "O\tdisable zEC12 support", SET_OPTION_BIT(TR_DisableZEC12), "F" },
{"disableZHelix", "O\t[Deprecated] alias for disableZEC12", SET_OPTION_BIT(TR_DisableZEC12), "F"},
{"disableZImplicitNullChecks", "O\tdisable implicit null checks on 390", SET_OPTION_BIT(TR_DisableZImplicitNullChecks), "F"},
{"disableZNext", "O\tdisable zNext support", SET_OPTION_BIT(TR_DisableZNext), "F"},
{"dltMostOnce", "O\tprevent DLT compilation of a method at more than one bytecode index.", SET_OPTION_BIT(TR_DLTMostOnce), "F"},
{"dltOptLevel=cold", "O\tforce DLT compilation at cold level", TR::Options::set32BitValue, offsetof(OMR::Options, _dltOptLevel), cold, "P"},
{"dltOptLevel=hot", "O\tforce DLT compilation at hot level", TR::Options::set32BitValue, offsetof(OMR::Options, _dltOptLevel), hot, "P"},
{"dltOptLevel=noOpt", "O\tforce DLT compilation at noOpt level", TR::Options::set32BitValue, offsetof(OMR::Options, _dltOptLevel), noOpt, "P"},
{"dltOptLevel=scorching", "O\tforce DLT compilation at scorching level", TR::Options::set32BitValue, offsetof(OMR::Options, _dltOptLevel), scorching, "P"},
{"dltOptLevel=veryHot", "O\tforce DLT compilation at veryHot level", TR::Options::set32BitValue, offsetof(OMR::Options, _dltOptLevel), veryHot, "P"},
{"dltOptLevel=warm", "O\tforce DLT compilation at warm level", TR::Options::set32BitValue, offsetof(OMR::Options, _dltOptLevel), warm, "P"},
{"dontActivateCompThreadWhenHighPriReqIsBlocked", "M\tdo not activate another compilation thread when high priority request is blocked", RESET_OPTION_BIT(TR_ActivateCompThreadWhenHighPriReqIsBlocked), "F", NOT_IN_SUBSET},
{"dontAddHWPDataToIProfiler", "O\tDont add HW Data to IProfiler", SET_OPTION_BIT(TR_DontAddHWPDataToIProfiler), "F", NOT_IN_SUBSET},
{"dontDowngradeToCold", "M\tdon't downgrade first time compilations from warm to cold", SET_OPTION_BIT(TR_DontDowngradeToCold), "F", NOT_IN_SUBSET},
{"dontDowngradeToColdDuringGracePeriod","M\tdon't downgrade first time compilations from warm to cold during grace period (first second of run)", SET_OPTION_BIT(TR_DontDowgradeToColdDuringGracePeriod), "F", NOT_IN_SUBSET },
{"dontDowngradeWhenRIIsTemporarilyOff","M\t", SET_OPTION_BIT(TR_DontDowngradeWhenRIIsTemporarilyOff), "F", NOT_IN_SUBSET },
{"dontIncreaseCountsForNonBootstrapMethods", "M\t", RESET_OPTION_BIT(TR_IncreaseCountsForNonBootstrapMethods), "F", NOT_IN_SUBSET }, // Xjit: option
{"dontInline=", "O{regex}\tlist of callee methods to not inline",
TR::Options::setRegex, offsetof(OMR::Options, _dontInline), 0, "P"},
{"dontJitIfSlotsSharedByRefAndNonRef", "O\tfail the compilation (in FSD mode) if a slot needs to be shared between an address and a nonaddress.", SET_OPTION_BIT(TR_DontJitIfSlotsSharedByRefAndNonRef), "F"},
{"dontLowerCountsForAotCold", "M\tDo not lower counts for cold aot runs", RESET_OPTION_BIT(TR_LowerCountsForAotCold), "F", NOT_IN_SUBSET },
{"dontRestrictInlinerDuringStartup", "O\tdo not restrict trivial inliner during startup", RESET_OPTION_BIT(TR_RestrictInlinerDuringStartup), "F", NOT_IN_SUBSET},
{"dontRIUpgradeAOTWarmMethods", "M\tdon't RI upgrade AOT warm methods", SET_OPTION_BIT(TR_DontRIUpgradeAOTWarmMethods), "F", NOT_IN_SUBSET},
{"dontSuspendCompThreadsEarly", "M\tDo not suspend compilation threads when QWeight drops under a threshold", RESET_OPTION_BIT(TR_SuspendEarly), "F", NOT_IN_SUBSET },
{"dontTurnOffSelectiveNoOptServerIfNoStartupHint", "M\t", RESET_OPTION_BIT(TR_TurnOffSelectiveNoOptServerIfNoStartupHint), "F", NOT_IN_SUBSET },
{"dontUseFastStackwalk", "I\tDo not use accelerated stackwalking algorithm", SET_OPTION_BIT(TR_DoNotUseFastStackwalk), "P"},
{"dontUseFlattenedArrayElementRuntimeHelpers", "M\tDo not use the runtime helpers for flattened array elements", RESET_OPTION_BIT(TR_UseFlattenedArrayElementRuntimeHelpers), "F"},
{"dontUseFlattenedFieldRuntimeHelpers", "M\tDo not use the runtime helpers for flattened fields", RESET_OPTION_BIT(TR_UseFlattenedFieldRuntimeHelpers), "F"},
{"dontUseHigherCountsForNonSCCMethods", "M\tDo not use the default high counts for methods belonging to classes not in SCC", RESET_OPTION_BIT(TR_UseHigherCountsForNonSCCMethods), "F", NOT_IN_SUBSET },
{"dontUseHigherMethodCountsAfterStartup", "M\tDo not use the default high counts for methods after startup in AOT mode", RESET_OPTION_BIT(TR_UseHigherMethodCountsAfterStartup), "F", NOT_IN_SUBSET },
{"dontUseIdleTime", "M\tDo not use cpu idle time to compile more aggressively", RESET_OPTION_BIT(TR_UseIdleTime), "F", NOT_IN_SUBSET },
{"dontUsePersistentIprofiler", "M\tdon't use iprofiler data stored int he shared cache, even if it is available", SET_OPTION_BIT(TR_DoNotUsePersistentIprofiler), "F"},
{"dontUseRIOnlyForLargeQSZ", "M\tUse RI regardless of the compilation queue size", RESET_OPTION_BIT(TR_UseRIOnlyForLargeQSZ), "F", NOT_IN_SUBSET },
{"dontVaryInlinerAggressivenessWithTime", "M\tDo not vary inliner aggressiveness with abstract time", RESET_OPTION_BIT(TR_VaryInlinerAggressivenessWithTime), "F", NOT_IN_SUBSET },
{"dumbInlinerBytecodeSizeDivisor=", "O<nnn>\thigher values will allow more inlining", TR::Options::set32BitNumeric, offsetof(OMR::Options,_dumbInlinerBytecodeSizeDivisor), 0, "F%d"},
{"dumbInlinerBytecodeSizeMaxCutoff=", "O<nnn>\tmethods above the threshold will not inline other methods", TR::Options::set32BitNumeric, offsetof(OMR::Options,_dumbInlinerBytecodeSizeMaxCutoff), 0, "F%d"},
{"dumbInlinerBytecodeSizeMinCutoff=", "O<nnn>\tmethods below the threshold will inline other methods", TR::Options::set32BitNumeric, offsetof(OMR::Options,_dumbInlinerBytecodeSizeMinCutoff), 0, "F%d"},
{"dumpFinalMethodNamesAndCounts", "O\tPrinting of Method Names and Final Counts", SET_OPTION_BIT(TR_DumpFinalMethodNamesAndCounts), "F"},
{"dumpInitialMethodNamesAndCounts", "O\tDebug Printing of Method Names and Initial Counts.", SET_OPTION_BIT(TR_DumpInitialMethodNamesAndCounts), "F"},
{"dumpIprofilerMethodNamesAndCounts", "O\tDebug Printing of Method Names and Persisted Counts.", SET_OPTION_BIT(TR_DumpPersistedIProfilerMethodNamesAndCounts), "F"},
{"dynamicThreadPriority", "M\tenable dynamic changing of compilation thread priority", SET_OPTION_BIT(TR_DynamicThreadPriority), "F", NOT_IN_SUBSET},
{"earlyLPQ", "M\tAllow compilations from low priority queue to happen early, during startup", SET_OPTION_BIT(TR_EarlyLPQ), "F", NOT_IN_SUBSET },
{"enableAggressiveInlining", "I\tSet additional options that makes inlining more aggressive ", SET_OPTION_BIT(TR_AggressiveInlining), "F", NOT_IN_SUBSET},
{"enableAggressiveLiveness", "I\tenable globalLiveVariablesForGC below warm", SET_OPTION_BIT(TR_EnableAggressiveLiveness), "F"},
{"enableAggressiveLoopVersioning", "O\tOptions and thresholds that result in loop versioning occurring in more cases", SET_OPTION_BIT(TR_EnableAggressiveLoopVersioning), "F" },
{"enableAllocationOfScratchBTL", "M\tAllow the allocation scratch memory below the line (zOS 31-bit)", RESET_OPTION_BIT(TR_DontAllocateScratchBTL), "F", NOT_IN_SUBSET },
{"enableAllocationSinking", "O\tdelay object allocations until immediately before the corresponding constructor calls", TR::Options::enableOptimization, allocationSinking, 0, "P"},
{EnableAnnotations, "O\tenable annotation support", SET_OPTION_BIT(TR_EnableAnnotations), "F"},
{"enableAOTCacheReclamation", "O\tenable AOT reclamation of code and data cache on AOT relocation failures", SET_OPTION_BIT(TR_EnableAOTCacheReclamation), "F"},
{"enableAOTInlineSystemMethod", "O\tenable AOT inline methods from system classes", SET_OPTION_BIT(TR_EnableAOTInlineSystemMethod), "F"},
{"enableAOTMethodEnter", "O\tenable AOT method enter", SET_OPTION_BIT(TR_EnableAOTMethodEnter), "F" },
{"enableAOTMethodExit", "O\tenable AOT method exit", SET_OPTION_BIT(TR_EnableAOTMethodExit), "F" },
{"enableAOTRelocationTiming", "M\tenable timing stats for relocating AOT methods", SET_OPTION_BIT(TR_EnableAOTRelocationTiming), "F"},
{"enableAOTStats", "O\tenable AOT statistics", SET_OPTION_BIT(TR_EnableAOTStats), "F"},
{"enableApplicationThreadYield", "O\tinsert yield points in application threads", SET_OPTION_BIT(TR_EnableAppThreadYield), "F", NOT_IN_SUBSET},
{"enableBasicBlockHoisting", "O\tenable basic block hoisting", TR::Options::enableOptimization, basicBlockHoisting, 0, "P"},
{"enableBlockShuffling", "O\tenable random rearrangement of blocks", TR::Options::enableOptimization, blockShuffling, 0, "P"},
{"enableBranchPreload", "O\tenable return branch preload for each method (for func testing)", SET_OPTION_BIT(TR_EnableBranchPreload), "F"},
{"enableCFGEdgeCounters", "O\tenable CFG edge counters to keep track of taken and non taken branches in compiled code", SET_OPTION_BIT(TR_EnableCFGEdgeCounters), "F"},
{"enableCheapWarmOpts", "O\tenable cheap warm optimizations", RESET_OPTION_BIT(TR_DisableCheapWarmOpts), "F"},
{"enableClassChainSharing", "M\tenable class sharing", SET_OPTION_BIT(TR_EnableClassChainSharing), "F", NOT_IN_SUBSET},
{"enableClassChainValidationCaching", "M\tenable class chain validation caching", SET_OPTION_BIT(TR_EnableClassChainValidationCaching), "F", NOT_IN_SUBSET},
{"enableCodeCacheConsolidation", "M\tenable code cache consolidation", SET_OPTION_BIT(TR_EnableCodeCacheConsolidation), "F", NOT_IN_SUBSET},
{"enableColdCheapTacticalGRA", "O\tenable cold cheap tactical GRA", SET_OPTION_BIT(TR_EnableColdCheapTacticalGRA), "F"},
{"enableCompilationSpreading", "C\tenable adding spreading invocations to methods before compiling", SET_OPTION_BIT(TR_EnableCompilationSpreading), "F", NOT_IN_SUBSET},
{"enableCompilationThreadThrottlingDuringStartup", "M\tenable compilation thread throttling during startup", SET_OPTION_BIT(TR_EnableCompThreadThrottlingDuringStartup), "F", NOT_IN_SUBSET },
{"enableCompilationYieldStats", "M\tenable statistics on time between 2 consecutive yield points", SET_OPTION_BIT(TR_EnableCompYieldStats), "F", NOT_IN_SUBSET},
{"enableCopyingTROTInduction1Idioms", "O\tenable CopyingTROTInduction1 idiom patterns", SET_OPTION_BIT(TR_EnableCopyingTROTInduction1Idioms), "F", NOT_IN_SUBSET},
{"enableDataCacheStatistics", "I\tenable the collection and display of data cache related statistics.", SET_OPTION_BIT(TR_EnableDataCacheStatistics),"F", NOT_IN_SUBSET},
{"enableDeterministicOrientedCompilation", "O\tenable deteministic oriented compilation", SET_OPTION_BIT(TR_EnableDeterministicOrientedCompilation), "F"},
{"enableDLTBytecodeIndex=", "O<nnn>\tforce attempted DLT compilation to use specified bytecode index", TR::Options::set32BitNumeric, offsetof(OMR::Options,_enableDLTBytecodeIndex), 0, "F%d"},
{"enableDowngradeOnHugeQSZ", "M\tdowngrade first time compilations when the compilation queue is huge (1000+ entries)", SET_OPTION_BIT(TR_EnableDowngradeOnHugeQSZ), "F", NOT_IN_SUBSET},
{"enableDualTLH", "D\tEnable use of non-zero initialized TLH. TR_EnableBatchClear must be set too.", RESET_OPTION_BIT(TR_DisableDualTLH), "F"},
{"enableDupRetTree", "O\tEnable duplicate return tree", SET_OPTION_BIT(TR_EnableDupRetTree), "F"},
{"enableDynamicRIBufferProcessing", "O\tenable disabling buffer processing", RESET_OPTION_BIT(TR_DisableDynamicRIBufferProcessing), "F", NOT_IN_SUBSET},
{"enableDynamicSamplingWindow", "M\t", RESET_OPTION_BIT(TR_DisableDynamicSamplingWindow), "F", NOT_IN_SUBSET},
{"enableEarlyCompilationDuringIdleCpu","M\t", SET_OPTION_BIT(TR_EnableEarlyCompilationDuringIdleCpu), "F", NOT_IN_SUBSET},
{"enableEBBCCInfo", "C\tenable tracking CCInfo in Extended Basic Block scope", SET_OPTION_BIT(TR_EnableEBBCCInfo), "F"},
{"enableExecutableELFGeneration", "I\tenable the generation of executable ELF files", SET_OPTION_BIT(TR_EmitExecutableELFFile), "F", NOT_IN_SUBSET},
{"enableExpensiveOptsAtWarm", "O\tenable store sinking and OSR at warm and below", SET_OPTION_BIT(TR_EnableExpensiveOptsAtWarm), "F" },
{"enableFastHotRecompilation", "R\ttry to recompile at hot sooner", SET_OPTION_BIT(TR_EnableFastHotRecompilation), "F"},
{"enableFastScorchingRecompilation", "R\ttry to recompile at scorching sooner", SET_OPTION_BIT(TR_EnableFastScorchingRecompilation), "F"},
{"enableFpreductionAnnotation", "O\tenable fpreduction annotation", SET_OPTION_BIT(TR_EnableFpreductionAnnotation), "F"},
{"enableFSDGRA", "O\tenable basic GRA in FSD mode", SET_OPTION_BIT(TR_FSDGRA), "F"},
{"enableGCRPatching", "R\tenable patching of the GCR guard", SET_OPTION_BIT(TR_EnableGCRPatching), "F"},
{"enableGPU", "L\tenable GPU support (basic)",
TR::Options::setBitsFromStringSet, offsetof(OMR::Options, _enableGPU), TR_EnableGPU, "F"},
{"enableGPU=", "L{regex}\tlist of additional GPU options: enforce, verbose, details, safeMT, enableMath",
TR::Options::setBitsFromStringSet, offsetof(OMR::Options, _enableGPU), 0, "F"},
{"enableGRACostBenefitModel", "O\tenable GRA cost/benefit model", SET_OPTION_BIT(TR_EnableGRACostBenefitModel), "F" },
{"enableGuardedCountingRecompilation", "O\tenable GCR. If you don't know what that is, I don't have room to explain it here.", RESET_OPTION_BIT(TR_DisableGuardedCountingRecompilations), "F"},
{"enableHalfSlotSpills", "O\tenable sharing of a single 8-byte spill temp for two 4-byte values", RESET_OPTION_BIT(TR_DisableHalfSlotSpills), "P"},
{"enableHardwareProfileIndirectDispatch","O\tenable hardware profile indirect dispatch profiling", SET_OPTION_BIT(TR_EnableHardwareProfileIndirectDispatch), "F", NOT_IN_SUBSET},
{"enableHardwareProfilerDuringStartup", "O\tenable hardware profiler during startup", RESET_OPTION_BIT(TR_DisableHardwareProfilerDuringStartup), "F", NOT_IN_SUBSET},
{"enableHardwareProfileRecompilation", "O\tenable hardware profile recompilation", SET_OPTION_BIT(TR_EnableHardwareProfileRecompilation), "F", NOT_IN_SUBSET},
{"enableHCR", "O\tenable hot code replacement", SET_OPTION_BIT(TR_EnableHCR), "F", NOT_IN_SUBSET},
#ifdef J9_PROJECT_SPECIFIC
{"enableIdiomRecognition", "O\tenable Idiom Recognition", TR::Options::enableOptimization, idiomRecognition, 0, "P"},
#endif
{"enableInlineProfilingStats", "O\tenable stats about profile based inlining", SET_OPTION_BIT(TR_VerboseInlineProfiling), "F"},
{"enableInliningDuringVPAtWarm", "O\tenable inlining during VP for warm bodies", RESET_OPTION_BIT(TR_DisableInliningDuringVPAtWarm), "F"},
{"enableInliningOfUnsafeForArraylets", "O\tenable inlining of Unsafe calls when arraylets are enabled", SET_OPTION_BIT(TR_EnableInliningOfUnsafeForArraylets), "F"},
{"enableInterfaceCallCachingSingleDynamicSlot", "O\tenable interfaceCall caching with one slot storing J9MethodPtr ", SET_OPTION_BIT(TR_enableInterfaceCallCachingSingleDynamicSlot), "F"},
{"enableIprofilerChanges", "O\tenable iprofiler changes", SET_OPTION_BIT(TR_EnableIprofilerChanges), "F"},
{"enableIVTT", "O\tenable IV Type Transformation", TR::Options::enableOptimization, IVTypeTransformation, 0, "P"},
{"enableJCLInline", "O\tenable JCL Integer and Long methods inlining", SET_OPTION_BIT(TR_EnableJCLInline), "F"},
{"enableJITHelpershashCodeImpl", "O\tenable java version of object hashCode()", SET_OPTION_BIT(TR_EnableJITHelpershashCodeImpl), "F"},
{"enableJITHelpersoptimizedClone", "O\tenable java version of object clone()", SET_OPTION_BIT(TR_EnableJITHelpersoptimizedClone), "F"},
{"enableJITServerFollowRemoteCompileWithLocalCompile", "O\tenable JITServer to perform local compilations for its remotely compiled methods", SET_OPTION_BIT(TR_JITServerFollowRemoteCompileWithLocalCompile), "F"},
{"enableJITServerHeuristics", "O\tenable JITServer heuristics", SET_OPTION_BIT(TR_EnableJITServerHeuristics), "F"},
{"enableJProfiling", "O\tenable JProfiling", SET_OPTION_BIT(TR_EnableJProfiling), "F"},
{"enableJProfilingInProfilingCompilations", "O\tEnable the use of jprofiling instrumentation in profiling compilations", RESET_OPTION_BIT(TR_DisableJProfilingInProfilingCompilations), "F"},
{"enableLastRetrialLogging", "O\tenable fullTrace logging for last compilation attempt. Needs to have a log defined on the command line", SET_OPTION_BIT(TR_EnableLastCompilationRetrialLogging), "F"},
{"enableLocalVPSkipLowFreqBlock", "O\tSkip processing of low frequency blocks in localVP", SET_OPTION_BIT(TR_EnableLocalVPSkipLowFreqBlock), "F" },
{"enableLoopEntryAlignment", "O\tenable loop Entry alignment", SET_OPTION_BIT(TR_EnableLoopEntryAlignment), "F"},
{"enableLoopVersionerCountAllocFences", "O\tallow loop versioner to count allocation fence nodes on PPC toward a profiled guard's block total", SET_OPTION_BIT(TR_EnableLoopVersionerCountAllocationFences), "F"},
{"enableLowerCompilationLimitsDecisionMaking", "O\tenable the piece of code that lowers compilation limits when low on virtual memory (on Linux and z/OS)",
SET_OPTION_BIT(TR_EnableLowerCompilationLimitsDecisionMaking), "F", NOT_IN_SUBSET},
{"enableMetadataBytecodePCToIAMap", "O\tenable bytecode pc to IA map in the metadata", SET_OPTION_BIT(TR_EnableMetadataBytecodePCToIAMap), "F", NOT_IN_SUBSET},
{"enableMetadataReclamation", "I\tenable J9JITExceptionTable reclamation", RESET_OPTION_BIT(TR_DisableMetadataReclamation), "F", NOT_IN_SUBSET},
{"enableMHCustomizationLogicCalls", "C\tinsert calls to MethodHandle.doCustomizationLogic for handle invocations outside of thunks", SET_OPTION_BIT(TR_EnableMHCustomizationLogicCalls), "F"},
{"enableMonitorCacheLookup", "O\tenable monitor cache lookup under lock nursery ", SET_OPTION_BIT(TR_EnableMonitorCacheLookup), "F"},
{"enableMultipleGCRPeriods", "M\tallow JIT to get in and out of GCR", SET_OPTION_BIT(TR_EnableMultipleGCRPeriods), "F", NOT_IN_SUBSET},
{"enableMutableCallSiteGuards", "O\tenable virgual guards for calls to java.lang.invoke.MutableCallSite.getTarget().invokeExact(...) (including invokedynamic)", RESET_OPTION_BIT(TR_DisableMutableCallSiteGuards), "F"},
{"enableNewAllocationProfiling", "O\tenable profiling of new allocations", SET_OPTION_BIT(TR_EnableNewAllocationProfiling), "F"},
{"enableNewCheckCastInstanceOf", "O\tenable new Checkcast/InstanceOf evaluator", SET_OPTION_BIT(TR_EnableNewCheckCastInstanceOf), "F"},
{"enableNewX86PrefetchTLH", "O\tenable new X86 TLH prefetch algorithm", SET_OPTION_BIT(TR_EnableNewX86PrefetchTLH), "F"},
{"enableNodeGC", "M\tenable node recycling", SET_OPTION_BIT(TR_EnableNodeGC), "F"},
{"enableOnsiteCacheForSuperClassTest", "O\tenable onsite cache for super class test", SET_OPTION_BIT(TR_EnableOnsiteCacheForSuperClassTest), "F"},
{"enableOSR", "O\tenable on-stack replacement", SET_OPTION_BIT(TR_EnableOSR), "F", NOT_IN_SUBSET},
{"enableOSROnGuardFailure", "O\tperform a decompile using on-stack replacement every time a virtual guard fails", SET_OPTION_BIT(TR_EnableOSROnGuardFailure), "F"},
{"enableOSRSharedSlots", "O\tenable support for shared slots in OSR", RESET_OPTION_BIT(TR_DisableOSRSharedSlots), "F"},
{"enableOutlinedNew", "O\tdo object allocation logic with a fast jit helper", SET_OPTION_BIT(TR_EnableOutlinedNew), "F"},
{"enableParanoidRefCountChecks", "O\tenable extra reference count verification", SET_OPTION_BIT(TR_EnableParanoidRefCountChecks), "F"},
{"enablePerfAsserts", "O\tenable asserts for serious performance problems found during compilation", SET_OPTION_BIT(TR_EnablePerfAsserts), "F"},
{"enableProfiledDevirtualization", "O\tenable devirtualization based on interpreter profiling", SET_OPTION_BIT(TR_enableProfiledDevirtualization), "F"},
{"enableRampupImprovements", "M\tEnable various changes that improve rampup", SET_OPTION_BIT(TR_EnableRampupImprovements), "F", NOT_IN_SUBSET},
{"enableRangeSplittingGRA", "O\tenable GRA splitting of live ranges to reduce register pressure ", SET_OPTION_BIT(TR_EnableRangeSplittingGRA), "F"},
{"enableRATPurging", "O\tpurge the RAT table of assumptions after X registered assumptions", SET_OPTION_BIT(TR_EnableRATPurging), "F"},
{"enableReassociation", "O\tapply reassociation rules in Simplifier", SET_OPTION_BIT(TR_EnableReassociation), "F"},
{"enableRecompilationPushing", "O\tenable pushing methods to be recompiled", SET_OPTION_BIT(TR_EnableRecompilationPushing), "F"},
{"enableRefinedAliases", "O\tenable collecting side-effect summaries from compilations to improve aliasing info in subsequent compilations", RESET_OPTION_BIT(TR_DisableRefinedAliases), "F"},
{"enableRegisterPressureEstimation", "O\tdeprecated; same as enableRegisterPressureSimulation", RESET_OPTION_BIT(TR_DisableRegisterPressureSimulation), "F"},
{"enableRegisterPressureSimulation", "O\twalk the trees to estimate register pressure during global register allocation", RESET_OPTION_BIT(TR_DisableRegisterPressureSimulation), "F"},
{"enableRelocatableELFGeneration", "I\tenable the generation of object files use for static linking", SET_OPTION_BIT(TR_EmitRelocatableELFFile), "F", NOT_IN_SUBSET},
{"enableReorderArrayIndexExpr", "O\treorder array index expressions to encourage hoisting", TR::Options::enableOptimization, reorderArrayExprGroup, 0, "P"},
{"enableRIEMIT", "O\tAllows the z Codegen to emit RIEMIT instructions", SET_OPTION_BIT(TR_EnableRIEMIT), "F", NOT_IN_SUBSET},
{"enableRMODE64", "O\tEnable residence mode of compiled bodies on z/OS to reside above the 2-gigabyte bar", SET_OPTION_BIT(TR_EnableRMODE64), "F"},
{"enableSamplingJProfiling=", "R\tenable generation of profiling code by the JIT", TR::Options::setSamplingJProfilingBits, 0, 0, "F", NOT_IN_SUBSET},
{"enableSCHint=","R<nnn>\tOverride default SC Hints to user-specified hints", TR::Options::set32BitHexadecimal, offsetof(OMR::Options, _enableSCHintFlags), 0, "F%d"},
{"enableScorchInterpBlkFreqProfiling", "R\tenable profiling blocks in the jit", SET_OPTION_BIT(TR_EnableScorchInterpBlockFrequencyProfiling), "F"},
{"enableScratchMemoryDebugging", "I\tUse the debug segment provider for allocating region memory segments.", SET_OPTION_BIT(TR_EnableScratchMemoryDebugging),"F", NOT_IN_SUBSET},
{"enableSelectiveEnterExitHooks", "O\tadd method-specific test to JVMTI method enter and exit hooks", SET_OPTION_BIT(TR_EnableSelectiveEnterExitHooks), "F"},
{"enableSelfTuningScratchMemoryUsageBeforeCompile", "O\tEnable self tuning scratch memory usage", SET_OPTION_BIT(TR_EnableSelfTuningScratchMemoryUsageBeforeCompile), "F", NOT_IN_SUBSET},
{"enableSelfTuningScratchMemoryUsageInTrMemory", "O\tEnable self tuning scratch memory usage", SET_OPTION_BIT(TR_EnableSelfTuningScratchMemoryUsageInTrMemory), "F", NOT_IN_SUBSET},
{"enableSeparateInitFromAlloc", "O\tenable separating init from alloc", RESET_OPTION_BIT(TR_DisableSeparateInitFromAlloc), "F"},
{"enableSequentialLoadStoreCold", "O\tenable sequential store/load opt at cold level", SET_OPTION_BIT(TR_EnableSequentialLoadStoreCold), "F"},
{"enableSequentialLoadStoreWarm", "O\tenable sequential store/load opt at warm level", SET_OPTION_BIT(TR_EnableSequentialLoadStoreWarm), "F"},
{"enableSharedCacheTiming", "M\tenable timing stats for accessing the shared cache", SET_OPTION_BIT(TR_EnableSharedCacheTiming), "F"},
{"enableSIMDLibrary", "M\tEnable recognized methods for SIMD library", SET_OPTION_BIT(TR_EnableSIMDLibrary), "F"},
{"enableSnapshotBlockOpts", "O\tenable block ordering/redirecting optimizations in the presences of snapshot nodes", SET_OPTION_BIT(TR_EnableSnapshotBlockOpts), "F"},
{"enableSymbolValidationManager", "M\tEnable Symbol Validation Manager for Relocatable Compile Validations", SET_OPTION_BIT(TR_EnableSymbolValidationManager), "F"},
{"enableTailCallOpt", "R\tenable tall call optimization in peephole", SET_OPTION_BIT(TR_EnableTailCallOpt), "F"},
{"enableThisLiveRangeExtension", "R\tenable this live range extesion to the end of the method", SET_OPTION_BIT(TR_EnableThisLiveRangeExtension), "F"},
{"enableTM", "O\tenable transactional memory support", SET_OPTION_BIT(TR_EnableTM), "F"},
{"enableTraps", "C\tenable trap instructions", RESET_OPTION_BIT(TR_DisableTraps), "F"},
{"enableTreePatternMatching", "O\tEnable opts that use the TR_Pattern framework", RESET_OPTION_BIT(TR_DisableTreePatternMatching), "F"},
{"enableUpgradesByJitSamplingWhenHWProfilingEnabled", "O\tAllow Jit Sampling to upgrade cold compilations when HW Profiling is on",
SET_OPTION_BIT(TR_EnableJitSamplingUpgradesDuringHWProfiling), "F", NOT_IN_SUBSET},
{"enableUpgradingAllColdCompilations", "O\ttry to upgrade to warm all cold compilations", SET_OPTION_BIT(TR_EnableUpgradingAllColdCompilations), "F"},
{"enableValueTracing", "O\tenable runtime value tracing (experimental)", SET_OPTION_BIT(TR_EnableValueTracing), "F"},
{"enableVirtualPersistentMemory", "M\tenable persistent memory to be allocated using virtual memory allocators",
SET_OPTION_BIT(TR_EnableVirtualPersistentMemory), "F", NOT_IN_SUBSET},
{"enableVpicForResolvedVirtualCalls", "O\tenable PIC for resolved virtual calls", SET_OPTION_BIT(TR_EnableVPICForResolvedVirtualCalls), "F"},
{"enableYieldVMAccess", "O\tenable yielding of VM access when GC is waiting", SET_OPTION_BIT(TR_EnableYieldVMAccess), "F"},
{"enableZEpilogue", "O\tenable 64-bit 390 load-multiple breakdown.", SET_OPTION_BIT(TR_Enable39064Epilogue), "F"},
{"enumerateAddresses=", "D\tselect kinds of addresses to be replaced by unique identifiers in trace file", TR::Options::setAddressEnumerationBits, offsetof(OMR::Options, _addressToEnumerate), 0, "F"},
{"estimateRegisterPressure", "O\tdeprecated; equivalent to enableRegisterPressureSimulation", RESET_OPTION_BIT(TR_DisableRegisterPressureSimulation), "F"},
{"experimentalClassLoadPhase", "O\tenable the experimental class load phase algorithm", SET_OPTION_BIT(TR_ExperimentalClassLoadPhase), "F"},
{"extractExitsByInvalidatingStructure", "O\tInstead of running exit extraction normally, detect nodes that would be extracted, and invalidate structure if there are any", SET_OPTION_BIT(TR_ExtractExitsByInvalidatingStructure), "F"},
{"failPreXRecompile", "I\tfail prexistance based recompilatoins", SET_OPTION_BIT(TR_FailPreXRecompile), "F"},
{"failRecompile", "I\tfail the compile whenever recompiling a method", SET_OPTION_BIT(TR_FailRecompile), "F"},
{"fanInCallGraphFactor=", "R<nnn>\tFactor by which the weight of the callgraph for a particular caller is multiplied",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::INLINE_fanInCallGraphFactor, 0, "F%d", NOT_IN_SUBSET},
{"firstLevelProfiling", "O\tProfile first time compilations", SET_OPTION_BIT(TR_FirstLevelProfiling), "F"},
{"firstOptIndex=", "O<nnn>\tindex of the first optimization to perform",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_firstOptIndex), 0, "F%d"},
{"firstOptTransformationIndex=", "O<nnn>\tindex of the first optimization transformation to perform",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_firstOptTransformationIndex), 0, "F%d"},
{"firstRun", "O\tTell the compiler this is the first run (for count setting and persistence).", SET_OPTION_BIT(TR_FirstRun), "F"},
{"floatMAF", "O\tEnable fused multiply add (FMA) operations.", SET_OPTION_BIT(TR_FloatMAF), "F"},
{"forceAOT", "M\tForce compilations to be done in AOT mode",
SET_OPTION_BIT(TR_ForceAOT), "P", NOT_IN_SUBSET},
{"forceBCDInit", "O\tForce Binary Coded Decimal (BCD) loads to be initialized by forcing the field to a temporary", SET_OPTION_BIT(TR_ForceBCDInit), "F"},
{"forceFieldWatch", "M\tForce JIT to pretend that field watch is activated", SET_OPTION_BIT(TR_EnableFieldWatch), "P", NOT_IN_SUBSET},
{"forceFullSpeedDebug", "M\tForce JIT to pretend that debug mode is activated",
SET_OPTION_BIT(TR_FullSpeedDebug), "P", NOT_IN_SUBSET},
{"forceIEEEDivideByZeroException", "O\tForce IEEE divide by zero exception bit on when performing DFP division", SET_OPTION_BIT(TR_ForceIEEEDivideByZeroException), "F"},
{"forceLoadAOT", "M\tForce loading of relocatable code outside of class load phase from the shared cache",
SET_OPTION_BIT(TR_ForceLoadAOT), "P", NOT_IN_SUBSET},
{"forceNonSMP", "D\tforce UniP code generation.", SET_OPTION_BIT(TR_ForceNonSMP), "F"},
{"forceReadOnlyCode", "M\tForce generation of read-only code (no self-modifying code)\t", SET_OPTION_BIT(TR_ForceGenerateReadOnlyCode), "F", NOT_IN_SUBSET },
{"forceUsePreexistence", "D\tPretend methods are using pre-existence. RAS feature.", SET_OPTION_BIT(TR_ForceUsePreexistence), "F"},
{"forceVSSStackCompaction", "O\tAlways compact VariableSizeSymbols on the stack", SET_OPTION_BIT(TR_ForceVSSStackCompaction), "F"},
{"fullInliningUnderOSRDebug", "O\tDo full inlining under OSR based debug (new FSD)", SET_OPTION_BIT(TR_FullInlineUnderOSRDebug), "F"},
{"GCRCount=", "R<nnn>\tthe value to which the counter is set for a method containing GCR body. The default is the upgrade compilation count",
TR::Options::setCount, offsetof(OMR::Options,_GCRCount), 0, "F%d"},
{"GCRdecCount=", "R<nnn>\tthe value by which the counter is decremented by guarded counting recompilations (postitive value)",
TR::Options::setCount, offsetof(OMR::Options,_GCRDecCount), 0, "F%d"},
{"GCRresetCount=", "R<nnn>\tthe value to which the counter is reset to after being tripped by guarded counting recompilations (postive value)",
TR::Options::setCount, offsetof(OMR::Options,_GCRResetCount), 0, "F%d"},
{"generateCompleteInlineRanges", "O\tgenerate meta data ranges for each change in inliner depth", SET_OPTION_BIT(TR_GenerateCompleteInlineRanges), "F"},
{"hcrPatchClassPointers", "I\tcreate runtime assumptions for patching pointers to classes, even though they are now updated in-place", SET_OPTION_BIT(TR_HCRPatchClassPointers), "F"},
{"help", " \tdisplay this help information", TR::Options::helpOption, 0, 0, NULL, NOT_IN_SUBSET},
{"help=", " {regex}\tdisplay help for options whose names match {regex}", TR::Options::helpOption, 1, 0, NULL, NOT_IN_SUBSET},
{"highOpt", "O\tdeprecated; equivalent to optLevel=hot", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), hot},
{"hotFieldReductionAlgorithm=", "O\tcompilation's hot field combined block frequency reduction algorithm", TR::Options::setHotFieldReductionAlgorithm, 0, 0, "F", NOT_IN_SUBSET},
{"hotFieldThreshold=", "M<nnn>\t The normalized frequency of a reference to a field to be marked as hot. Values are 0 to 10000. Default is 10",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_hotFieldThreshold, 0, "F%d", NOT_IN_SUBSET},
{"hotMaxStaticPICSlots=", " <nnn>\tmaximum number of polymorphic inline cache slots pre-populated from profiling info for hot and above. A negative value -N means use N times the maxStaticPICSlots setting.",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_hotMaxStaticPICSlots), 0, "F%d"},
{"ignoreAssert", "Ignore any failing assertions", SET_OPTION_BIT(TR_IgnoreAssert), "F"},
{"ignoreIEEE", "O\tallow non-IEEE compliant optimizations", SET_OPTION_BIT(TR_IgnoreIEEERestrictions), "F"},
#ifdef DEBUG
{"ignoreUnimp", "D\tdo not fail compilation for unimpemented opcodes",
TR::Options::setDebug, (intptr_t)"continueWithUnimplementedOpCode"},
#endif
{"immediateCountingRecompilation", "D\tRecompile GCR methods as soon as possible", SET_OPTION_BIT(TR_ImmediateCountingRecompilation), "F", NOT_IN_SUBSET},
{"induceOSR=", "L<induceOSRspec>\tinject induceOSR at specified locations",
TR::Options::setString, offsetof(OMR::Options,_induceOSR), 0, "P%s"},
{"inhibitRecompilation", "R\tInhibit (but don't disable) recompilation. For diagnostic only.", SET_OPTION_BIT(TR_InhibitRecompilation), "F", NOT_IN_SUBSET},
{"inhibitRIBufferProcessingDuringDeepSteady", "R\tInhibit RI during DeepSteady state", SET_OPTION_BIT(TR_InhibitRIBufferProcessingDuringDeepSteady), "F", NOT_IN_SUBSET },
{"initialOptLevel=cold", "O\thint to perform first time compilations at cold optlevel",
TR::Options::set32BitValue, offsetof(OMR::Options, _initialOptLevel), cold, "F", NOT_IN_SUBSET },
{"initialOptLevel=hot", "O\thint to perform first time compilations at hot optlevel",
TR::Options::set32BitValue, offsetof(OMR::Options, _initialOptLevel), hot, "F", NOT_IN_SUBSET },
{"initialOptLevel=noOpt", "O\thint to perform first time compilations at noOpt optlevel",
TR::Options::set32BitValue, offsetof(OMR::Options, _initialOptLevel), noOpt, "F", NOT_IN_SUBSET },
{"initialOptLevel=scorching", "O\thint to perform first time compilations at scorching optlevel",
TR::Options::set32BitValue, offsetof(OMR::Options, _initialOptLevel), scorching, "F", NOT_IN_SUBSET },
{"initialOptLevel=warm", "O\thint to perform first time compilations at warm optlevel",
TR::Options::set32BitValue, offsetof(OMR::Options, _initialOptLevel), warm, "F", NOT_IN_SUBSET },
{"inlineCntrAllBucketSize=", "R<nnn>\tThe unit used to categorize all uninlined calls at once",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrAllBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrCalleeTooBigBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the callee is too big",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrCalleeTooBigBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrCalleeTooDeepBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the recursively computed size of the callee is too big",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrCalleeTooDeepBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrColdAndNotTinyBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the callee is cold and not tiny",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrColdAndNotTinyBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrDepthExceededBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the depth in the call chain is too much",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrDepthExceededBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrRanOutOfBudgetBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the caller ran out of budget",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrRanOutOfBudgetBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrWarmCalleeHasTooManyNodesBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the warm callee has too many nodes",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrWarmCalleeHasTooManyNodesBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrWarmCalleeTooBigBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the warm callee is too big",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrWarmCalleeTooBigBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineCntrWarmCallerHasTooManyNodesBucketSize=", "R<nnn>\tThe unit used to categorize uninlined calls when the warm caller has too many nodes",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlineCntrWarmCallerHasTooManyNodesBucketSize), 0, "F%d", NOT_IN_SUBSET},
{"inlineNativeOnly", "O\tinliner only inline native methods and do not inline other Java methods", SET_OPTION_BIT(TR_InlineNativeOnly), "F" },
{"inlinerArgumentHeuristicFractionBeyondWarm=", "O<nnn>\tAt hotness above warm, decreases estimated size by 1/N when the inliner's argument heuristic kicks in", TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlinerArgumentHeuristicFractionBeyondWarm), 0, "F%d"},
{"inlinerArgumentHeuristicFractionUpToWarm=", "O<nnn>\tAt hotness up to and including warm, decreases estimated size by 1/N when the inliner's argument heuristic kicks in", TR::Options::set32BitNumeric, offsetof(OMR::Options,_inlinerArgumentHeuristicFractionUpToWarm), 0, "F%d"},
{"inlinerBorderFrequency=", "O<nnn>\tblock frequency threshold for not inlining at warm", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerBorderFrequency), 0, "F%d" },
{"inlinerCGBorderFrequency=", "O<nnn>\tblock frequency threshold for not inlining at warm", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerCGBorderFrequency), 0, "F%d" },
{"inlinerCGColdBorderFrequency=", "O<nnn>\tblock frequency threshold for not inlining at warm", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerCGColdBorderFrequency), 0, "F%d" },
{"inlinerCGVeryColdBorderFrequency=", "O<nnn>\tblock frequency threshold for not inlining at warm", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerCGVeryColdBorderFrequency), 0, "F%d" },
{"inlinerColdBorderFrequency=", "O<nnn>\tblock frequency threshold for not inlining at warm", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerColdBorderFrequency), 0, "F%d" },
{"inlinerFanInUseCalculatedSize", "O\tUse calculated size for fanin method size threshold", SET_OPTION_BIT(TR_InlinerFanInUseCalculatedSize), "F" },
{"inlinerVeryColdBorderFrequency=", "O<nnn>\tblock frequency threshold for not inlining at warm", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerVeryColdBorderFrequency), 0, "F%d" },
{"inlinerVeryColdBorderFrequencyAtCold=", "O<nnn>\tblock frequency threshold for not inlining at cold", TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerVeryColdBorderFrequencyAtCold), 0, "F%d" },
{"inlinerVeryLargeCompiledMethodAdjustFactor=", "O<nnn>\tFactor to multiply the perceived size of the method",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_inlinerVeryLargeCompiledMethodAdjustFactor, 0, "F%d", NOT_IN_SUBSET },
{"inlinerVeryLargeCompiledMethodFaninThreshold=", "O<nnn>\tFanin threshold to disallow inlining of very large compiled methods",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerVeryLargeCompiledMethodFaninThreshold), 0, "F%d", NOT_IN_SUBSET },
{"inlinerVeryLargeCompiledMethodThreshold=", "O<nnn>\tSize threshold to disallow inlining of very large compiled methods",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _inlinerVeryLargeCompiledMethodThreshold), 0, "F%d", NOT_IN_SUBSET },
{"inlineVeryLargeCompiledMethods", "O\tAllow inlining of very large compiled methods", SET_OPTION_BIT(TR_InlineVeryLargeCompiledMethods), "F" },
{"insertInliningCounters=", "O<nnn>\tInsert instrumentation for debugging counters",TR::Options::set32BitNumeric, offsetof(OMR::Options,_insertDebuggingCounters), 0, "F%d", NOT_IN_SUBSET},
{"interpreterSamplingDivisorInStartupMode=", "R<nnn>\tThe divisor used to decrease the invocation count when an interpreted method is sampled",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_interpreterSamplingDivisorInStartupMode, 0, "F%d", NOT_IN_SUBSET},
{"iprofilerPerformTimestampCheck", "O\tInterpreter Profiling will perform some validity checks based on timestamps",
SET_OPTION_BIT(TR_IProfilerPerformTimestampCheck), "F"},
{"iprofilerVerbose", "O\tEnable Interpreter Profiling output messages", SET_OPTION_BIT(TR_VerboseInterpreterProfiling), "F"},
{"jitAllAtMain", "D\tjit all loaded methods when main is called", SET_OPTION_BIT(TR_jitAllAtMain), "F" },
{"jProfilingLoopRecompThreshold=", "C<nnn>\tLoop recompilation threshold for jProfiling",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_jProfilingLoopRecompThreshold), 0, "F%d"},
{"jProfilingMethodRecompThreshold=", "C<nnn>\tMethod invocations for jProfiling body",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_jProfilingMethodRecompThreshold), 0, "F%d"},
{"keepBCDWidening", "O\tstress testing option -- do not remove widening BCD operations", SET_OPTION_BIT(TR_KeepBCDWidening), "F" },
{"largeCompiledMethodExemptionFreqCutoff=", "O<nnn>\tInliner threshold",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _largeCompiledMethodExemptionFreqCutoff), 0, "F%d" },
{"largeNumberOfLoops=", "O<nnn>\tnumber of loops to consider 'a large number'", TR::Options::set32BitNumeric, offsetof(OMR::Options,_largeNumberOfLoops), 0, "F%d"},
{"lastIpaOptTransformationIndex=", "O<nnn>\tindex of the last ipa optimization to perform",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_lastIpaOptTransformationIndex), 0, "F%d"},
{"lastOptIndex=", "O<nnn>\tindex of the last optimization to perform",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_lastOptIndex), 0, "F%d"},
{"lastOptSubIndex=", "O<nnn>\tindex of the last opt transformation to perform within the last optimization (see lastOptIndex)",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_lastOptSubIndex), 0, "F%d"},
{"lastOptTransformationIndex=", "O<nnn>\tindex of the last optimization transformation to perform",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_lastOptTransformationIndex), 0, "F%d"},
{"lockReserveClass=", "O{regex}\tenable reserving locks for specified classes", TR::Options::setRegex, offsetof(OMR::Options, _lockReserveClass), 0, "P"},
{"lockVecRegs=", "M<nn>\tThe number of vector register to lock (from end) Range: 0-32", TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_numVecRegsToLock, 0, "F%d", NOT_IN_SUBSET},
{"log=", "L<filename>\twrite log output to filename",
TR::Options::setString, offsetof(OMR::Options,_logFileName), 0, "P%s"},
{"loi=", "O<nnn>\tindex of the last optimization transformation to perform",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_lastOptTransformationIndex), 0, "F%d"},
{"loopyAsyncCheckInsertionMaxEntryFreq=",
"O<nnn>\tmaximum entry block frequency for which asynccheck insertion "
"considers a method to contain a very frequent block",
TR::Options::set32BitNumeric, offsetof(OMR::Options, _loopyAsyncCheckInsertionMaxEntryFreq), 0, "F%d" },
{"lowCodeCacheThreshold=", "M<nnn>\tthreshold for available code cache contiguous space",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_lowCodeCacheThreshold, 0, "F%d", NOT_IN_SUBSET},
{"lowerCountsForAotCold", "M\tLower counts for cold aot runs", SET_OPTION_BIT(TR_LowerCountsForAotCold), "F", NOT_IN_SUBSET},
{"lowOpt", "O\tdeprecated; equivalent to optLevel=cold",
TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), cold},
{"maskAddresses", "D\tremove addresses from trace file", SET_OPTION_BIT(TR_MaskAddresses), "F" },
{"maxBytesToLeaveAllocatedInSharedPool=","R<nnn>\tnumber of memory segments to leave allocated",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_maxBytesToLeaveAllocatedInSharedPool, 0, "F%d", NOT_IN_SUBSET},
{"maxInlinedCalls=", "O<nnn>\tmaximum number of calls to be inlined",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_maxInlinedCalls), 0, "F%d"},
{"maxLimitedGRACandidates=", "C<nnn>\tThe max number of candidates to consider for limited GRA", TR::Options::set32BitNumeric, offsetof(OMR::Options,_maxLimitedGRACandidates), TR_MAX_LIMITED_GRA_CANDIDATES , "F%d"},
{"maxLimitedGRARegs=", "C<nnn>\tThe max number of registers to assign for limited GRA", TR::Options::set32BitNumeric, offsetof(OMR::Options,_maxLimitedGRARegs), TR_MAX_LIMITED_GRA_REGS , "F%d"},
{"maxNumPrexAssumptions=", "R<nnn>\tmaximum number of preexistence assumptions allowed per class",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_maxNumPrexAssumptions, 0, "P%d", NOT_IN_SUBSET},
{"maxNumVisitedSubclasses=", "R<nnn>\tmaximum number of subclasses allowed per chtable lookup for a given call site",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_maxNumVisitedSubclasses, 0, "P%d", NOT_IN_SUBSET},
{"maxPeekedBytecodeSize=", "O<nnn>\tmaximum number of bytecodes that can be peeked into",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_maxPeekedBytecodeSize, 0, "F%d", NOT_IN_SUBSET},
{"maxSizeForVPInliningAtWarm=", "O<nnn>\tMax size for methods inlined during VP", TR::Options::set32BitNumeric, offsetof(OMR::Options, _maxSzForVPInliningWarm), 0, "F%d" },
{"maxSleepTimeMsForCompThrottling=", "M<nnn>\tUpper bound for sleep time during compilation throttling (ms)",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_maxSleepTimeMsForCompThrottling, 0, "F%d", NOT_IN_SUBSET },
{"maxSpreadCountLoopless=", "O<nnn>\tnumber of maximum additional invocations before compiling methods without loops",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_maxSpreadCountLoopless), 0, "F%d", NOT_IN_SUBSET},
{"maxSpreadCountLooply=", "O<nnn>\tnumber of maximum additional invocations before compiling methods with loops",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_maxSpreadCountLoopy), 0, "F%d", NOT_IN_SUBSET},
{"maxStaticPICSlots=", " <nnn>\tmaximum number of polymorphic inline cache slots pre-populated from profiling info",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_maxStaticPICSlots), 0, "F%d"},
{"maxUnloadedAddressRanges=", " <nnn>\tmaximum number of entries in arrays of unloaded class/method address ranges",
TR::Options::set32BitSignedNumeric, offsetof(OMR::Options,_maxUnloadedAddressRanges), 0, "F%d"},
{"mbc=", "C<nnn>\tThe max number of candidates to consider for limited GRA", TR::Options::set32BitNumeric, offsetof(OMR::Options,_maxLimitedGRACandidates), TR_MAX_LIMITED_GRA_CANDIDATES , "F%d"},
{"mbr=", "C<nnn>\tThe max number of registers to assign for limited GRA", TR::Options::set32BitNumeric, offsetof(OMR::Options,_maxLimitedGRARegs), TR_MAX_LIMITED_GRA_REGS , "F%d"},
{"mccSanityCheck", "M\tEnable multi-code-cache sanity checking. High overhead", SET_OPTION_BIT(TR_CodeCacheSanityCheck), "F", NOT_IN_SUBSET},
{"memExpensiveCompThreshold=", "M<nnn>\tthreshold for when compilations are considered memory expensive",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_memExpensiveCompThreshold, 0, "F%d", NOT_IN_SUBSET},
{"memUsage", "D\tgather lexical memory profiling statistics of all memory types: stack, heap and persistent",
SET_OPTION_BIT(TR_LexicalMemProfiler), "F"},
{"memUsage=", "D\tgather lexical memory profiling statistics of the list of memory types: stack, heap or persistent",
TR::Options::setRegex, offsetof(OMR::Options, _memUsage), 0, "P"},
{"methodOverrideRatSize=", "M<nnn>\tsize of runtime assumption table for method override ops",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_methodOverrideRatSize, 0, "F%d", NOT_IN_SUBSET},
{"milcount=", "O<nnn>\tnumber of invocations before compiling methods with many iterations loops",
TR::Options::setCount, offsetof(OMR::Options,_initialMILCount), 0, "F%d"},
{"mimicInterpreterFrameShape", "O\tMake sure all locals are laid out in the stack frame just as they would be for the interpreter", SET_OPTION_BIT(TR_MimicInterpreterFrameShape), "F"},
{"minBytesToLeaveAllocatedInSharedPool=","R<nnn>\tnumber of memory segments to leave allocated",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_minBytesToLeaveAllocatedInSharedPool, 0, "F%d", NOT_IN_SUBSET},
{"minNumberOfTreeTopsInsideTMMonitor=", "R<nnn>\tMinimal number of tree tops needed for TM monitor",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_minimalNumberOfTreeTopsInsideTMMonitor, 0, "P%d", NOT_IN_SUBSET},
{"minProfiledCheckcastFrequency=", "O<nnn>\tmin profiled frequency for which we generate checkcast test."
"Percentage: 0-100",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_minProfiledCheckcastFrequency, 0, "F%d", NOT_IN_SUBSET},
{"minSleepTimeMsForCompThrottling=", "M<nnn>\tLower bound for sleep time during compilation throttling (ms)",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_minSleepTimeMsForCompThrottling, 0, "F%d", NOT_IN_SUBSET },
{"noAotSecondRunDetection", "M\tdo not do second run detection for AOT", SET_OPTION_BIT(TR_NoAotSecondRunDetection), "F", NOT_IN_SUBSET },
#ifdef DEBUG
{"noExceptions", "C\tfail compilation for methods with exceptions",
TR::Options::setDebug, (intptr_t)"noExceptions"},
#endif
{"noIProfilerDuringStartupPhase", "R\tturn off iprofiler during first startup phase", SET_OPTION_BIT(TR_NoIProfilerDuringStartupPhase), "F", NOT_IN_SUBSET},
{"noJitDuringBootstrap", "D\tdon't jit methods during bootstrap", SET_OPTION_BIT(TR_noJitDuringBootstrap), "F" },
{"noJitUntilMain", "D\tdon't jit methods until main has been called", SET_OPTION_BIT(TR_noJitUntilMain), "F" },
{"noload", "M\tdo not load AOT code from the shared cache (-Xaot option)", SET_OPTION_BIT(TR_NoLoadAOT), "F"},
{NoOptString, "O\tdeprecated; equivalent to optLevel=noOpt",
TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), noOpt, "F"},
{"noRecompile", "D\tdo not recompile even when counts allow it", SET_OPTION_BIT(TR_NoRecompile), "F" },
{"noregmap", "C\tgenerate GC maps without register maps", RESET_OPTION_BIT(TR_RegisterMaps), NULL, NOT_IN_SUBSET},
{"noResumableTrapHandler", "C\tdo not generate traps for exception detections",
SET_OPTION_BIT(TR_NoResumableTrapHandler), "F" },
{"noServer", "D\tDisable compilation strategy for large scale applications (e.g. WebSphere)", SET_OPTION_BIT(TR_NoOptServer), "P" },
{"nostore", "M\tdo not store AOT code into shared cache (-Xaot option)", SET_OPTION_BIT(TR_NoStoreAOT), "F"},
{"numInterfaceCallCacheSlots=", "C<nnn>\tThe number of cache slots allocated per interface callpoint, 64 bit zseries only, default is 4",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_numInterfaceCallCacheSlots), 4, "F%d"},
{"numInterfaceCallStaticSlots=", "C<nnn>\tThe number of static slots allocated per interface callpoint, 64 bit zseries only, default is 1",
TR::Options::set32BitNumeric, offsetof(OMR::Options,_numInterfaceCallStaticSlots), 1, "F%d"},
{"numIProfiledCallsToTriggerLowPriComp=", "M<nnn>",
TR::Options::setStaticNumeric, (intptr_t)&OMR::Options::_numIProfiledCallsToTriggerLowPriComp, 0, "F%d", NOT_IN_SUBSET },
{"objectFile=", "L<filename>\twrite object file to filename", TR::Options::setString, offsetof(OMR::Options,_objectFileName), 0, "P%s", NOT_IN_SUBSET},
{"oldDataCacheImplementation", "I\trevert to old data cache implementation.", SET_OPTION_BIT(TR_OldDataCacheImplementation),"F", NOT_IN_SUBSET},
{"omitFramePointer", "I\tdo not dedicate a frame pointer register for X86 system linkage.", SET_OPTION_BIT(TR_OmitFramePointer),"F", NOT_IN_SUBSET},
{"onlyInline=", "O{regex}\tlist of methods that can be inlined",
TR::Options::setRegex, offsetof(OMR::Options, _onlyInline), 0, "P"},
{"optDetails", "L\tlog all optimizer transformations",
SET_OPTION_BIT(TR_TraceOptDetails), "F" },
{"optFile=", "O<filename>\tRead in 'Performing' statements from <filename> and perform those opts instead of the usual ones",
TR::Options::setString, offsetof(OMR::Options,_optFileName), 0, "P%s"},
{"optLevel=cold", "O\tcompile all methods at cold level", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), cold, "P"},
{"optLevel=hot", "O\tcompile all methods at hot level", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), hot, "P"},
{"optLevel=noOpt", "O\tcompile all methods at noOpt level", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), noOpt, "P"},
{"optLevel=scorching", "O\tcompile all methods at scorching level", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), scorching, "P"},
{"optLevel=veryHot", "O\tcompile all methods at veryHot level", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), veryHot, "P"},
{"optLevel=warm", "O\tcompile all methods at warm level", TR::Options::set32BitValue, offsetof(OMR::Options, _optLevel), warm, "P"},
{"packedTest=", "D{regex}\tforce particular code paths to test Java Packed Object",
TR::Options::setRegex, offsetof(OMR::Options, _packedTest), 0, "P"},
{"paintAllocatedFrameSlotsDead", "C\tpaint all slots allocated in method prologue with deadf00d", SET_OPTION_BIT(TR_PaintAllocatedFrameSlotsDead), "F"},
{"paintAllocatedFrameSlotsFauxObject", "C\tpaint all slots allocated in method prologue with faux object pointer", SET_OPTION_BIT(TR_PaintAllocatedFrameSlotsFauxObject), "F"},
{"paintDataCacheOnFree", "I\tpaint data cache allocations that are being returned to the pool", SET_OPTION_BIT(TR_PaintDataCacheOnFree), "F"},