ciType* type() { if (at_return_type()) { return _sig->return_type(); } else { return _sig->type_at(_pos); } }
// 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; }
// Can only be used on loaded ciMethods int arg_size() const { check_is_loaded(); return _signature->size() + (_flags.is_static() ? 0 : 1); }
int arg_size_no_receiver() const { return _signature->size(); }
ciType* return_type() const { return _signature->return_type(); }
void next() { if (_pos <= _sig->count()) { _pos++; } }
bool is_done() { return _pos > _sig->count(); }
bool at_return_type() { return _pos == _sig->count(); }