;
; Output created by JasminView on Jun 25, 2000
; 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 CoThread.java

.class  CoThread
.super  java/lang/Thread

.field private w LWaiting;
.field private id I
.field private c LCounter;

; >> METHOD 1 <<
.method <init>(ILCounter;)V
    .limit stack 3
    .limit locals 3
;----
.line 8
    aload_0
    invokespecial java/lang/Thread/<init>()V
.line 9
    aload_0
    new Waiting
    dup
    invokespecial Waiting/<init>()V
    putfield CoThread/w LWaiting;
.line 10
    aload_0
    iload_1
    putfield CoThread/id I
.line 11
    aload_0
    aload_2
    putfield CoThread/c LCounter;
.line 7
    return
.end method

; >> METHOD 2 <<
.method public run()V
    .limit stack 4
    .limit locals 5
;----
.line 15
    iconst_0
    istore_1
    goto Label6
.line 16
Label1:
    aload_0
    getfield CoThread/w LWaiting;
    aload_0
    invokevirtual Waiting/wait(Ljava/lang/Thread;)V
.line 17
    getstatic java/lang/System/out Ljava/io/PrintStream;
    new java/lang/StringBuffer
    dup
    aload_0
    getfield CoThread/id I
    invokestatic java/lang/String/valueOf(I)Ljava/lang/String;
    invokespecial java/lang/StringBuffer/<init>(Ljava/lang/String;)V
    ldc " "
    invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
    invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String;
    invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
.line 18
    aload_0
    getfield CoThread/c LCounter;
    astore_2
    aload_2
    monitorenter
.line 19
Label2:
    aload_0
    getfield CoThread/c LCounter;
    invokevirtual Counter/get()I
    istore 4
.line 20
    aload_0
    getfield CoThread/w LWaiting;
    aload_0
    invokevirtual Waiting/wait(Ljava/lang/Thread;)V
.line 21
    aload_0
    getfield CoThread/c LCounter;
    iload 4
    iconst_1
    iadd
    invokevirtual Counter/set(I)V
.line 18
Label3:
    aload_2
    monitorexit
    goto Label5
Label4:
    aload_2
    monitorexit
    athrow
.line 15
Label5:
    iinc 1 1
Label6:
    iload_1
    bipush 10
    if_icmplt Label1
.line 24
    aload_0
    getfield CoThread/c LCounter;
    invokevirtual Counter/show()V
.line 14
    return
;----
.catch all from Label2 to Label3 using Label4
.end method

; >> METHOD 3 <<
.method public static main([Ljava/lang/String;)V
    .limit stack 4
    .limit locals 3
;----
.line 28
    new Counter
    dup
    invokespecial Counter/<init>()V
    astore_1
.line 30
    new CoThread
    dup
    iconst_0
    aload_1
    invokespecial CoThread/<init>(ILCounter;)V
    astore_2
    aload_2
    invokevirtual java/lang/Thread/start()V
.line 31
    new CoThread
    dup
    iconst_1
    aload_1
    invokespecial CoThread/<init>(ILCounter;)V
    astore_2
    aload_2
    invokevirtual java/lang/Thread/start()V
.line 32
    new CoThread
    dup
    iconst_2
    aload_1
    invokespecial CoThread/<init>(ILCounter;)V
    astore_2
    aload_2
    invokevirtual java/lang/Thread/start()V
.line 27
    return
.end method

$Id: jas.html,v 1.1 2000-06-25 23:28:56+09 kaiya Exp kaiya $