annotate graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java @ 7063:0d7dfa5b79e8

merged inlining and intrinsification phases some optimizations for Integer- and TypeSwitch added iterator to do the inlining in control-flow order
author Christian Haeubl <haeubl@ssw.jku.at>
date Thu, 15 Nov 2012 15:10:41 +0100
parents 6db6881c1270
children 8d16b9b2c51e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
1 /*
4255
1e62f742f0b3 Test how trace-code wrapped into an assert looks like.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents: 4213
diff changeset
2 * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
4 *
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
8 *
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
13 * accompanied this code).
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
14 *
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
18 *
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
21 * questions.
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
22 */
6525
2c913b643422 rename packages in graal.phases to match project name
Doug Simon <doug.simon@oracle.com>
parents: 6522
diff changeset
23 package com.oracle.graal.phases;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
24
5798
2585af1e26ac implemented non-XIR lowering of invokes (todo: inline virtual dispatch and null checking of receivers)
Doug Simon <doug.simon@oracle.com>
parents: 5792
diff changeset
25
5346
4c3d953f8131 added mechanism (enabled by -G:PICache and -G:PiFilter) for saving/loading method profiling info to/from disk
Doug Simon <doug.simon@oracle.com>
parents: 5343
diff changeset
26
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
27 /**
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
28 * This class encapsulates options that control the behavior of the Graal compiler.
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
29 *
5056
2f2c6347fce4 comments cleanup/retagging
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5042
diff changeset
30 * (thomaswue) WARNING: Fields of this class are treated as final by Graal.
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
31 */
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
32 public final class GraalOptions {
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
33
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
34 // Checkstyle: stop
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
35 private static final boolean ____ = false;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
36 // Checkstyle: resume
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
37
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
38 public static int Threads = 4;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
39
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
40 // inlining settings
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
41 public static boolean Inline = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
42 public static boolean Intrinsify = true;
5114
dad1ac9dba7d finished first implementation of disabling runtime feedback selectively based on deoptimization history
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5105
diff changeset
43 static boolean InlineMonomorphicCalls = true;
dad1ac9dba7d finished first implementation of disabling runtime feedback selectively based on deoptimization history
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5105
diff changeset
44 static boolean InlinePolymorphicCalls = true;
dad1ac9dba7d finished first implementation of disabling runtime feedback selectively based on deoptimization history
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5105
diff changeset
45 static boolean InlineMegamorphicCalls = ____;
4598
6a44a26ed9e6 set default inlining policy to the greedy one
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4594
diff changeset
46 public static int InliningPolicy = 4;
6a44a26ed9e6 set default inlining policy to the greedy one
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4594
diff changeset
47 public static int WeightComputationPolicy = 2;
4699
83e7065e9c75 adjust inlining policy's maximum trivial size
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4698
diff changeset
48 public static int MaximumTrivialSize = 10;
4529
fc78ad20ec38 fixed exception framestate
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4528
diff changeset
49 public static int MaximumInlineLevel = 30;
4701
44b122d06e3a reduce maximum desired size
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4700
diff changeset
50 public static int MaximumDesiredSize = 3000;
7063
0d7dfa5b79e8 merged inlining and intrinsification phases
Christian Haeubl <haeubl@ssw.jku.at>
parents: 6710
diff changeset
51 public static boolean AlwaysInlineTrivialMethods = ____;
4564
8fc6920e064b avoid recursive inlining, escape analysis does no longer restart inlining with level 0, bugfixes
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4563
diff changeset
52 public static int MaximumRecursiveInlining = 1;
6550
65f09f190be1 small change to inlining heuristics
Lukas Stadler <lukas.stadler@jku.at>
parents: 6525
diff changeset
53 public static int SmallCompiledCodeSize = 2200;
4605
f0569f6336f7 disabled megamorphic calls, trying an inlining policy where invokes within loops do not have any advantages
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4604
diff changeset
54 public static boolean LimitInlinedProbability = ____;
4528
e6e14d25e608 added two inlining policies for comparison
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4526
diff changeset
55 // WeightBasedInliningPolicy (0)
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
56 public static float InliningSizePenaltyExp = 20;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
57 public static float MaximumInlineWeight = 1.25f;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
58 public static float InliningSizePenalty = 1;
4591
33f181ad79d5 changed DynamicSizeBasedInliningPolicy to use log(probability) for frequently executed loops, added check for SmallCompiledCodeSize to WeightBasedInliningPolicy.
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4569
diff changeset
59 // StaticSizeBasedInliningPolicy (1), MinimumCodeSizeBasedInlining (2),
4699
83e7065e9c75 adjust inlining policy's maximum trivial size
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4698
diff changeset
60 // DynamicSizeBasedInliningPolicy (3)
4528
e6e14d25e608 added two inlining policies for comparison
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4526
diff changeset
61 public static int MaximumInlineSize = 35;
4699
83e7065e9c75 adjust inlining policy's maximum trivial size
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4698
diff changeset
62 // GreedySizeBasedInlining (4)
5021
a7c079d5dc87 try to reduce MaximumGreedyInlineSize significantly
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5005
diff changeset
63 public static int MaximumGreedyInlineSize = 100;
a7c079d5dc87 try to reduce MaximumGreedyInlineSize significantly
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5005
diff changeset
64 public static int InliningBonusPerTransferredValue = 10;
4699
83e7065e9c75 adjust inlining policy's maximum trivial size
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4698
diff changeset
65 // Common options for inlining policies 1 to 4
4605
f0569f6336f7 disabled megamorphic calls, trying an inlining policy where invokes within loops do not have any advantages
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4604
diff changeset
66 public static float NestedInliningSizeRatio = 1f;
4528
e6e14d25e608 added two inlining policies for comparison
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4526
diff changeset
67 public static float BoostInliningForEscapeAnalysis = 2f;
e6e14d25e608 added two inlining policies for comparison
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4526
diff changeset
68 public static float ProbabilityCapForInlining = 1f;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
69
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
70 // escape analysis settings
6360
e5203e5843fc first prototype of new PartialEscapeAnalysis
Lukas Stadler <lukas.stadler@jku.at>
parents: 6317
diff changeset
71 public static boolean PartialEscapeAnalysis = true;
6710
6db6881c1270 add Virtualizable and VirtualizerTool, refactor PEA to use it
Lukas Stadler <lukas.stadler@jku.at>
parents: 6685
diff changeset
72 public static boolean EscapeAnalysisHistogram = ____;
6657
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
73 public static int EscapeAnalysisIterations = 2;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
74 public static String EscapeAnalyzeOnly = null;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
75
6657
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
76 public static double TailDuplicationProbability = 0.5;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
77 public static int TailDuplicationTrivialSize = 1;
5786
f69a406355b2 new tail duplication phase
Lukas Stadler <lukas.stadler@jku.at>
parents: 5772
diff changeset
78
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
79 // absolute probability analysis
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
80 public static boolean ProbabilityAnalysis = true;
5005
c2ebd3d559f7 fixed probabilities when polymorphic inlining is used
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5004
diff changeset
81 public static int LoopFrequencyPropagationPolicy = -2;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
82
4551
a7a16015e47f changed profiling maturity so that profiling information is used more likely
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4541
diff changeset
83 // profiling information
5126
43d5ae1051f7 added better debug output when an optimistic deoptimization is disabled
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5118
diff changeset
84 public static int DeoptsToDisableOptimisticOptimization = 40;
5116
312b18b9cc3a added output when optimistic optimizations are disabled
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5114
diff changeset
85 public static boolean PrintDisabledOptimisticOptimizations = true;
4997
0c9196f57172 use profiling information whenever possible
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4991
diff changeset
86 public static int MatureExecutionsBranch = 1;
0c9196f57172 use profiling information whenever possible
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4991
diff changeset
87 public static int MatureExecutionsPerSwitchCase = 1;
0c9196f57172 use profiling information whenever possible
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4991
diff changeset
88 public static int MatureExecutionsTypeProfile = 1;
4551
a7a16015e47f changed profiling maturity so that profiling information is used more likely
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4541
diff changeset
89
5176
af59b4dfc9e4 compilation queue changes:
Lukas Stadler <lukas.stadler@jku.at>
parents: 5156
diff changeset
90 // comilation queue
5183
e1e681a5558e fix PriorityQueue, enable PriorityQueue and CacheGraphs
Lukas Stadler <lukas.stadler@jku.at>
parents: 5180
diff changeset
91 public static int TimedBootstrap = -1;
5336
f536a459c2d3 re-enable graph caching and the priority compilation queue
Lukas Stadler <lukas.stadler@jku.at>
parents: 5334
diff changeset
92 public static boolean PriorityCompileQueue = true;
5176
af59b4dfc9e4 compilation queue changes:
Lukas Stadler <lukas.stadler@jku.at>
parents: 5156
diff changeset
93 public static int SlowQueueCutoff = 100000;
5178
5715abb8e29a benchmark: graal compilation policy + priority queue + dynamic comp thread priority
Lukas Stadler <lukas.stadler@jku.at>
parents: 5177
diff changeset
94 public static boolean SlowCompileThreads = ____;
5180
6ab0cd9909b1 turn off experimental options (graph caching, compilation queue changes)
Lukas Stadler <lukas.stadler@jku.at>
parents: 5179
diff changeset
95 public static boolean DynamicCompilePriority = ____;
5176
af59b4dfc9e4 compilation queue changes:
Lukas Stadler <lukas.stadler@jku.at>
parents: 5156
diff changeset
96
5177
a26b6248d398 added graph caching (-G:+CacheGraphs)
Lukas Stadler <lukas.stadler@jku.at>
parents: 5176
diff changeset
97 // graph caching
5336
f536a459c2d3 re-enable graph caching and the priority compilation queue
Lukas Stadler <lukas.stadler@jku.at>
parents: 5334
diff changeset
98 public static boolean CacheGraphs = true;
5177
a26b6248d398 added graph caching (-G:+CacheGraphs)
Lukas Stadler <lukas.stadler@jku.at>
parents: 5176
diff changeset
99 public static int GraphCacheSize = 1000;
a26b6248d398 added graph caching (-G:+CacheGraphs)
Lukas Stadler <lukas.stadler@jku.at>
parents: 5176
diff changeset
100 public static boolean PrintGraphCache = ____;
a26b6248d398 added graph caching (-G:+CacheGraphs)
Lukas Stadler <lukas.stadler@jku.at>
parents: 5176
diff changeset
101
5741
c84c75339af1 Work on loop unswitching, things look ok, still disabled until FloatingRead preserves loop-closed form
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5732
diff changeset
102 //loop transform settings TODO (gd) tune
5745
11ef22975bba Delete unused LoopTransformPhase
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5741
diff changeset
103 public static boolean LoopPeeling = true;
5692
41149ce1422f Add div test, group loop options in GraalOptions
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5675
diff changeset
104 public static boolean ReassociateInvariants = true;
41149ce1422f Add div test, group loop options in GraalOptions
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5675
diff changeset
105 public static boolean FullUnroll = true;
6309
6f8b6fc03c96 Add a maximum number of unswitching per loop
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6303
diff changeset
106 public static boolean LoopUnswitch = true;
5741
c84c75339af1 Work on loop unswitching, things look ok, still disabled until FloatingRead preserves loop-closed form
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5732
diff changeset
107 public static int FullUnrollMaxNodes = 150;
5884
347fad1ea1d0 increase full unrolling budget for fixed-size loops
Lukas Stadler <lukas.stadler@jku.at>
parents: 5844
diff changeset
108 public static int ExactFullUnrollMaxNodes = 600;
5745
11ef22975bba Delete unused LoopTransformPhase
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5741
diff changeset
109 public static float MinimumPeelProbability = 0.35f;
6309
6f8b6fc03c96 Add a maximum number of unswitching per loop
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6303
diff changeset
110 public static int LoopMaxUnswitch = 3;
5732
e1d5c642d022 Started to draft a loop unswitching policy
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5722
diff changeset
111 public static int LoopUnswitchMaxIncrease = 50;
e1d5c642d022 Started to draft a loop unswitching policy
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5722
diff changeset
112 public static int LoopUnswitchUncertaintyBoost = 5;
5216
b64933dc4830 Peeling loop depending on their entry probability
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5215
diff changeset
113
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
114 // debugging settings
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
115 public static int MethodEndBreakpointGuards = 0;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
116 public static boolean ZapStackOnMethodEntry = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
117 public static boolean DeoptALot = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
118 public static boolean VerifyPhases = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
119 public static boolean CreateDeoptInfo = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
120
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
121 public static String PrintFilter = null;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
122
4357
719ac1d92a52 More work on debug framework.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4353
diff changeset
123 // Debug settings:
719ac1d92a52 More work on debug framework.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4353
diff changeset
124 public static boolean Debug = true;
5134
4eb9895d9afe Refactoring of the debug framework. Move compiler thread implementation to its own file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 5087
diff changeset
125 public static boolean PerThreadDebugValues = ____;
4553
7d0d849abf80 added option to summarize debug values
Christian Haeubl <christian.haeubl@oracle.com>
parents: 4551
diff changeset
126 public static boolean SummarizeDebugValues = ____;
5134
4eb9895d9afe Refactoring of the debug framework. Move compiler thread implementation to its own file.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 5087
diff changeset
127 public static boolean SummarizePerPhase = ____;
6657
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
128 public static String Dump = null;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
129 public static String Meter = null;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
130 public static String Time = null;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
131 public static String Log = null;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
132 public static String LogFile = null;
768793150bcd more PEA refactoring, multiple iterations
Lukas Stadler <lukas.stadler@jku.at>
parents: 6550
diff changeset
133 public static String MethodFilter = null;
5145
19a3ae027c56 Use DumpOnError flag, false by default
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5138
diff changeset
134 public static boolean DumpOnError = ____;
4357
719ac1d92a52 More work on debug framework.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 4353
diff changeset
135
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
136 // Ideal graph visualizer output settings
6685
dbe065c2c5bf Change default graph dumping to binary and no CFG, fix name template for RuntimeCall
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6671
diff changeset
137 public static boolean PrintBinaryGraphs = true;
dbe065c2c5bf Change default graph dumping to binary and no CFG, fix name template for RuntimeCall
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6671
diff changeset
138 public static boolean PrintCFG = ____;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
139 public static boolean PrintIdealGraphFile = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
140 public static String PrintIdealGraphAddress = "127.0.0.1";
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
141 public static int PrintIdealGraphPort = 4444;
5810
bc237d8b6f99 Add binary graph dumping to compiler (-G:+PrintBinaryGraphs)
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5745
diff changeset
142 public static int PrintBinaryGraphPort = 4445;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
143
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
144 // Other printing settings
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
145 public static boolean PrintQueue = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
146 public static boolean PrintCompilation = ____;
5040
4d6e5ddf70e5 added option to print the profiling information
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5021
diff changeset
147 public static boolean PrintProfilingInformation = ____;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
148 public static boolean PrintIRWithLIR = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
149 public static boolean PrintCodeBytes = ____;
5201
891399c54706 Add a PrintBailout option
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5184
diff changeset
150 public static boolean PrintBailout = ____;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
151 public static int TraceLinearScanLevel = 0;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
152 public static int TraceLIRGeneratorLevel = 0;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
153 public static boolean TraceEscapeAnalysis = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
154 public static int TraceBytecodeParserLevel = 0;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
155 public static boolean ExitVMOnBailout = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
156 public static boolean ExitVMOnException = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
157
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
158 // Code generator settings
5391
5097f21f6c2b add a new simple CheckCast elimination phase
Lukas Stadler <lukas.stadler@jku.at>
parents: 5389
diff changeset
159 public static boolean CheckCastElimination = true;
5389
612b4f099362 disable frame state culling
Lukas Stadler <lukas.stadler@jku.at>
parents: 5385
diff changeset
160 public static boolean CullFrameStates = ____;
5105
95b8a32a7cc3 preparations to avoid endless recompilations because of not updated profiling information
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5061
diff changeset
161 public static boolean UseProfilingInformation = true;
5114
dad1ac9dba7d finished first implementation of disabling runtime feedback selectively based on deoptimization history
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5105
diff changeset
162 static boolean RemoveNeverExecutedCode = true;
dad1ac9dba7d finished first implementation of disabling runtime feedback selectively based on deoptimization history
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5105
diff changeset
163 static boolean UseExceptionProbability = true;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
164 public static boolean AllowExplicitExceptionChecks = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
165 public static boolean OmitHotExceptionStacktrace = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
166 public static boolean GenSafepoints = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
167 public static boolean GenLoopSafepoints = true;
5114
dad1ac9dba7d finished first implementation of disabling runtime feedback selectively based on deoptimization history
Christian Haeubl <christian.haeubl@oracle.com>
parents: 5105
diff changeset
168 static boolean UseTypeCheckHints = true;
5844
a432e6d43aa1 fixed bugs related to -G:+InlineVTableStubs and re-enabled it by default
Doug Simon <doug.simon@oracle.com>
parents: 5843
diff changeset
169 public static boolean InlineVTableStubs = true;
5004
2792bcd9a0ce disable vtable stub inlining
Lukas Stadler <lukas.stadler@jku.at>
parents: 5003
diff changeset
170 public static boolean AlwaysInlineVTableStubs = ____;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
171 public static boolean GenAssertionCode = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
172 public static boolean AlignCallsForPatching = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
173 public static boolean ResolveClassBeforeStaticInvoke = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
174
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
175 // Translating tableswitch instructions
7063
0d7dfa5b79e8 merged inlining and intrinsification phases
Christian Haeubl <haeubl@ssw.jku.at>
parents: 6710
diff changeset
176 public static int MinimumJumpTableSize = 5;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
177 public static int RangeTestsSwitchDensity = 5;
5698
764db9ada24f rework of switch operations: unify lookup- and tableswitch, introduce switch lir instructions
Lukas Stadler <lukas.stadler@jku.at>
parents: 5696
diff changeset
178 public static double MinTableSwitchDensity = 0.5;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
179
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
180 public static boolean DetailedAsserts = ____;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
181
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
182 // Runtime settings
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
183 public static int StackShadowPages = 2;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
184
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
185 public static boolean SupportJsrBytecodes = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
186
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
187 public static boolean OptAssumptions = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
188 public static boolean OptReadElimination = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
189 public static boolean OptCanonicalizer = true;
6670
81ad987772f6 Cleanup GraalOption : removed defunct options
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6657
diff changeset
190 public static boolean OptScheduleOutOfLoops = true;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
191 public static boolean OptReorderLoops = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
192 public static boolean OptEliminateGuards = true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
193 public static boolean OptImplicitNullChecks = true;
5029
74f47ef37394 Fix and enable liveness analysis to prune unnecessary frame state entries
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents: 5026
diff changeset
194 public static boolean OptLivenessAnalysis = true;
5215
ae367987a18c Add options for OptLoopTransform and OptSafepointElimination
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5201
diff changeset
195 public static boolean OptLoopTransform = true;
ae367987a18c Add options for OptLoopTransform and OptSafepointElimination
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 5201
diff changeset
196 public static boolean OptSafepointElimination = true;
6670
81ad987772f6 Cleanup GraalOption : removed defunct options
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6657
diff changeset
197 public static boolean OptFloatingReads = true;
5786
f69a406355b2 new tail duplication phase
Lukas Stadler <lukas.stadler@jku.at>
parents: 5772
diff changeset
198 public static boolean OptTailDuplication = true;
6671
bffb038abbe6 Add option for EliminatePartiallyRedundantGuards, eliminate at splits after IterativeConditionalElimination
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6670
diff changeset
199 public static boolean OptEliminatePartiallyRedundantGuards = true;
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
200
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
201 /**
5772
2f7a03583a32 added counters for code paths through the new object snippets
Doug Simon <doug.simon@oracle.com>
parents: 5760
diff changeset
202 * Counts the various paths taken through snippets.
5330
678f31e9724e added -G:+CheckcastCounters to profile the paths taken through a compiled checkcast
Doug Simon <doug.simon@oracle.com>
parents: 5319
diff changeset
203 */
5772
2f7a03583a32 added counters for code paths through the new object snippets
Doug Simon <doug.simon@oracle.com>
parents: 5760
diff changeset
204 public static boolean SnippetCounters = false;
5330
678f31e9724e added -G:+CheckcastCounters to profile the paths taken through a compiled checkcast
Doug Simon <doug.simon@oracle.com>
parents: 5319
diff changeset
205
5343
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
206 /**
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
207 * If the probability that a checkcast will hit one the profiled types (up to {@link #CheckcastMaxHints})
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
208 * is below this value, the checkcast will be compiled without hints.
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
209 */
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
210 public static double CheckcastMinHintHitProbability = 0.5;
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
211
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
212 /**
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
213 * The maximum number of hint types that will be used when compiling a checkcast for which
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
214 * profiling information is available. Note that {@link #CheckcastMinHintHitProbability}
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
215 * also influences whether hints are used.
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
216 */
5331
6e346160f104 replaced magic constants with GraalOptions.CheckcastMaxHints and GraalOptions.InstanceOfMaxHints
Doug Simon <doug.simon@oracle.com>
parents: 5330
diff changeset
217 public static int CheckcastMaxHints = 2;
5343
20c14eb46238 added GraalOptions.CheckcastMinHintHitProbability to better guide use of hints for checkcasts
Doug Simon <doug.simon@oracle.com>
parents: 5336
diff changeset
218
5369
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
219 /**
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
220 * @see #CheckcastMinHintHitProbability
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
221 */
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
222 public static double InstanceOfMinHintHitProbability = 0.5;
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
223
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
224 /**
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
225 * @see #CheckcastMaxHints
2e9a5365dfb0 moved conversion of type profiles into hints for type check instructions from front end to lowering phase
Doug Simon <doug.simon@oracle.com>
parents: 5346
diff changeset
226 */
6670
81ad987772f6 Cleanup GraalOption : removed defunct options
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 6657
diff changeset
227 public static int InstanceOfMaxHints = 2;
5331
6e346160f104 replaced magic constants with GraalOptions.CheckcastMaxHints and GraalOptions.InstanceOfMaxHints
Doug Simon <doug.simon@oracle.com>
parents: 5330
diff changeset
228
3733
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
229 static {
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
230 // turn detailed assertions on when the general assertions are on (misusing the assert keyword for this)
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
231 assert (DetailedAsserts = true) == true;
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
232 }
e233f5660da4 Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
233 }