Mercurial > hg > truffle
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); |