56 float compute_callee_frequency( int caller_bci ) const; 57 58 GrowableArray<InlineTree*> _subtrees; 59 60 void print_impl(outputStream* stj, int indent) const PRODUCT_RETURN; 61 const char* _msg; 62 protected: 63 InlineTree(Compile* C, 64 const InlineTree* caller_tree, 65 ciMethod* callee_method, 66 JVMState* caller_jvms, 67 int caller_bci, 68 float site_invoke_ratio, 69 int max_inline_level); 70 InlineTree *build_inline_tree_for_callee(ciMethod* callee_method, 71 JVMState* caller_jvms, 72 int caller_bci); 73 bool try_to_inline(ciMethod* callee_method, 74 ciMethod* caller_method, 75 int caller_bci, 76 ciCallProfile& profile, 77 WarmCallInfo* wci_result, 78 bool& should_delay); 79 bool should_inline(ciMethod* callee_method, 80 ciMethod* caller_method, 81 int caller_bci, 82 ciCallProfile& profile, 83 WarmCallInfo* wci_result); 84 bool should_not_inline(ciMethod* callee_method, 85 ciMethod* caller_method, 86 WarmCallInfo* wci_result); 87 void print_inlining(ciMethod* callee_method, int caller_bci, 88 bool success) const; 89 90 InlineTree* caller_tree() const { return _caller_tree; } 91 InlineTree* callee_at(int bci, ciMethod* m) const; 92 int inline_level() const { return stack_depth(); } 93 int stack_depth() const { return _caller_jvms ? _caller_jvms->depth() : 0; } 94 const char* msg() const { return _msg; } 95 void set_msg(const char* msg) { _msg = msg; } 96 public: 97 static const char* check_can_parse(ciMethod* callee); 98 99 static InlineTree* build_inline_tree_root(); 100 static InlineTree* find_subtree_from_root(InlineTree* root, JVMState* jvms, ciMethod* callee); 101 102 // For temporary (stack-allocated, stateless) ilts: 103 InlineTree(Compile* c, ciMethod* callee_method, JVMState* caller_jvms, float site_invoke_ratio, int max_inline_level); 104 105 // InlineTree enum | 56 float compute_callee_frequency( int caller_bci ) const; 57 58 GrowableArray<InlineTree*> _subtrees; 59 60 void print_impl(outputStream* stj, int indent) const PRODUCT_RETURN; 61 const char* _msg; 62 protected: 63 InlineTree(Compile* C, 64 const InlineTree* caller_tree, 65 ciMethod* callee_method, 66 JVMState* caller_jvms, 67 int caller_bci, 68 float site_invoke_ratio, 69 int max_inline_level); 70 InlineTree *build_inline_tree_for_callee(ciMethod* callee_method, 71 JVMState* caller_jvms, 72 int caller_bci); 73 bool try_to_inline(ciMethod* callee_method, 74 ciMethod* caller_method, 75 int caller_bci, 76 JVMState* jvms, 77 ciCallProfile& profile, 78 WarmCallInfo* wci_result, 79 bool& should_delay); 80 bool should_inline(ciMethod* callee_method, 81 ciMethod* caller_method, 82 int caller_bci, 83 ciCallProfile& profile, 84 WarmCallInfo* wci_result); 85 bool should_not_inline(ciMethod* callee_method, 86 ciMethod* caller_method, 87 JVMState* jvms, 88 WarmCallInfo* wci_result); 89 void print_inlining(ciMethod* callee_method, int caller_bci, 90 bool success) const; 91 92 InlineTree* caller_tree() const { return _caller_tree; } 93 InlineTree* callee_at(int bci, ciMethod* m) const; 94 int inline_level() const { return stack_depth(); } 95 int stack_depth() const { return _caller_jvms ? _caller_jvms->depth() : 0; } 96 const char* msg() const { return _msg; } 97 void set_msg(const char* msg) { _msg = msg; } 98 public: 99 static const char* check_can_parse(ciMethod* callee); 100 101 static InlineTree* build_inline_tree_root(); 102 static InlineTree* find_subtree_from_root(InlineTree* root, JVMState* jvms, ciMethod* callee); 103 104 // For temporary (stack-allocated, stateless) ilts: 105 InlineTree(Compile* c, ciMethod* callee_method, JVMState* caller_jvms, float site_invoke_ratio, int max_inline_level); 106 107 // InlineTree enum |