comparison src/share/vm/runtime/simpleThresholdPolicy.cpp @ 4116:973293defacd

7112085: assert(fr.interpreter_frame_expression_stack_size()==0) failed: only handle empty stacks Summary: Move the inlinee invoke notification callback into inlinee preamble Reviewed-by: kvn, never
author iveresov
date Wed, 16 Nov 2011 19:42:58 -0800
parents 43f9d800f276
children 20334ed5ed3c
comparison
equal deleted inserted replaced
4115:1bd45abaa507 4116:973293defacd
28 #include "runtime/arguments.hpp" 28 #include "runtime/arguments.hpp"
29 #include "runtime/simpleThresholdPolicy.hpp" 29 #include "runtime/simpleThresholdPolicy.hpp"
30 #include "runtime/simpleThresholdPolicy.inline.hpp" 30 #include "runtime/simpleThresholdPolicy.inline.hpp"
31 #include "code/scopeDesc.hpp" 31 #include "code/scopeDesc.hpp"
32 32
33
34 void SimpleThresholdPolicy::print_counters(const char* prefix, methodHandle mh) {
35 int invocation_count = mh->invocation_count();
36 int backedge_count = mh->backedge_count();
37 methodDataHandle mdh = mh->method_data();
38 int mdo_invocations = 0, mdo_backedges = 0;
39 int mdo_invocations_start = 0, mdo_backedges_start = 0;
40 if (mdh() != NULL) {
41 mdo_invocations = mdh->invocation_count();
42 mdo_backedges = mdh->backedge_count();
43 mdo_invocations_start = mdh->invocation_count_start();
44 mdo_backedges_start = mdh->backedge_count_start();
45 }
46 tty->print(" %stotal: %d,%d %smdo: %d(%d),%d(%d)", prefix,
47 invocation_count, backedge_count, prefix,
48 mdo_invocations, mdo_invocations_start,
49 mdo_backedges, mdo_backedges_start);
50 tty->print(" %smax levels: %d,%d", prefix,
51 mh->highest_comp_level(), mh->highest_osr_comp_level());
52 }
53
33 // Print an event. 54 // Print an event.
34 void SimpleThresholdPolicy::print_event(EventType type, methodHandle mh, methodHandle imh, 55 void SimpleThresholdPolicy::print_event(EventType type, methodHandle mh, methodHandle imh,
35 int bci, CompLevel level) { 56 int bci, CompLevel level) {
36 bool inlinee_event = mh() != imh(); 57 bool inlinee_event = mh() != imh();
37 58
38 ttyLocker tty_lock; 59 ttyLocker tty_lock;
39 tty->print("%lf: [", os::elapsedTime()); 60 tty->print("%lf: [", os::elapsedTime());
40 61
41 int invocation_count = mh->invocation_count();
42 int backedge_count = mh->backedge_count();
43 switch(type) { 62 switch(type) {
44 case CALL: 63 case CALL:
45 tty->print("call"); 64 tty->print("call");
46 break; 65 break;
47 case LOOP: 66 case LOOP:
80 CompileBroker::queue_size(CompLevel_full_optimization)); 99 CompileBroker::queue_size(CompLevel_full_optimization));
81 100
82 print_specific(type, mh, imh, bci, level); 101 print_specific(type, mh, imh, bci, level);
83 102
84 if (type != COMPILE) { 103 if (type != COMPILE) {
85 methodDataHandle mdh = mh->method_data(); 104 print_counters("", mh);
86 int mdo_invocations = 0, mdo_backedges = 0;
87 int mdo_invocations_start = 0, mdo_backedges_start = 0;
88 if (mdh() != NULL) {
89 mdo_invocations = mdh->invocation_count();
90 mdo_backedges = mdh->backedge_count();
91 mdo_invocations_start = mdh->invocation_count_start();
92 mdo_backedges_start = mdh->backedge_count_start();
93 }
94 tty->print(" total: %d,%d mdo: %d(%d),%d(%d)",
95 invocation_count, backedge_count,
96 mdo_invocations, mdo_invocations_start,
97 mdo_backedges, mdo_backedges_start);
98 tty->print(" max levels: %d,%d",
99 mh->highest_comp_level(), mh->highest_osr_comp_level());
100 if (inlinee_event) { 105 if (inlinee_event) {
101 tty->print(" inlinee max levels: %d,%d", imh->highest_comp_level(), imh->highest_osr_comp_level()); 106 print_counters("inlinee ", imh);
102 } 107 }
103 tty->print(" compilable: "); 108 tty->print(" compilable: ");
104 bool need_comma = false; 109 bool need_comma = false;
105 if (!mh->is_not_compilable(CompLevel_full_profile)) { 110 if (!mh->is_not_compilable(CompLevel_full_profile)) {
106 tty->print("c1"); 111 tty->print("c1");