comparison src/share/vm/opto/callGenerator.hpp @ 12956:3213ba4d3dff

8024069: replace_in_map() should operate on parent maps Summary: type information gets lost because replace_in_map() doesn't update parent maps Reviewed-by: kvn, twisti
author roland
date Sat, 19 Oct 2013 12:16:43 +0200
parents 29bdcf12457c
children b2ee5dc63353
comparison
equal deleted inserted replaced
12955:252d541466ea 12956:3213ba4d3dff
28 #include "compiler/compileBroker.hpp" 28 #include "compiler/compileBroker.hpp"
29 #include "opto/callnode.hpp" 29 #include "opto/callnode.hpp"
30 #include "opto/compile.hpp" 30 #include "opto/compile.hpp"
31 #include "opto/type.hpp" 31 #include "opto/type.hpp"
32 #include "runtime/deoptimization.hpp" 32 #include "runtime/deoptimization.hpp"
33
34 class Parse;
33 35
34 //---------------------------CallGenerator------------------------------------- 36 //---------------------------CallGenerator-------------------------------------
35 // The subclasses of this class handle generation of ideal nodes for 37 // The subclasses of this class handle generation of ideal nodes for
36 // call sites and method entry points. 38 // call sites and method entry points.
37 39
106 // If the call traps, the returned map must have a control edge of top. 108 // If the call traps, the returned map must have a control edge of top.
107 // If the call can throw, the returned map must report has_exceptions(). 109 // If the call can throw, the returned map must report has_exceptions().
108 // 110 //
109 // If the result is NULL, it means that this CallGenerator was unable 111 // If the result is NULL, it means that this CallGenerator was unable
110 // to handle the given call, and another CallGenerator should be consulted. 112 // to handle the given call, and another CallGenerator should be consulted.
111 virtual JVMState* generate(JVMState* jvms) = 0; 113 virtual JVMState* generate(JVMState* jvms, Parse* parent_parser) = 0;
112 114
113 // How to generate a call site that is inlined: 115 // How to generate a call site that is inlined:
114 static CallGenerator* for_inline(ciMethod* m, float expected_uses = -1); 116 static CallGenerator* for_inline(ciMethod* m, float expected_uses = -1);
115 // How to generate code for an on-stack replacement handler. 117 // How to generate code for an on-stack replacement handler.
116 static CallGenerator* for_osr(ciMethod* m, int osr_bci); 118 static CallGenerator* for_osr(ciMethod* m, int osr_bci);