Package org.drools.asm

Examples of org.drools.asm.Label


                                                 Type.getMethodDescriptor( Type.BOOLEAN_TYPE,
                                                                           new Type[]{Type.getType( Object.class )} ),
                                                 null,
                                                 null );
        // if ( this == object ) {
        Label l0 = new Label();
        mv.visitLabel( l0 );
        mv.visitVarInsn( Opcodes.ALOAD,
                         0 );
        mv.visitVarInsn( Opcodes.ALOAD,
                         1 );
        Label l1 = new Label();
        mv.visitJumpInsn( Opcodes.IF_ACMPNE,
                          l1 );
        //    return true;
        Label l2 = new Label();
        mv.visitLabel( l2 );
        mv.visitInsn( Opcodes.ICONST_1 );
        mv.visitInsn( Opcodes.IRETURN );
        // }
        mv.visitLabel( l1 );
        // return this.delegate.equals( object );
        mv.visitVarInsn( Opcodes.ALOAD,
                         0 );
        mv.visitFieldInsn( Opcodes.GETFIELD,
                           className,
                           DELEGATE_FIELD_NAME,
                           Type.getDescriptor( clazz ) );
        mv.visitVarInsn( Opcodes.ALOAD,
                         1 );
        if ( clazz.isInterface() ) {
            mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
                                Type.getInternalName( clazz ),
                                "equals",
                                Type.getMethodDescriptor( Type.BOOLEAN_TYPE,
                                                          new Type[]{Type.getType( Object.class )} ) );
        } else {
            mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
                                Type.getInternalName( clazz ),
                                "equals",
                                Type.getMethodDescriptor( Type.BOOLEAN_TYPE,
                                                          new Type[]{Type.getType( Object.class )} ) );
        }
        mv.visitInsn( Opcodes.IRETURN );
        Label l3 = new Label();
        mv.visitLabel( l3 );
        mv.visitLocalVariable( "this",
                               "L" + className + ";",
                               null,
                               l0,
View Full Code Here


                                 null,
                                 null );
            mv.visitCode();

            // if( this.__hashCache == 0 ) {
            Label l0 = new Label();
            mv.visitLabel( l0 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             0 );
            mv.visitFieldInsn( Opcodes.GETFIELD,
                               className,
                               HASHCACHE_FIELD_NAME,
                               Type.INT_TYPE.getDescriptor() );
            Label l1 = new Label();
            mv.visitJumpInsn( Opcodes.IFNE,
                              l1 );
            Label l2 = new Label();

            //    this.__hashCache = this.delegate.hashCode();
            mv.visitLabel( l2 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             0 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             0 );
            mv.visitFieldInsn( Opcodes.GETFIELD,
                               className,
                               DELEGATE_FIELD_NAME,
                               Type.getDescriptor( clazz ) );
            if ( clazz.isInterface() ) {
                mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
                                    Type.getInternalName( clazz ),
                                    "hashCode",
                                    Type.getMethodDescriptor( Type.INT_TYPE,
                                                              new Type[0] ) );
            } else {
                mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
                                    Type.getInternalName( clazz ),
                                    "hashCode",
                                    Type.getMethodDescriptor( Type.INT_TYPE,
                                                              new Type[0] ) );
            }
            mv.visitFieldInsn( Opcodes.PUTFIELD,
                               className,
                               HASHCACHE_FIELD_NAME,
                               Type.INT_TYPE.getDescriptor() );
            // }
            mv.visitLabel( l1 );

            // return this.__hashCache;
            mv.visitVarInsn( Opcodes.ALOAD,
                             0 );
            mv.visitFieldInsn( Opcodes.GETFIELD,
                               className,
                               HASHCACHE_FIELD_NAME,
                               Type.INT_TYPE.getDescriptor() );
            mv.visitInsn( Opcodes.IRETURN );
            Label l3 = new Label();
            mv.visitLabel( l3 );
            mv.visitLocalVariable( "this",
                                   "L" + className + ";",
                                   null,
                                   l0,
View Full Code Here

            } else {
                offset = cr.readUnsignedShort( off );
                off += 2;
            }

            final Label label = getLabel( offset,
                                          labels );
            final List locals = new ArrayList();
            final List stack = new ArrayList();

            off = readTypeInfo( cr,
View Full Code Here

        }
    }

    private Label getLabel(final int offset,
                           final Label[] labels) {
        final Label l = labels[offset];
        if ( l != null ) {
            return l;
        }
        return labels[offset] = new Label();
    }
