Mercurial > hg > truffle
diff 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 |
line wrap: on
line diff
--- a/src/share/vm/ci/ciMethod.hpp Mon Jul 23 13:04:59 2012 -0700 +++ b/src/share/vm/ci/ciMethod.hpp Tue Jul 24 10:51:00 2012 -0700 @@ -133,16 +133,20 @@ return _signature->size() + (_flags.is_static() ? 0 : 1); } // Report the number of elements on stack when invoking this method. - // This is different than the regular arg_size because invokdynamic + // This is different than the regular arg_size because invokedynamic // has an implicit receiver. int invoke_arg_size(Bytecodes::Code code) const { - int arg_size = _signature->size(); - // Add a receiver argument, maybe: - if (code != Bytecodes::_invokestatic && - code != Bytecodes::_invokedynamic) { - arg_size++; + if (is_loaded()) { + return arg_size(); + } else { + int arg_size = _signature->size(); + // Add a receiver argument, maybe: + if (code != Bytecodes::_invokestatic && + code != Bytecodes::_invokedynamic) { + arg_size++; + } + return arg_size; } - return arg_size; } @@ -161,6 +165,7 @@ int code_size_for_inlining(); bool force_inline() { return get_methodOop()->force_inline(); } + bool dont_inline() { return get_methodOop()->dont_inline(); } int comp_level(); int highest_osr_comp_level(); @@ -258,9 +263,9 @@ int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC // JSR 292 support - bool is_method_handle_invoke() const; - bool is_method_handle_adapter() const; - ciInstance* method_handle_type(); + bool is_method_handle_intrinsic() const; + bool is_compiled_lambda_form() const; + bool has_member_arg() const; // What kind of ciObject is this? bool is_method() { return true; }