src/org/nutz/repo/org/objectweb/asm/MethodWriter.java
private void writeFrameTypes(final int start, final int end) {
        for (int i = start; i < end; ++i) {
            int t = frame[i];
            int d = t & Frame.DIM;
            if (d == 0) {
                int v = t & Frame.BASE_VALUE;
                switch (t & Frame.BASE_KIND) {
                case Frame.OBJECT:
                    stackMap.putByte(7).putShort(
                            cw.newClass(cw.typeTable[v].strVal1));
                    break;
                case Frame.UNINITIALIZED:
                    stackMap.putByte(8).putShort(cw.typeTable[v].intVal);
                    break;
                default:
                    stackMap.putByte(v);
                }
            } else {
                StringBuilder sb = new StringBuilder();
                d >>= 28;
                while (d-- > 0) {
                    sb.append('[');
                }
                if ((t & Frame.BASE_KIND) == Frame.OBJECT) {
                    sb.append('L');
                    sb.append(cw.typeTable[t & Frame.BASE_VALUE].strVal1);
                    sb.append(';');
                } else {
                    switch (t & 0xF) {
                    case 1:
                        sb.append('I');
                        break;
                    case 2:
                        sb.append('F');
                        break;
                    case 3:
                        sb.append('D');
                        break;
                    case 9:
                        sb.append('Z');
                        break;
                    case 10:
                        sb.append('B');
                        break;
                    case 11:
                        sb.append('C');
                        break;
                    case 12:
                        sb.append('S');
                        break;
                    default:
                        sb.append('J');
                    }
                }
                stackMap.putByte(7).putShort(cw.newClass(sb.toString()));
            }
        }
    }
private void writeFrameTypes(final int start, final int end) {
        for (int i = start; i < end; ++i) {
            int t = frame[i];
            int d = t & Frame.DIM;
            if (d == 0) {
                int v = t & Frame.BASE_VALUE;
                switch (t & Frame.BASE_KIND) {
                case Frame.OBJECT:
                    stackMap.putByte(7).putShort(
                            cw.newClass(cw.typeTable[v].strVal1));
                    break;
                case Frame.UNINITIALIZED:
                    stackMap.putByte(8).putShort(cw.typeTable[v].intVal);
                    break;
                default:
                    stackMap.putByte(v);
                }
            } else {
                StringBuilder sb = new StringBuilder();
                d >>= 28;
                while (d-- > 0) {
                    sb.append('[');
                }
                if ((t & Frame.BASE_KIND) == Frame.OBJECT) {
                    sb.append('L');
                    sb.append(cw.typeTable[t & Frame.BASE_VALUE].strVal1);
                    sb.append(';');
                } else {
                    switch (t & 0xF) {
                    case 1:
                        sb.append('I');
                        break;
                    case 2:
                        sb.append('F');
                        break;
                    case 3:
                        sb.append('D');
                        break;
                    case 9:
                        sb.append('Z');
                        break;
                    case 10:
                        sb.append('B');
                        break;
                    case 11:
                        sb.append('C');
                        break;
                    case 12:
                        sb.append('S');
                        break;
                    default:
                        sb.append('J');
                    }
                }
                stackMap.putByte(7).putShort(cw.newClass(sb.toString()));
            }
        }
    }
private void writeFrameTypes ( final int start , final int end ) { for ( int i = start ; i < end ; ++ i ) { int t = frame [ i ] ; int d = t & Frame . DIM ; if ( d == 0 ) { int v = t & Frame . BASE_VALUE ; switch ( t & Frame . BASE_KIND ) { case Frame . OBJECT : stackMap . putByte ( 7 ) . putShort ( cw . newClass ( cw . typeTable [ v ] . strVal1 ) ) ; break ; case Frame . UNINITIALIZED : stackMap . putByte ( 8 ) . putShort ( cw . typeTable [ v ] . intVal ) ; break ; default : stackMap . putByte ( v ) ; } } else { StringBuilder sb = new StringBuilder ( ) ; d >>= 28 ; while ( d -- > 0 ) { sb . append ( ' ' ) ; } if ( ( t & Frame . BASE_KIND ) == Frame . OBJECT ) { sb . append ( ' ' ) ; sb . append ( cw . typeTable [ t & Frame . BASE_VALUE ] . strVal1 ) ; sb . append ( ' ' ) ; } else { switch ( t & 0xF ) { case 1 : sb . append ( ' ' ) ; break ; case 2 : sb . append ( ' ' ) ; break ; case 3 : sb . append ( ' ' ) ; break ; case 9 : sb . append ( ' ' ) ; break ; case 10 : sb . append ( ' ' ) ; break ; case 11 : sb . append ( ' ' ) ; break ; case 12 : sb . append ( ' ' ) ; break ; default : sb . append ( ' ' ) ; } } stackMap . putByte ( 7 ) . putShort ( cw . newClass ( sb . toString ( ) ) ) ; } } }
Writes some types of the current frame {@link #frame} into the
StackMapTableAttribute. This method converts types from the format used
in {@link Label} to the format used in StackMapTable attributes. In
particular, it converts type table indexes to constant pool indexes.

@param start
index of the first type in {@link #frame} to write.
@param end
index of last type in {@link #frame} to write (exclusive).
Writes some types of the current frame { @link #frame } into the StackMapTableAttribute . This method converts types from the format used in { @link Label } to the format used in StackMapTable attributes . In particular it converts type table indexes to constant pool indexes .