diff options
author | never <none@none> | 2009-11-12 09:24:21 -0800 |
---|---|---|
committer | never <none@none> | 2009-11-12 09:24:21 -0800 |
commit | d156d3d6a03f231076a0b2752e511f07fb421d1e (patch) | |
tree | 16db82a4764794dcace8c7e7d10edf4a6f16f460 /src/share/vm/opto/callGenerator.hpp | |
parent | 90991b04f6e3a5d378ec7ae0b51d7651180285d9 (diff) |
6892658: C2 should optimize some stringbuilder patterns
Reviewed-by: kvn, twisti
Diffstat (limited to 'src/share/vm/opto/callGenerator.hpp')
-rw-r--r-- | src/share/vm/opto/callGenerator.hpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/share/vm/opto/callGenerator.hpp b/src/share/vm/opto/callGenerator.hpp index bbd47ca4a..70ec9d3ff 100644 --- a/src/share/vm/opto/callGenerator.hpp +++ b/src/share/vm/opto/callGenerator.hpp @@ -57,6 +57,13 @@ class CallGenerator : public ResourceObj { // is_trap: Does not return to the caller. (E.g., uncommon trap.) virtual bool is_trap() const { return false; } + // is_late_inline: supports conversion of call into an inline + virtual bool is_late_inline() const { return false; } + // Replace the call with an inline version of the code + virtual void do_late_inline() { ShouldNotReachHere(); } + + virtual CallStaticJavaNode* call_node() const { ShouldNotReachHere(); return NULL; } + // Note: It is possible for a CG to be both inline and virtual. // (The hashCode intrinsic does a vtable check and an inlined fast path.) @@ -92,9 +99,12 @@ class CallGenerator : public ResourceObj { static CallGenerator* for_osr(ciMethod* m, int osr_bci); // How to generate vanilla out-of-line call sites: - static CallGenerator* for_direct_call(ciMethod* m); // static, special + static CallGenerator* for_direct_call(ciMethod* m, bool separate_io_projs = false); // static, special static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index); // virtual, interface + // How to generate a replace a direct call with an inline version + static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg); + // How to make a call but defer the decision whether to inline or not. static CallGenerator* for_warm_call(WarmCallInfo* ci, CallGenerator* if_cold, |