src/share/vm/opto/doCall.cpp

changeset 6314
1419657ed891
parent 6198
55fb97c4c58d
child 6377
b8413a9cbb84
equal deleted inserted replaced
6313:de95063c0e34 6314:1419657ed891
159 // This is the number of times we expect the call code to be used. 159 // This is the number of times we expect the call code to be used.
160 float expected_uses = past_uses; 160 float expected_uses = past_uses;
161 161
162 // Try inlining a bytecoded method: 162 // Try inlining a bytecoded method:
163 if (!call_does_dispatch) { 163 if (!call_does_dispatch) {
164 InlineTree* ilt; 164 InlineTree* ilt = InlineTree::find_subtree_from_root(this->ilt(), jvms->caller(), jvms->method());
165 if (UseOldInlining) {
166 ilt = InlineTree::find_subtree_from_root(this->ilt(), jvms->caller(), jvms->method());
167 } else {
168 // Make a disembodied, stateless ILT.
169 // TO DO: When UseOldInlining is removed, copy the ILT code elsewhere.
170 float site_invoke_ratio = prof_factor;
171 // Note: ilt is for the root of this parse, not the present call site.
172 ilt = new InlineTree(this, jvms->method(), jvms->caller(), site_invoke_ratio, MaxInlineLevel);
173 }
174 WarmCallInfo scratch_ci; 165 WarmCallInfo scratch_ci;
175 if (!UseOldInlining)
176 scratch_ci.init(jvms, callee, profile, prof_factor);
177 bool should_delay = false; 166 bool should_delay = false;
178 WarmCallInfo* ci = ilt->ok_to_inline(callee, jvms, profile, &scratch_ci, should_delay); 167 WarmCallInfo* ci = ilt->ok_to_inline(callee, jvms, profile, &scratch_ci, should_delay);
179 assert(ci != &scratch_ci, "do not let this pointer escape"); 168 assert(ci != &scratch_ci, "do not let this pointer escape");
180 bool allow_inline = (ci != NULL && !ci->is_cold()); 169 bool allow_inline = (ci != NULL && !ci->is_cold());
181 bool require_inline = (allow_inline && ci->is_hot()); 170 bool require_inline = (allow_inline && ci->is_hot());

mercurial