src/share/vm/ci/ciStreams.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/ci/ciStreams.hpp	Tue Oct  8 14:00:26 2013
--- new/src/share/vm/ci/ciStreams.hpp	Tue Oct  8 14:00:26 2013

*** 276,289 **** --- 276,292 ---- // The class is used to iterate over the elements of a method signature. class ciSignatureStream : public StackObj { private: ciSignature* _sig; int _pos; + // holder is a method's holder + ciKlass* _holder; public: ! ciSignatureStream(ciSignature* signature, ciKlass* holder = NULL) { _sig = signature; _pos = 0; + _holder = holder; } bool at_return_type() { return _pos == _sig->count(); } bool is_done() { return _pos > _sig->count(); }
*** 299,308 **** --- 302,328 ---- return _sig->return_type(); } else { return _sig->type_at(_pos); } } + + // next klass in the signature + ciKlass* next_klass() { + ciKlass* sig_k; + if (_holder != NULL) { + sig_k = _holder; + _holder = NULL; + } else { + while (!type()->is_klass()) { + next(); + } + assert(!at_return_type(), "passed end of signature"); + sig_k = type()->as_klass(); + next(); + } + return sig_k; + } }; // ciExceptionHandlerStream //

src/share/vm/ci/ciStreams.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File