7030715: JSR 292 JRuby test/test_super_call_site_caching.rb asserts with +DoEscapeAnalysis

Reviewed-by: twisti
This commit is contained in:
Tom Rodriguez 2011-04-25 16:25:58 -07:00
parent 868bf68a3e
commit 16d6414619
3 changed files with 20 additions and 14 deletions

View file

@ -127,7 +127,24 @@ class ciMethod : public ciObject {
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; }