347 ciMethod* m = csj->method();
348 if (m != NULL &&
349 (m->intrinsic_id() == vmIntrinsics::_StringBuffer_toString ||
350 m->intrinsic_id() == vmIntrinsics::_StringBuilder_toString))
351 // Delay String.<init>(new SB())
352 return true;
353 }
354 return false;
355 }
356
357 default:
358 return false;
359 }
360 }
361 return false;
362 }
363
364 bool Compile::should_delay_boxing_inlining(ciMethod* call_method, JVMState* jvms) {
365 if (eliminate_boxing() && call_method->is_boxing_method()) {
366 set_has_boxed_value(true);
367 return true;
368 }
369 return false;
370 }
371
372 // uncommon-trap call-sites where callee is unloaded, uninitialized or will not link
373 bool Parse::can_not_compile_call_site(ciMethod *dest_method, ciInstanceKlass* klass) {
374 // Additional inputs to consider...
375 // bc = bc()
376 // caller = method()
377 // iter().get_method_holder_index()
378 assert( dest_method->is_loaded(), "ciTypeFlow should not let us get here" );
379 // Interface classes can be loaded & linked and never get around to
380 // being initialized. Uncommon-trap for not-initialized static or
381 // v-calls. Let interface calls happen.
382 ciInstanceKlass* holder_klass = dest_method->holder();
383 if (!holder_klass->is_being_initialized() &&
384 !holder_klass->is_initialized() &&
385 !holder_klass->is_interface()) {
386 uncommon_trap(Deoptimization::Reason_uninitialized,
387 Deoptimization::Action_reinterpret,
|
347 ciMethod* m = csj->method();
348 if (m != NULL &&
349 (m->intrinsic_id() == vmIntrinsics::_StringBuffer_toString ||
350 m->intrinsic_id() == vmIntrinsics::_StringBuilder_toString))
351 // Delay String.<init>(new SB())
352 return true;
353 }
354 return false;
355 }
356
357 default:
358 return false;
359 }
360 }
361 return false;
362 }
363
364 bool Compile::should_delay_boxing_inlining(ciMethod* call_method, JVMState* jvms) {
365 if (eliminate_boxing() && call_method->is_boxing_method()) {
366 set_has_boxed_value(true);
367 return aggressive_unboxing();
368 }
369 return false;
370 }
371
372 // uncommon-trap call-sites where callee is unloaded, uninitialized or will not link
373 bool Parse::can_not_compile_call_site(ciMethod *dest_method, ciInstanceKlass* klass) {
374 // Additional inputs to consider...
375 // bc = bc()
376 // caller = method()
377 // iter().get_method_holder_index()
378 assert( dest_method->is_loaded(), "ciTypeFlow should not let us get here" );
379 // Interface classes can be loaded & linked and never get around to
380 // being initialized. Uncommon-trap for not-initialized static or
381 // v-calls. Let interface calls happen.
382 ciInstanceKlass* holder_klass = dest_method->holder();
383 if (!holder_klass->is_being_initialized() &&
384 !holder_klass->is_initialized() &&
385 !holder_klass->is_interface()) {
386 uncommon_trap(Deoptimization::Reason_uninitialized,
387 Deoptimization::Action_reinterpret,
|