; ; Output created by JasminView on Jul 14, 2002 ; mailto:shawn@pobox.com ; Copyright (c) 1997-Present Shawn Silverman ; ; Jasmin can be found at: ; http://www.cat.nyu.edu/meyer/jasmin/ ; ; Classfile version: ; major: 45 ; minor: 3 .source LoadStdinR.java .class public LoadStdinR .super java/lang/ClassLoader .field private data [B .field private myname Ljava/lang/String; ; >> METHOD 1 << .method public (Ljava/io/InputStream;)V .limit stack 4 .limit locals 2 ;---- .line 10 aload_0 invokespecial java/lang/ClassLoader/()V .line 11 aload_0 aload_1 invokevirtual LoadStdinR/readBytes(Ljava/io/InputStream;)V .line 12 aload_0 new Jcf dup aload_0 getfield LoadStdinR/data [B invokespecial Jcf/([B)V invokevirtual Jcf/className()Ljava/lang/String; putfield LoadStdinR/myname Ljava/lang/String; .line 13 return .end method ; >> METHOD 2 << .method lcname()Ljava/lang/String; .limit stack 1 .limit locals 1 ;---- .line 15 aload_0 getfield LoadStdinR/myname Ljava/lang/String; areturn .end method ; >> METHOD 3 << .method protected loadClass(Ljava/lang/String;Z)Ljava/lang/Class; .throws java/lang/ClassNotFoundException .limit stack 3 .limit locals 5 ;---- .line 19 aconst_null astore_3 .line 21 Label1: aload_0 aload_1 invokevirtual java/lang/ClassLoader/findSystemClass(Ljava/lang/String;)Ljava/lang/Class; areturn .line 22 Label2: astore 4 .line 24 aload_0 aload_1 invokevirtual java/lang/ClassLoader/findLoadedClass(Ljava/lang/String;)Ljava/lang/Class; astore_3 .line 25 aload_3 ifnull Label3 aload_3 areturn .line 27 Label3: aload_0 aload_1 invokespecial LoadStdinR/myFindClass(Ljava/lang/String;)Ljava/lang/Class; astore_3 .line 28 aload_3 ifnonnull Label4 new java/lang/ClassNotFoundException dup aload_1 invokespecial java/lang/ClassNotFoundException/(Ljava/lang/String;)V athrow .line 30 Label4: iload_2 ifeq Label5 aload_0 aload_3 invokevirtual java/lang/ClassLoader/resolveClass(Ljava/lang/Class;)V .line 32 Label5: aload_3 areturn ;---- .catch java/lang/Throwable from Label1 to Label2 using Label2 .end method ; >> METHOD 4 << .method readBytes(Ljava/io/InputStream;)V .limit stack 5 .limit locals 5 ;---- .line 36 aload_0 sipush 4096 newarray byte putfield LoadStdinR/data [B .line 37 iconst_0 istore_2 .line 39 Label1: goto Label3 .line 40 Label2: iload_2 iload_3 iadd dup istore_2 aload_0 getfield LoadStdinR/data [B arraylength if_icmpne Label3 .line 41 iload_2 iconst_2 imul newarray byte astore 4 .line 42 aload_0 getfield LoadStdinR/data [B iconst_0 aload 4 iconst_0 iload_2 invokestatic java/lang/System/arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 43 aload_0 aload 4 putfield LoadStdinR/data [B .line 39 Label3: aload_1 aload_0 getfield LoadStdinR/data [B iload_2 aload_0 getfield LoadStdinR/data [B arraylength iload_2 isub invokevirtual java/io/InputStream/read([BII)I dup istore_3 ifge Label2 .line 46 iload_2 newarray byte astore 4 .line 47 aload_0 getfield LoadStdinR/data [B iconst_0 aload 4 iconst_0 iload_2 invokestatic java/lang/System/arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V .line 48 aload_0 aload 4 putfield LoadStdinR/data [B Label4: goto Label6 .line 49 Label5: astore 4 .line 50 Label6: return ;---- .catch java/io/IOException from Label1 to Label4 using Label5 .end method ; >> METHOD 5 << .method private synchronized myFindClass(Ljava/lang/String;)Ljava/lang/Class; .limit stack 5 .limit locals 3 ;---- .line 54 Label1: aload_0 aload_1 aload_0 getfield LoadStdinR/data [B iconst_0 aload_0 getfield LoadStdinR/data [B arraylength invokevirtual java/lang/ClassLoader/defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; areturn .line 56 Label2: astore_2 getstatic java/lang/System/out Ljava/io/PrintStream; aload_2 invokevirtual java/lang/Throwable/getMessage()Ljava/lang/String; invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V .line 57 new java/lang/ClassFormatError dup invokespecial java/lang/ClassFormatError/()V athrow ;---- .catch java/lang/Throwable from Label1 to Label2 using Label2 .end method ; >> METHOD 6 << .method public static main([Ljava/lang/String;)V .limit stack 3 .limit locals 5 ;---- .line 62 new LoadStdinR dup getstatic java/lang/System/in Ljava/io/InputStream; invokespecial LoadStdinR/(Ljava/io/InputStream;)V astore_1 .line 64 Label1: aload_1 aload_1 invokevirtual LoadStdinR/lcname()Ljava/lang/String; invokevirtual java/lang/ClassLoader/loadClass(Ljava/lang/String;)Ljava/lang/Class; astore_2 .line 65 aload_2 invokevirtual java/lang/Class/newInstance()Ljava/lang/Object; astore_3 .line 66 aload_2 aload_0 iconst_0 aaload aconst_null invokevirtual java/lang/Class/getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; astore 4 .line 67 aload 4 aload_3 aconst_null invokevirtual java/lang/reflect/Method/invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; pop Label2: goto Label4 .line 69 Label3: astore_2 aload_2 invokevirtual java/lang/Throwable/printStackTrace()V .line 71 Label4: return ;---- .catch java/lang/Throwable from Label1 to Label2 using Label3 .end method