Package net.sf.cglib.asm

Examples of net.sf.cglib.asm.Label


/*     */       }
/*  99 */       e.return_value();
/* 100 */       e.end_method();
/*     */
/* 103 */       e = context.beginMethod(ce, method);
/* 104 */       Label nullInterceptor = e.make_label();
/* 105 */       context.emitCallback(e, context.getIndex(method));
/* 106 */       e.dup();
/* 107 */       e.ifnull(nullInterceptor);
/*     */
/* 109 */       e.load_this();
View Full Code Here


/*     */   }
/*     */
/*     */   private static void invokeSwitchHelper(CodeEmitter e, List members, int arg)
/*     */   {
/* 165 */     List info = CollectionUtils.transform(members, MethodInfoTransformer.getInstance());
/* 166 */     Label illegalArg = e.make_label();
/* 167 */     Block block = e.begin_block();
/* 168 */     e.process_switch(getIntRange(info.size()), new ProcessSwitchCallback(info, e, arg, illegalArg) {
/*     */       public void processCase(int key, Label end) {
/* 170 */         MethodInfo method = (MethodInfo)this.val$info.get(key);
/* 171 */         Type[] types = method.getSignature().getArgumentTypes();
View Full Code Here

/* 561 */     this.cv.visitInsn(50); }
/* 562 */   public void aastore() { this.cv.visitInsn(83); }
/* 563 */   public void athrow() { this.cv.visitInsn(191); }
/*     */
/*     */   public Label make_label() {
/* 566 */     return new Label();
/*     */   }
View Full Code Here

/*     */   }
/*     */
/*     */   public void process_switch(int[] keys, ProcessSwitchCallback callback, boolean useTable) {
/* 606 */     if (!isSorted(keys))
/* 607 */       throw new IllegalArgumentException("keys to switch must be sorted ascending");
/* 608 */     Label def = make_label();
/* 609 */     Label end = make_label();
/*     */     try
/*     */     {
/* 612 */       if (keys.length > 0) {
/* 613 */         int len = keys.length;
/* 614 */         int min = keys[0];
/* 615 */         int max = keys[(len - 1)];
/* 616 */         int range = max - min + 1;
/*     */
/* 618 */         if (useTable) {
/* 619 */           Label[] labels = new Label[range];
/* 620 */           Arrays.fill(labels, def);
/* 621 */           for (int i = 0; i < len; i++) {
/* 622 */             labels[(keys[i] - min)] = make_label();
/*     */           }
/* 624 */           this.cv.visitTableSwitchInsn(min, max, def, labels);
/* 625 */           for (int i = 0; i < range; i++) {
/* 626 */             Label label = labels[i];
/* 627 */             if (label != def) {
/* 628 */               mark(label);
/* 629 */               callback.processCase(i + min, end);
/*     */             }
/*     */           }
View Full Code Here

/*     */   public void mark(Label label) {
/* 667 */     this.cv.visitLabel(label);
/*     */   }
/*     */
/*     */   Label mark() {
/* 671 */     Label label = make_label();
/* 672 */     this.cv.visitLabel(label);
/* 673 */     return label;
/*     */   }
View Full Code Here

/*     */
/*     */   public void unbox_or_zero(Type type)
/*     */   {
/* 821 */     if (TypeUtils.isPrimitive(type)) {
/* 822 */       if (type != Type.VOID_TYPE) {
/* 823 */         Label nonNull = make_label();
/* 824 */         Label end = make_label();
/* 825 */         dup();
/* 826 */         ifnonnull(nonNull);
/* 827 */         pop();
/* 828 */         zero_or_null(type);
/* 829 */         goTo(end);
View Full Code Here

TOP

Related Classes of net.sf.cglib.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.