521 |
521 |
522 // Bump method data counters (We profile *before* the call is made |
522 // Bump method data counters (We profile *before* the call is made |
523 // because exceptions don't return to the call site.) |
523 // because exceptions don't return to the call site.) |
524 profile_call(receiver); |
524 profile_call(receiver); |
525 |
525 |
526 JVMState* new_jvms = cg->generate(jvms, this); |
526 JVMState* new_jvms = cg->generate(jvms); |
527 if (new_jvms == NULL) { |
527 if (new_jvms == NULL) { |
528 // When inlining attempt fails (e.g., too many arguments), |
528 // When inlining attempt fails (e.g., too many arguments), |
529 // it may contaminate the current compile state, making it |
529 // it may contaminate the current compile state, making it |
530 // impossible to pull back and try again. Once we call |
530 // impossible to pull back and try again. Once we call |
531 // cg->generate(), we are committed. If it fails, the whole |
531 // cg->generate(), we are committed. If it fails, the whole |
535 // This can happen if a library intrinsic is available, but refuses |
535 // This can happen if a library intrinsic is available, but refuses |
536 // the call site, perhaps because it did not match a pattern the |
536 // the call site, perhaps because it did not match a pattern the |
537 // intrinsic was expecting to optimize. Should always be possible to |
537 // intrinsic was expecting to optimize. Should always be possible to |
538 // get a normal java call that may inline in that case |
538 // get a normal java call that may inline in that case |
539 cg = C->call_generator(cg->method(), vtable_index, call_does_dispatch, jvms, try_inline, prof_factor(), speculative_receiver_type, /* allow_intrinsics= */ false); |
539 cg = C->call_generator(cg->method(), vtable_index, call_does_dispatch, jvms, try_inline, prof_factor(), speculative_receiver_type, /* allow_intrinsics= */ false); |
540 if ((new_jvms = cg->generate(jvms, this)) == NULL) { |
540 if ((new_jvms = cg->generate(jvms)) == NULL) { |
541 guarantee(failing(), "call failed to generate: calls should work"); |
541 guarantee(failing(), "call failed to generate: calls should work"); |
542 return; |
542 return; |
543 } |
543 } |
544 } |
544 } |
545 |
545 |