diff src/share/vm/opto/doCall.cpp @ 14500:fdad2932c73f

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 17ec2d5c43e8
children 4ca6dc0799b6 968a17f18337 78bbf4d43a14
line wrap: on
line diff
--- a/src/share/vm/opto/doCall.cpp	Tue Feb 25 14:09:02 2014 +0100
+++ b/src/share/vm/opto/doCall.cpp	Tue Feb 25 18:16:24 2014 +0100
@@ -250,7 +250,7 @@
           CallGenerator* miss_cg;
           Deoptimization::DeoptReason reason = morphism == 2 ?
                                     Deoptimization::Reason_bimorphic :
-                                    Deoptimization::Reason_class_check;
+                                    (speculative_receiver_type == NULL ? Deoptimization::Reason_class_check : Deoptimization::Reason_speculate_class_check);
           if ((morphism == 1 || (morphism == 2 && next_hit_cg != NULL)) &&
               !too_many_traps(jvms->method(), jvms->bci(), reason)
              ) {