hotspot/src/share/vm/runtime/signature.cpp
void SignatureIterator::iterate() {
{- -------------------------------------------
(1) (備考: メソッドの signature string は
"(XLjava/lang/Object;)Z" といった感じになる)
---------------------------------------- -}
{- -------------------------------------------
(1) まずは引数部分をパース.
'(' から初めて ')' にたどり着くまで
SignatureIterator::parse_type() を呼び続ける.
---------------------------------------- -}
// Parse parameters
_parameter_index = 0;
_index = 0;
expect('(');
while (_signature->byte_at(_index) != ')') _parameter_index += parse_type();
expect(')');
{- -------------------------------------------
(1) 次に返値部分をパース.
SignatureIterator::parse_type() を呼ぶだけ.
---------------------------------------- -}
// Parse return type
_parameter_index = -1;
parse_type();
{- -------------------------------------------
(1) SignatureIterator::check_signature_end() で終端に達したことを確認.
---------------------------------------- -}
check_signature_end();
{- -------------------------------------------
(1)
---------------------------------------- -}
_parameter_index = 0;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.