Mercurial > hg > graal-compiler
comparison src/share/vm/opto/callGenerator.hpp @ 1080:7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
Reviewed-by: kvn, twisti
author | never |
---|---|
date | Thu, 12 Nov 2009 09:24:21 -0800 |
parents | a61af66fc99e |
children | 97125851f396 |
comparison
equal
deleted
inserted
replaced
1078:8e7adf982378 | 1080:7c57aead6d3e |
---|---|
55 // is_predicted: Uses an explicit check against a predicted type. | 55 // is_predicted: Uses an explicit check against a predicted type. |
56 virtual bool is_predicted() const { return false; } | 56 virtual bool is_predicted() const { return false; } |
57 // is_trap: Does not return to the caller. (E.g., uncommon trap.) | 57 // is_trap: Does not return to the caller. (E.g., uncommon trap.) |
58 virtual bool is_trap() const { return false; } | 58 virtual bool is_trap() const { return false; } |
59 | 59 |
60 // is_late_inline: supports conversion of call into an inline | |
61 virtual bool is_late_inline() const { return false; } | |
62 // Replace the call with an inline version of the code | |
63 virtual void do_late_inline() { ShouldNotReachHere(); } | |
64 | |
65 virtual CallStaticJavaNode* call_node() const { ShouldNotReachHere(); return NULL; } | |
66 | |
60 // Note: It is possible for a CG to be both inline and virtual. | 67 // Note: It is possible for a CG to be both inline and virtual. |
61 // (The hashCode intrinsic does a vtable check and an inlined fast path.) | 68 // (The hashCode intrinsic does a vtable check and an inlined fast path.) |
62 | 69 |
63 // Utilities: | 70 // Utilities: |
64 const TypeFunc* tf() const; | 71 const TypeFunc* tf() const; |
90 static CallGenerator* for_inline(ciMethod* m, float expected_uses = -1); | 97 static CallGenerator* for_inline(ciMethod* m, float expected_uses = -1); |
91 // How to generate code for an on-stack replacement handler. | 98 // How to generate code for an on-stack replacement handler. |
92 static CallGenerator* for_osr(ciMethod* m, int osr_bci); | 99 static CallGenerator* for_osr(ciMethod* m, int osr_bci); |
93 | 100 |
94 // How to generate vanilla out-of-line call sites: | 101 // How to generate vanilla out-of-line call sites: |
95 static CallGenerator* for_direct_call(ciMethod* m); // static, special | 102 static CallGenerator* for_direct_call(ciMethod* m, bool separate_io_projs = false); // static, special |
96 static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index); // virtual, interface | 103 static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index); // virtual, interface |
104 | |
105 // How to generate a replace a direct call with an inline version | |
106 static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg); | |
97 | 107 |
98 // How to make a call but defer the decision whether to inline or not. | 108 // How to make a call but defer the decision whether to inline or not. |
99 static CallGenerator* for_warm_call(WarmCallInfo* ci, | 109 static CallGenerator* for_warm_call(WarmCallInfo* ci, |
100 CallGenerator* if_cold, | 110 CallGenerator* if_cold, |
101 CallGenerator* if_hot); | 111 CallGenerator* if_hot); |