Mercurial > hg > truffle
diff src/share/vm/ci/ciMethod.hpp @ 3280:548597e74aa4
7030715: JSR 292 JRuby test/test_super_call_site_caching.rb asserts with +DoEscapeAnalysis
Reviewed-by: twisti
author | never |
---|---|
date | Mon, 25 Apr 2011 16:25:58 -0700 |
parents | 2a23b1b5a0a8 |
children | 2c359f27615c |
line wrap: on
line diff
--- a/src/share/vm/ci/ciMethod.hpp Thu Apr 21 00:25:40 2011 -0700 +++ b/src/share/vm/ci/ciMethod.hpp Mon Apr 25 16:25:58 2011 -0700 @@ -127,7 +127,24 @@ ciSignature* signature() const { return _signature; } ciType* return_type() const { return _signature->return_type(); } int arg_size_no_receiver() const { return _signature->size(); } - int arg_size() const { return _signature->size() + (_flags.is_static() ? 0 : 1); } + // Can only be used on loaded ciMethods + int arg_size() const { + check_is_loaded(); + 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 + // 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++; + } + return arg_size; + } + // Method code and related information. address code() { if (_code == NULL) load_code(); return _code; }