comparison src/share/vm/opto/doCall.cpp @ 1645:3941674cc7fa

6958668: repeated uncommon trapping for new of klass which is being initialized Reviewed-by: kvn, jrose
author never
date Mon, 12 Jul 2010 10:58:25 -0700
parents c18cbe5936b8
children 8aa5fd5d2046
comparison
equal deleted inserted replaced
1644:2a47bd84841f 1645:3941674cc7fa
341 assert( dest_method->is_loaded(), "ciTypeFlow should not let us get here" ); 341 assert( dest_method->is_loaded(), "ciTypeFlow should not let us get here" );
342 // Interface classes can be loaded & linked and never get around to 342 // Interface classes can be loaded & linked and never get around to
343 // being initialized. Uncommon-trap for not-initialized static or 343 // being initialized. Uncommon-trap for not-initialized static or
344 // v-calls. Let interface calls happen. 344 // v-calls. Let interface calls happen.
345 ciInstanceKlass* holder_klass = dest_method->holder(); 345 ciInstanceKlass* holder_klass = dest_method->holder();
346 if (!holder_klass->is_initialized() && 346 if (!holder_klass->is_being_initialized() &&
347 !holder_klass->is_initialized() &&
347 !holder_klass->is_interface()) { 348 !holder_klass->is_interface()) {
348 uncommon_trap(Deoptimization::Reason_uninitialized, 349 uncommon_trap(Deoptimization::Reason_uninitialized,
349 Deoptimization::Action_reinterpret, 350 Deoptimization::Action_reinterpret,
350 holder_klass); 351 holder_klass);
351 return true; 352 return true;