View Full Code Here

                                 Type.getMethodDescriptor( Type.VOID_TYPE,
                                                           new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ),
                                 null,
                                 null );
            mv.visitCode();
            final Label l0 = new Label();
            mv.visitLabel( l0 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             0 );
            mv.visitVarInsn( Opcodes.ILOAD,
                             1 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             2 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             3 );
            mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
                                Type.getInternalName( superClazz ),
                                "<init>",
                                Type.getMethodDescriptor( Type.VOID_TYPE,
                                                          new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ) );
            final Label l1 = new Label();
            mv.visitLabel( l1 );
            mv.visitInsn( Opcodes.RETURN );
            final Label l2 = new Label();
            mv.visitLabel( l2 );
            mv.visitLocalVariable( "this",
                                   "L" + className + ";",
                                   null,
                                   l0,
View Full Code Here

                                                 null,
                                                 null );

        mv.visitCode();

        final Label l0 = new Label();
        mv.visitLabel( l0 );
        mv.visitVarInsn( Opcodes.ALOAD,
                         2 );
        mv.visitTypeInsn( Opcodes.CHECKCAST,
                          Type.getInternalName( originalClass ) );

        if ( originalClass.isInterface() ) {
            mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
                                Type.getInternalName( originalClass ),
                                getterMethod.getName(),
                                Type.getMethodDescriptor( getterMethod ) );
        } else {
            mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
                                Type.getInternalName( originalClass ),
                                getterMethod.getName(),
                                Type.getMethodDescriptor( getterMethod ) );
        }
        mv.visitInsn( Type.getType( fieldType ).getOpcode( Opcodes.IRETURN ) );
        final Label l1 = new Label();
        mv.visitLabel( l1 );
        mv.visitLocalVariable( "this",
                               "L" + className + ";",
                               null,
                               l0,
View Full Code Here

     * Creates a new {@link Label}.
     *
     * @return a new {@link Label}.
     */
    public Label newLabel() {
        return new Label();
    }
View Full Code Here

     * Marks the current code position with a new label.
     *
     * @return the label that was created to mark the current code position.
     */
    public Label mark() {
        final Label label = new Label();
        this.mv.visitLabel( label );
        return label;
    }
View Full Code Here

        for ( int i = 1; i < keys.length; ++i ) {
            if ( keys[i] < keys[i - 1] ) {
                throw new IllegalArgumentException( "keys must be sorted ascending" );
            }
        }
        final Label def = newLabel();
        final Label end = newLabel();
        if ( keys.length > 0 ) {
            final int len = keys.length;
            final int min = keys[0];
            final int max = keys[len - 1];
            final int range = max - min + 1;
            if ( useTable ) {
                final Label[] labels = new Label[range];
                Arrays.fill( labels,
                             def );
                for ( int i = 0; i < len; ++i ) {
                    labels[keys[i] - min] = newLabel();
                }
                this.mv.visitTableSwitchInsn( min,
                                              max,
                                              def,
                                              labels );
                for ( int i = 0; i < range; ++i ) {
                    final Label label = labels[i];
                    if ( label != def ) {
                        mark( label );
                        generator.generateCase( i + min,
                                                end );
                    }
View Full Code Here

                                 Type.getMethodDescriptor( Type.VOID_TYPE,
                                                           new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ),
                                 null,
                                 null );
            mv.visitCode();
            final Label l0 = new Label();
            mv.visitLabel( l0 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             0 );
            mv.visitVarInsn( Opcodes.ILOAD,
                             1 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             2 );
            mv.visitVarInsn( Opcodes.ALOAD,
                             3 );
            mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
                                Type.getInternalName( superClazz ),
                                "<init>",
                                Type.getMethodDescriptor( Type.VOID_TYPE,
                                                          new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ) );
            final Label l1 = new Label();
            mv.visitLabel( l1 );
            mv.visitInsn( Opcodes.RETURN );
            final Label l2 = new Label();
            mv.visitLabel( l2 );
            mv.visitLocalVariable( "this",
                                   "L" + className + ";",
                                   null,
                                   l0,
View Full Code Here

TOP

Related Classes of org.drools.asm.Label

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.