private int init ( final ClassWriter cw , final int t ) { int s ; if ( t == UNINITIALIZED_THIS ) { s = OBJECT | cw . addType ( cw . thisName ) ; } else if ( ( t & ( DIM | BASE_KIND ) ) == UNINITIALIZED ) { String type = cw . typeTable [ t & BASE_VALUE ] . strVal1 ; s = OBJECT | cw . addType ( type ) ; } else { return t ; } for ( int j = 0 ; j < initializationCount ; ++ j ) { int u = initializations [ j ] ; int dim = u & DIM ; int kind = u & KIND ; if ( kind == LOCAL ) { u = dim + inputLocals [ u & VALUE ] ; } else if ( kind == STACK ) { u = dim + inputStack [ inputStack . length - ( u & VALUE ) ] ; } if ( t == u ) { return s ; } } return t ; }
Replaces the given type with the appropriate type if it is one of the types on which a constructor is invoked in the basic block .