Mercurial > hg > truffle
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. |