Mercurial > hg > graal-compiler
comparison src/share/vm/opto/callGenerator.hpp @ 7482:989155e2d07a
Merge with hs25-b15.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 16 Jan 2013 01:34:24 +0100 |
parents | e522a00b91aa d092d1b31229 |
children | 836a62f43af9 |
comparison
equal
deleted
inserted
replaced
7381:6761a8f854a4 | 7482:989155e2d07a |
---|---|
66 // is_trap: Does not return to the caller. (E.g., uncommon trap.) | 66 // is_trap: Does not return to the caller. (E.g., uncommon trap.) |
67 virtual bool is_trap() const { return false; } | 67 virtual bool is_trap() const { return false; } |
68 | 68 |
69 // is_late_inline: supports conversion of call into an inline | 69 // is_late_inline: supports conversion of call into an inline |
70 virtual bool is_late_inline() const { return false; } | 70 virtual bool is_late_inline() const { return false; } |
71 // same but for method handle calls | |
72 virtual bool is_mh_late_inline() const { return false; } | |
73 | |
74 // for method handle calls: have we tried inlinining the call already? | |
75 virtual bool already_attempted() const { ShouldNotReachHere(); return false; } | |
76 | |
71 // Replace the call with an inline version of the code | 77 // Replace the call with an inline version of the code |
72 virtual void do_late_inline() { ShouldNotReachHere(); } | 78 virtual void do_late_inline() { ShouldNotReachHere(); } |
73 | 79 |
74 virtual CallStaticJavaNode* call_node() const { ShouldNotReachHere(); return NULL; } | 80 virtual CallStaticJavaNode* call_node() const { ShouldNotReachHere(); return NULL; } |
75 | 81 |
110 // How to generate vanilla out-of-line call sites: | 116 // How to generate vanilla out-of-line call sites: |
111 static CallGenerator* for_direct_call(ciMethod* m, bool separate_io_projs = false); // static, special | 117 static CallGenerator* for_direct_call(ciMethod* m, bool separate_io_projs = false); // static, special |
112 static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index); // virtual, interface | 118 static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index); // virtual, interface |
113 static CallGenerator* for_dynamic_call(ciMethod* m); // invokedynamic | 119 static CallGenerator* for_dynamic_call(ciMethod* m); // invokedynamic |
114 | 120 |
115 static CallGenerator* for_method_handle_call( JVMState* jvms, ciMethod* caller, ciMethod* callee); | 121 static CallGenerator* for_method_handle_call( JVMState* jvms, ciMethod* caller, ciMethod* callee, bool delayed_forbidden); |
116 static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee); | 122 static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee, bool& input_not_const); |
117 | 123 |
118 // How to generate a replace a direct call with an inline version | 124 // How to generate a replace a direct call with an inline version |
119 static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg); | 125 static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg); |
126 static CallGenerator* for_mh_late_inline(ciMethod* caller, ciMethod* callee, bool input_not_const); | |
127 static CallGenerator* for_string_late_inline(ciMethod* m, CallGenerator* inline_cg); | |
120 | 128 |
121 // How to make a call but defer the decision whether to inline or not. | 129 // How to make a call but defer the decision whether to inline or not. |
122 static CallGenerator* for_warm_call(WarmCallInfo* ci, | 130 static CallGenerator* for_warm_call(WarmCallInfo* ci, |
123 CallGenerator* if_cold, | 131 CallGenerator* if_cold, |
124 CallGenerator* if_hot); | 132 CallGenerator* if_hot); |
145 static void register_intrinsic(ciMethod* m, CallGenerator* cg); | 153 static void register_intrinsic(ciMethod* m, CallGenerator* cg); |
146 static CallGenerator* for_predicted_intrinsic(CallGenerator* intrinsic, | 154 static CallGenerator* for_predicted_intrinsic(CallGenerator* intrinsic, |
147 CallGenerator* cg); | 155 CallGenerator* cg); |
148 virtual Node* generate_predicate(JVMState* jvms) { return NULL; }; | 156 virtual Node* generate_predicate(JVMState* jvms) { return NULL; }; |
149 | 157 |
150 static void print_inlining(ciMethod* callee, int inline_level, int bci, const char* msg) { | 158 virtual void print_inlining_late(const char* msg) { ShouldNotReachHere(); } |
159 | |
160 static void print_inlining(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) { | |
151 if (PrintInlining) | 161 if (PrintInlining) |
152 CompileTask::print_inlining(callee, inline_level, bci, msg); | 162 C->print_inlining(callee, inline_level, bci, msg); |
153 } | 163 } |
154 }; | 164 }; |
155 | 165 |
156 | 166 |
157 //------------------------InlineCallGenerator---------------------------------- | 167 //------------------------InlineCallGenerator---------------------------------- |