Mercurial > hg > truffle
comparison src/share/vm/ci/ciMethod.hpp @ 6266:1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
6984705: JSR 292 method handle creation should not go through JNI
Summary: remove assembly code for JDK 7 chained method handles
Reviewed-by: jrose, twisti, kvn, mhaupt
Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author | twisti |
---|---|
date | Tue, 24 Jul 2012 10:51:00 -0700 |
parents | 6d8f36bcef55 |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
6241:aba91a731143 | 6266:1d7922586cf6 |
---|---|
131 int arg_size() const { | 131 int arg_size() const { |
132 check_is_loaded(); | 132 check_is_loaded(); |
133 return _signature->size() + (_flags.is_static() ? 0 : 1); | 133 return _signature->size() + (_flags.is_static() ? 0 : 1); |
134 } | 134 } |
135 // Report the number of elements on stack when invoking this method. | 135 // Report the number of elements on stack when invoking this method. |
136 // This is different than the regular arg_size because invokdynamic | 136 // This is different than the regular arg_size because invokedynamic |
137 // has an implicit receiver. | 137 // has an implicit receiver. |
138 int invoke_arg_size(Bytecodes::Code code) const { | 138 int invoke_arg_size(Bytecodes::Code code) const { |
139 int arg_size = _signature->size(); | 139 if (is_loaded()) { |
140 // Add a receiver argument, maybe: | 140 return arg_size(); |
141 if (code != Bytecodes::_invokestatic && | 141 } else { |
142 code != Bytecodes::_invokedynamic) { | 142 int arg_size = _signature->size(); |
143 arg_size++; | 143 // Add a receiver argument, maybe: |
144 if (code != Bytecodes::_invokestatic && | |
145 code != Bytecodes::_invokedynamic) { | |
146 arg_size++; | |
147 } | |
148 return arg_size; | |
144 } | 149 } |
145 return arg_size; | |
146 } | 150 } |
147 | 151 |
148 | 152 |
149 // Method code and related information. | 153 // Method code and related information. |
150 address code() { if (_code == NULL) load_code(); return _code; } | 154 address code() { if (_code == NULL) load_code(); return _code; } |
159 | 163 |
160 // Code size for inlining decisions. | 164 // Code size for inlining decisions. |
161 int code_size_for_inlining(); | 165 int code_size_for_inlining(); |
162 | 166 |
163 bool force_inline() { return get_methodOop()->force_inline(); } | 167 bool force_inline() { return get_methodOop()->force_inline(); } |
168 bool dont_inline() { return get_methodOop()->dont_inline(); } | |
164 | 169 |
165 int comp_level(); | 170 int comp_level(); |
166 int highest_osr_comp_level(); | 171 int highest_osr_comp_level(); |
167 | 172 |
168 Bytecodes::Code java_code_at_bci(int bci) { | 173 Bytecodes::Code java_code_at_bci(int bci) { |
256 bool check_call(int refinfo_index, bool is_static) const; | 261 bool check_call(int refinfo_index, bool is_static) const; |
257 bool ensure_method_data(); // make sure it exists in the VM also | 262 bool ensure_method_data(); // make sure it exists in the VM also |
258 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC | 263 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC |
259 | 264 |
260 // JSR 292 support | 265 // JSR 292 support |
261 bool is_method_handle_invoke() const; | 266 bool is_method_handle_intrinsic() const; |
262 bool is_method_handle_adapter() const; | 267 bool is_compiled_lambda_form() const; |
263 ciInstance* method_handle_type(); | 268 bool has_member_arg() const; |
264 | 269 |
265 // What kind of ciObject is this? | 270 // What kind of ciObject is this? |
266 bool is_method() { return true; } | 271 bool is_method() { return true; } |
267 | 272 |
268 // Java access flags | 273 // Java access flags |