private void visitImplicitFirstFrame ( ) { // There can be at most descriptor.length() + 1 locals int frameIndex = startFrame ( 0 , descriptor . length ( ) + 1 , 0 ) ; if ( ( access & Opcodes . ACC_STATIC ) == 0 ) { if ( ( access & ACC_CONSTRUCTOR ) == 0 ) { frame [ frameIndex ++ ] = Frame . OBJECT | cw . addType ( cw . thisName ) ; } else { frame [ frameIndex ++ ] = Frame . UNINITIALIZED_THIS ; } } int i = 1 ; loop : while ( true ) { int j = i ; switch ( descriptor . charAt ( i ++ ) ) { case ' ' : case ' ' : case ' ' : case ' ' : case ' ' : frame [ frameIndex ++ ] = Frame . INTEGER ; break ; case ' ' : frame [ frameIndex ++ ] = Frame . FLOAT ; break ; case ' ' : frame [ frameIndex ++ ] = Frame . LONG ; break ; case ' ' : frame [ frameIndex ++ ] = Frame . DOUBLE ; break ; case ' ' : while ( descriptor . charAt ( i ) == ' ' ) { ++ i ; } if ( descriptor . charAt ( i ) == ' ' ) { ++ i ; while ( descriptor . charAt ( i ) != ' ' ) { ++ i ; } } frame [ frameIndex ++ ] = Frame . type ( cw , descriptor . substring ( j , ++ i ) ) ; break ; case ' ' : while ( descriptor . charAt ( i ) != ' ' ) { ++ i ; } frame [ frameIndex ++ ] = Frame . OBJECT | cw . addType ( descriptor . substring ( j + 1 , i ++ ) ) ; break ; default : break loop ; } } frame [ 1 ] = frameIndex - 3 ; endFrame ( ) ; }
Visit the implicit first frame of this method .