class org.eclipse.core.internal.jobs.WorkerPool
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.eclipse.core.internal.jobs.WorkerPool
super_class: java.lang.Object
{
private static final int BEST_BEFORE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 60000
private static final int MIN_THREADS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int MAX_THREADS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 50
private int busyThreads;
descriptor: I
flags: (0x0002) ACC_PRIVATE
protected final java.lang.ClassLoader defaultContextLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private boolean isDaemon;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private org.eclipse.core.internal.jobs.JobManager manager;
descriptor: Lorg/eclipse/core/internal/jobs/JobManager;
flags: (0x0002) ACC_PRIVATE
private int numThreads;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int sleepingThreads;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private org.eclipse.core.internal.jobs.Worker[] threads;
descriptor: [Lorg/eclipse/core/internal/jobs/Worker;
flags: (0x0002) ACC_PRIVATE
protected void <init>(org.eclipse.core.internal.jobs.JobManager);
descriptor: (Lorg/eclipse/core/internal/jobs/JobManager;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_0
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
2: aload 0
iconst_0
putfield org.eclipse.core.internal.jobs.WorkerPool.isDaemon:Z
3: aload 0
iconst_0
putfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
4: aload 0
iconst_0
putfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
5: aload 0
bipush 10
anewarray org.eclipse.core.internal.jobs.Worker
putfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
6: aload 0
aload 1
putfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
7: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
putfield org.eclipse.core.internal.jobs.WorkerPool.defaultContextLoader:Ljava/lang/ClassLoader;
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 9 1 manager Lorg/eclipse/core/internal/jobs/JobManager;
MethodParameters:
Name Flags
manager
private synchronized void add(org.eclipse.core.internal.jobs.Worker);
descriptor: (Lorg/eclipse/core/internal/jobs/Worker;)V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
arraylength
istore 2
start local 2 1: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
iconst_1
iadd
iload 2
if_icmple 5
2: iconst_2
iload 2
imul
anewarray org.eclipse.core.internal.jobs.Worker
astore 3
start local 3 3: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
iconst_0
aload 3
iconst_0
iload 2
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: aload 0
aload 3
putfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
end local 3 5: StackMap locals: int
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
dup_x1
iconst_1
iadd
putfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
aload 1
aastore
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 7 1 worker Lorg/eclipse/core/internal/jobs/Worker;
1 7 2 size I
3 5 3 newThreads [Lorg/eclipse/core/internal/jobs/Worker;
MethodParameters:
Name Flags
worker
private synchronized void decrementBusyThreads();
descriptor: ()V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
iconst_1
isub
dup_x1
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
ifge 4
1: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG:Z
ifeq 3
2: iconst_0
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
invokestatic org.eclipse.core.runtime.Assert.isTrue:(ZLjava/lang/String;)Z
pop
3: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
protected void endJob(org.eclipse.core.internal.jobs.InternalJob, org.eclipse.core.runtime.IStatus);
descriptor: (Lorg/eclipse/core/internal/jobs/InternalJob;Lorg/eclipse/core/runtime/IStatus;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.eclipse.core.internal.jobs.InternalJob.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
ifnull 2
aload 1
instanceof org.eclipse.core.internal.jobs.ThreadJob
ifne 2
1: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.getLockManager:()Lorg/eclipse/core/internal/jobs/LockManager;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 1
invokevirtual org.eclipse.core.internal.jobs.InternalJob.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
invokevirtual org.eclipse.core.internal.jobs.LockManager.removeLockCompletely:(Ljava/lang/Thread;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 1
aload 2
iconst_1
invokevirtual org.eclipse.core.internal.jobs.JobManager.endJob:(Lorg/eclipse/core/internal/jobs/InternalJob;Lorg/eclipse/core/runtime/IStatus;Z)V
3: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
getfield org.eclipse.core.internal.jobs.JobManager.implicitJobs:Lorg/eclipse/core/internal/jobs/ImplicitJobs;
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.endJob:(Lorg/eclipse/core/internal/jobs/InternalJob;)V
4: goto 8
StackMap locals:
StackMap stack: java.lang.Throwable
5: astore 3
6: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
7: aload 3
athrow
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 10 1 job Lorg/eclipse/core/internal/jobs/InternalJob;
0 10 2 result Lorg/eclipse/core/runtime/IStatus;
Exception table:
from to target type
0 5 5 any
MethodParameters:
Name Flags
job
result
protected synchronized void endWorker(org.eclipse.core.internal.jobs.Worker);
descriptor: (Lorg/eclipse/core/internal/jobs/Worker;)V
flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.remove:(Lorg/eclipse/core/internal/jobs/Worker;)Z
ifeq 2
getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG:Z
ifeq 2
1: new java.lang.StringBuilder
dup
ldc "worker removed from pool: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.eclipse.core.internal.jobs.JobManager.debug:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 3 1 worker Lorg/eclipse/core/internal/jobs/Worker;
MethodParameters:
Name Flags
worker
private synchronized void incrementBusyThreads();
descriptor: ()V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
iconst_1
iadd
dup_x1
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
if_icmple 4
1: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG:Z
ifeq 3
2: iconst_0
new java.lang.StringBuilder
dup
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
bipush 44
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.eclipse.core.runtime.Assert.isTrue:(ZLjava/lang/String;)Z
pop
3: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
protected synchronized void jobQueued();
descriptor: ()V
flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
ifle 3
1: aload 0
invokevirtual java.lang.Object.notify:()V
2: return
3: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
if_icmplt 11
4: new org.eclipse.core.internal.jobs.Worker
dup
aload 0
invokespecial org.eclipse.core.internal.jobs.Worker.<init>:(Lorg/eclipse/core/internal/jobs/WorkerPool;)V
astore 1
start local 1 5: aload 1
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.isDaemon:Z
invokevirtual org.eclipse.core.internal.jobs.Worker.setDaemon:(Z)V
6: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.add:(Lorg/eclipse/core/internal/jobs/Worker;)V
7: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG:Z
ifeq 9
8: new java.lang.StringBuilder
dup
ldc "worker added to pool: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.eclipse.core.internal.jobs.JobManager.debug:(Ljava/lang/String;)V
9: StackMap locals: org.eclipse.core.internal.jobs.Worker
StackMap stack:
aload 1
invokevirtual org.eclipse.core.internal.jobs.Worker.start:()V
10: return
end local 1 11: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
5 11 1 worker Lorg/eclipse/core/internal/jobs/Worker;
private synchronized boolean remove(org.eclipse.core.internal.jobs.Worker);
descriptor: (Lorg/eclipse/core/internal/jobs/Worker;)Z
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 7
2: StackMap locals: int
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
iload 2
aaload
aload 1
if_acmpne 6
3: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
iload 2
iconst_1
iadd
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
iload 2
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
iload 2
isub
iconst_1
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
iconst_1
isub
dup_x1
putfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
aconst_null
aastore
5: iconst_1
ireturn
6: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
7: iload 2
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.threads:[Lorg/eclipse/core/internal/jobs/Worker;
arraylength
if_icmplt 2
end local 2 8: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 9 1 worker Lorg/eclipse/core/internal/jobs/Worker;
1 8 2 i I
MethodParameters:
Name Flags
worker
void setDaemon(boolean);
descriptor: (Z)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.eclipse.core.internal.jobs.WorkerPool.isDaemon:Z
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 2 1 value Z
MethodParameters:
Name Flags
value
protected synchronized void shutdown();
descriptor: ()V
flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.Object.notifyAll:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
private synchronized void sleep(long);
descriptor: (J)V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
iconst_1
iadd
putfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
1: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
iconst_1
isub
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
2: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG:Z
ifeq 4
3: new java.lang.StringBuilder
dup
ldc "worker sleeping for: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 1
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.eclipse.core.internal.jobs.JobManager.debug:(Ljava/lang/String;)V
4: StackMap locals:
StackMap stack:
aload 0
lload 1
invokevirtual java.lang.Object.wait:(J)V
5: goto 15
StackMap locals:
StackMap stack: java.lang.InterruptedException
6: pop
7: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG:Z
ifeq 9
8: ldc "worker interrupted while waiting... :-|"
invokestatic org.eclipse.core.internal.jobs.JobManager.debug:(Ljava/lang/String;)V
9: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
iconst_1
isub
putfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
10: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
iconst_1
iadd
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
goto 17
11: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
12: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
iconst_1
isub
putfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
13: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
iconst_1
iadd
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
14: aload 3
athrow
15: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
iconst_1
isub
putfield org.eclipse.core.internal.jobs.WorkerPool.sleepingThreads:I
16: aload 0
dup
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
iconst_1
iadd
putfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
17: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 18 1 duration J
Exception table:
from to target type
4 5 6 Class java.lang.InterruptedException
4 9 11 any
MethodParameters:
Name Flags
duration
protected org.eclipse.core.internal.jobs.InternalJob startJob(org.eclipse.core.internal.jobs.Worker);
descriptor: (Lorg/eclipse/core/internal/jobs/Worker;)Lorg/eclipse/core/internal/jobs/InternalJob;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=10, args_size=2
start local 0 start local 1 0: aload 0
dup
astore 3
monitorenter
1: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.isActive:()Z
ifne 5
2: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.endWorker:(Lorg/eclipse/core/internal/jobs/Worker;)V
3: aload 3
monitorexit
4: aconst_null
areturn
5: StackMap locals: org.eclipse.core.internal.jobs.WorkerPool org.eclipse.core.internal.jobs.Worker top org.eclipse.core.internal.jobs.WorkerPool
StackMap stack:
aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.incrementBusyThreads:()V
6: iconst_1
istore 2
start local 2 7: aload 3
monitorexit
8: goto 11
end local 2 StackMap locals:
StackMap stack: java.lang.Throwable
9: aload 3
monitorexit
10: athrow
start local 2 11: StackMap locals: org.eclipse.core.internal.jobs.WorkerPool org.eclipse.core.internal.jobs.Worker int
StackMap stack:
aconst_null
astore 3
start local 3 12: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 1
invokevirtual org.eclipse.core.internal.jobs.JobManager.startJob:(Lorg/eclipse/core/internal/jobs/Worker;)Lorg/eclipse/core/runtime/jobs/Job;
astore 3
13: invokestatic java.lang.System.currentTimeMillis:()J
lstore 4
start local 4 14: goto 47
15: StackMap locals: org.eclipse.core.runtime.jobs.Job long
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.sleepHint:()J
lstore 6
start local 6 16: lload 6
lconst_0
lcmp
ifle 31
17: aload 0
dup
astore 8
monitorenter
18: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
bipush 50
if_icmple 26
19: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.endWorker:(Lorg/eclipse/core/internal/jobs/Worker;)V
20: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
21: iconst_0
istore 2
22: aload 8
monitorexit
23: aload 3
ifnonnull 25
iload 2
ifeq 25
24: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
25: StackMap locals: long org.eclipse.core.internal.jobs.WorkerPool
StackMap stack:
aconst_null
areturn
26: StackMap locals:
StackMap stack:
aload 8
monitorexit
27: goto 30
StackMap locals:
StackMap stack: java.lang.Throwable
28: aload 8
monitorexit
29: athrow
30: StackMap locals:
StackMap stack:
aload 0
lload 6
ldc 60000
invokestatic java.lang.Math.min:(JJ)J
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.sleep:(J)V
31: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 1
invokevirtual org.eclipse.core.internal.jobs.JobManager.startJob:(Lorg/eclipse/core/internal/jobs/Worker;)Lorg/eclipse/core/runtime/jobs/Job;
astore 3
32: aload 0
dup
astore 8
monitorenter
33: aload 3
ifnonnull 41
invokestatic java.lang.System.currentTimeMillis:()J
lload 4
lsub
ldc 60000
lcmp
ifle 41
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.numThreads:I
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.busyThreads:I
isub
iconst_1
if_icmple 41
34: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.endWorker:(Lorg/eclipse/core/internal/jobs/Worker;)V
35: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
36: iconst_0
istore 2
37: aload 8
monitorexit
38: aload 3
ifnonnull 40
iload 2
ifeq 40
39: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
40: StackMap locals: org.eclipse.core.internal.jobs.WorkerPool
StackMap stack:
aconst_null
areturn
41: StackMap locals:
StackMap stack:
aload 8
monitorexit
42: goto 45
StackMap locals:
StackMap stack: java.lang.Throwable
43: aload 8
monitorexit
44: athrow
45: StackMap locals:
StackMap stack:
lload 6
lconst_0
lcmp
ifgt 47
aload 3
ifnonnull 47
46: aload 0
ldc 50
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.sleep:(J)V
end local 6 47: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.isActive:()Z
ifeq 48
aload 3
ifnull 15
48: StackMap locals:
StackMap stack:
aload 3
ifnull 58
49: aload 3
invokevirtual org.eclipse.core.runtime.jobs.Job.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
ifnull 51
aload 3
instanceof org.eclipse.core.internal.jobs.ThreadJob
ifne 51
50: aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.getLockManager:()Lorg/eclipse/core/internal/jobs/LockManager;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 3
invokevirtual org.eclipse.core.runtime.jobs.Job.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
invokevirtual org.eclipse.core.internal.jobs.LockManager.addLockThread:(Ljava/lang/Thread;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
51: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.WorkerPool.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.sleepHint:()J
ldc 9223372036854775807
lcmp
ifge 58
52: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.jobQueued:()V
end local 4 53: goto 58
StackMap locals: org.eclipse.core.internal.jobs.WorkerPool org.eclipse.core.internal.jobs.Worker int org.eclipse.core.runtime.jobs.Job
StackMap stack: java.lang.Throwable
54: astore 9
55: aload 3
ifnonnull 57
iload 2
ifeq 57
56: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
57: StackMap locals: org.eclipse.core.internal.jobs.WorkerPool org.eclipse.core.internal.jobs.Worker int org.eclipse.core.runtime.jobs.Job top top top top top java.lang.Throwable
StackMap stack:
aload 9
athrow
58: StackMap locals: org.eclipse.core.internal.jobs.WorkerPool org.eclipse.core.internal.jobs.Worker int org.eclipse.core.runtime.jobs.Job
StackMap stack:
aload 3
ifnonnull 60
iload 2
ifeq 60
59: aload 0
invokevirtual org.eclipse.core.internal.jobs.WorkerPool.decrementBusyThreads:()V
60: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Lorg/eclipse/core/internal/jobs/WorkerPool;
0 61 1 worker Lorg/eclipse/core/internal/jobs/Worker;
7 9 2 busy Z
11 61 2 busy Z
12 61 3 job Lorg/eclipse/core/runtime/jobs/Job;
14 53 4 idleStart J
16 47 6 hint J
Exception table:
from to target type
1 4 9 any
5 8 9 any
9 10 9 any
18 23 28 any
26 27 28 any
28 29 28 any
33 38 43 any
41 42 43 any
43 44 43 any
12 23 54 any
26 38 54 any
41 54 54 any
MethodParameters:
Name Flags
worker
}
SourceFile: "WorkerPool.java"