protected final StackTypes bcel_calc_stack_types ( MethodGen mg ) { StackVer stackver = new StackVer ( ) ; VerificationResult vr ; try { vr = stackver . do_stack_ver ( mg ) ; } catch ( Throwable t ) { System . out . printf ( "Warning: StackVer exception for %s.%s%n" , mg . getClassName ( ) , mg . getName ( ) ) ; System . out . printf ( "Exception: %s%n" , t ) ; System . out . printf ( "Method is NOT instrumented%n" ) ; return null ; } if ( vr != VerificationResult . VR_OK ) { System . out . printf ( "Warning: StackVer failed for %s.%s: %s%n" , mg . getClassName ( ) , mg . getName ( ) , vr ) ; System . out . printf ( "Method is NOT instrumented%n" ) ; return null ; } assert vr == VerificationResult . VR_OK : " vr failed " + vr ; return stackver . get_stack_types ( ) ; }
Calculates the types on the stack for each instruction using the BCEL stack verification routines .