16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "classfile/classLoaderData.inline.hpp"
27 #include "code/compiledIC.hpp"
28 #include "code/nmethod.hpp"
29 #include "code/scopeDesc.hpp"
30 #include "interpreter/interpreter.hpp"
31 #include "memory/resourceArea.hpp"
32 #include "oops/methodData.hpp"
33 #include "oops/method.inline.hpp"
34 #include "oops/oop.inline.hpp"
35 #include "prims/nativeLookup.hpp"
36 #include "runtime/advancedThresholdPolicy.hpp"
37 #include "runtime/compilationPolicy.hpp"
38 #include "runtime/frame.hpp"
39 #include "runtime/handles.inline.hpp"
40 #include "runtime/rframe.hpp"
41 #include "runtime/simpleThresholdPolicy.hpp"
42 #include "runtime/stubRoutines.hpp"
43 #include "runtime/thread.hpp"
44 #include "runtime/timer.hpp"
45 #include "runtime/vframe.hpp"
46 #include "runtime/vm_operations.hpp"
47 #include "utilities/events.hpp"
48 #include "utilities/globalDefinitions.hpp"
49
50 CompilationPolicy* CompilationPolicy::_policy;
51 elapsedTimer CompilationPolicy::_accumulated_time;
52 bool CompilationPolicy::_in_vm_startup;
53
54 // Determine compilation policy based on command line argument
55 void compilationPolicy_init() {
56 CompilationPolicy::set_in_vm_startup(DelayCompilationDuringStartup);
57
58 switch(CompilationPolicyChoice) {
59 case 0:
60 CompilationPolicy::set_policy(new SimpleCompPolicy());
61 break;
62
63 case 1:
64 #ifdef COMPILER2
65 CompilationPolicy::set_policy(new StackWalkCompPolicy());
66 #else
67 Unimplemented();
68 #endif
69 break;
70 case 2:
71 #ifdef TIERED
72 CompilationPolicy::set_policy(new SimpleThresholdPolicy());
73 #else
74 Unimplemented();
75 #endif
76 break;
77 case 3:
78 #ifdef TIERED
79 CompilationPolicy::set_policy(new AdvancedThresholdPolicy());
80 #else
81 Unimplemented();
82 #endif
83 break;
84 default:
85 fatal("CompilationPolicyChoice must be in the range: [0-3]");
86 }
87 CompilationPolicy::policy()->initialize();
88 }
89
90 void CompilationPolicy::completed_vm_startup() {
91 if (TraceCompilationPolicy) {
92 tty->print("CompilationPolicy: completed vm startup.\n");
93 }
94 _in_vm_startup = false;
95 }
96
97 // Returns true if m must be compiled before executing it
98 // This is intended to force compiles for methods (usually for
99 // debugging) that would otherwise be interpreted for some reason.
|
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "classfile/classLoaderData.inline.hpp"
27 #include "code/compiledIC.hpp"
28 #include "code/nmethod.hpp"
29 #include "code/scopeDesc.hpp"
30 #include "interpreter/interpreter.hpp"
31 #include "memory/resourceArea.hpp"
32 #include "oops/methodData.hpp"
33 #include "oops/method.inline.hpp"
34 #include "oops/oop.inline.hpp"
35 #include "prims/nativeLookup.hpp"
36 #include "runtime/compilationPolicy.hpp"
37 #include "runtime/frame.hpp"
38 #include "runtime/handles.inline.hpp"
39 #include "runtime/rframe.hpp"
40 #include "runtime/simpleThresholdPolicy.hpp"
41 #include "runtime/stubRoutines.hpp"
42 #include "runtime/thread.hpp"
43 #include "runtime/timer.hpp"
44 #include "runtime/vframe.hpp"
45 #include "runtime/vm_operations.hpp"
46 #include "utilities/events.hpp"
47 #include "utilities/globalDefinitions.hpp"
48
49 CompilationPolicy* CompilationPolicy::_policy;
50 elapsedTimer CompilationPolicy::_accumulated_time;
51 bool CompilationPolicy::_in_vm_startup;
52
53 // Determine compilation policy based on command line argument
54 void compilationPolicy_init() {
55 CompilationPolicy::set_in_vm_startup(DelayCompilationDuringStartup);
56
57 switch(CompilationPolicyChoice) {
58 case 0:
59 CompilationPolicy::set_policy(new SimpleCompPolicy());
60 break;
61
62 case 1:
63 #ifdef COMPILER2
64 CompilationPolicy::set_policy(new StackWalkCompPolicy());
65 #else
66 Unimplemented();
67 #endif
68 break;
69 case 2:
70 case 3:
71 #ifdef TIERED
72 CompilationPolicy::set_policy(new SimpleThresholdPolicy());
73 #else
74 Unimplemented();
75 #endif
76 break;
77 default:
78 fatal("CompilationPolicyChoice must be in the range: [0-3]");
79 }
80 CompilationPolicy::policy()->initialize();
81 }
82
83 void CompilationPolicy::completed_vm_startup() {
84 if (TraceCompilationPolicy) {
85 tty->print("CompilationPolicy: completed vm startup.\n");
86 }
87 _in_vm_startup = false;
88 }
89
90 // Returns true if m must be compiled before executing it
91 // This is intended to force compiles for methods (usually for
92 // debugging) that would otherwise be interpreted for some reason.
|