comparison src/share/vm/opto/doCall.cpp @ 17728:b8413a9cbb84

8031752: Failed speculative optimizations should be reattempted when root of compilation is different Summary: support for speculative traps that keep track of the root of the compilation in which a trap occurs. Reviewed-by: kvn, twisti
author roland
date Tue, 25 Feb 2014 18:16:24 +0100
parents 1419657ed891
children 4ca6dc0799b6 968a17f18337 78bbf4d43a14
comparison
equal deleted inserted replaced
17727:cfd4aac53239 17728:b8413a9cbb84
248 } 248 }
249 } 249 }
250 CallGenerator* miss_cg; 250 CallGenerator* miss_cg;
251 Deoptimization::DeoptReason reason = morphism == 2 ? 251 Deoptimization::DeoptReason reason = morphism == 2 ?
252 Deoptimization::Reason_bimorphic : 252 Deoptimization::Reason_bimorphic :
253 Deoptimization::Reason_class_check; 253 (speculative_receiver_type == NULL ? Deoptimization::Reason_class_check : Deoptimization::Reason_speculate_class_check);
254 if ((morphism == 1 || (morphism == 2 && next_hit_cg != NULL)) && 254 if ((morphism == 1 || (morphism == 2 && next_hit_cg != NULL)) &&
255 !too_many_traps(jvms->method(), jvms->bci(), reason) 255 !too_many_traps(jvms->method(), jvms->bci(), reason)
256 ) { 256 ) {
257 // Generate uncommon trap for class check failure path 257 // Generate uncommon trap for class check failure path
258 // in case of monomorphic or bimorphic virtual call site. 258 // in case of monomorphic or bimorphic virtual call site.