class org.eclipse.core.internal.jobs.ImplicitJobs
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.eclipse.core.internal.jobs.ImplicitJobs
super_class: java.lang.Object
{
private org.eclipse.core.internal.jobs.ThreadJob jobCache;
descriptor: Lorg/eclipse/core/internal/jobs/ThreadJob;
flags: (0x0002) ACC_PRIVATE
protected org.eclipse.core.internal.jobs.JobManager manager;
descriptor: Lorg/eclipse/core/internal/jobs/JobManager;
flags: (0x0004) ACC_PROTECTED
private final java.util.Set<org.eclipse.core.runtime.jobs.ISchedulingRule> suspendedRules;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Lorg/eclipse/core/runtime/jobs/ISchedulingRule;>;
private final java.util.Map<java.lang.Thread, org.eclipse.core.internal.jobs.ThreadJob> threadJobs;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Thread;Lorg/eclipse/core/internal/jobs/ThreadJob;>;
void <init>(org.eclipse.core.internal.jobs.JobManager);
descriptor: (Lorg/eclipse/core/internal/jobs/JobManager;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield org.eclipse.core.internal.jobs.ImplicitJobs.jobCache:Lorg/eclipse/core/internal/jobs/ThreadJob;
2: aload 0
new java.util.HashSet
dup
bipush 20
invokespecial java.util.HashSet.<init>:(I)V
putfield org.eclipse.core.internal.jobs.ImplicitJobs.suspendedRules:Ljava/util/Set;
3: aload 0
new java.util.HashMap
dup
bipush 20
invokespecial java.util.HashMap.<init>:(I)V
putfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
4: aload 0
aload 1
putfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 6 1 manager Lorg/eclipse/core/internal/jobs/JobManager;
MethodParameters:
Name Flags
manager
void begin(org.eclipse.core.runtime.jobs.ISchedulingRule, org.eclipse.core.runtime.IProgressMonitor, boolean);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Lorg/eclipse/core/runtime/IProgressMonitor;Z)V
flags: (0x0000)
Code:
stack=3, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG_BEGIN_END:Z
ifeq 2
1: new java.lang.StringBuilder
dup
ldc "Begin rule: "
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:
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 4
start local 4 3: aload 0
dup
astore 6
monitorenter
4: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 4
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.eclipse.core.internal.jobs.ThreadJob
astore 5
start local 5 5: aload 5
ifnull 9
6: aload 5
aload 1
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.push:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
7: aload 6
monitorexit
8: return
9: StackMap locals: java.lang.Thread org.eclipse.core.internal.jobs.ThreadJob org.eclipse.core.internal.jobs.ImplicitJobs
StackMap stack:
aload 1
ifnonnull 12
10: aload 6
monitorexit
11: return
12: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.currentJob:()Lorg/eclipse/core/runtime/jobs/Job;
astore 7
start local 7 13: aload 7
ifnull 15
aload 7
invokevirtual org.eclipse.core.runtime.jobs.Job.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
ifnull 15
14: aload 0
aload 7
invokevirtual org.eclipse.core.runtime.jobs.Job.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.newThreadJob:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Lorg/eclipse/core/internal/jobs/ThreadJob;
astore 5
goto 17
15: StackMap locals: org.eclipse.core.runtime.jobs.Job
StackMap stack:
aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.newThreadJob:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Lorg/eclipse/core/internal/jobs/ThreadJob;
astore 5
16: aload 5
iconst_1
putfield org.eclipse.core.internal.jobs.ThreadJob.acquireRule:Z
17: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.isSuspended:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Z
ifeq 19
18: aload 5
iconst_0
putfield org.eclipse.core.internal.jobs.ThreadJob.acquireRule:Z
19: StackMap locals:
StackMap stack:
aload 5
aload 7
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.setRealJob:(Lorg/eclipse/core/runtime/jobs/Job;)V
20: aload 5
aload 4
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.setThread:(Ljava/lang/Thread;)V
end local 7 21: aload 6
monitorexit
22: goto 25
end local 5 StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.runtime.jobs.ISchedulingRule org.eclipse.core.runtime.IProgressMonitor int java.lang.Thread top org.eclipse.core.internal.jobs.ImplicitJobs
StackMap stack: java.lang.Throwable
23: aload 6
monitorexit
24: athrow
start local 5 25: StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.runtime.jobs.ISchedulingRule org.eclipse.core.runtime.IProgressMonitor int java.lang.Thread org.eclipse.core.internal.jobs.ThreadJob
StackMap stack:
aload 5
aload 1
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.push:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
26: aload 5
getfield org.eclipse.core.internal.jobs.ThreadJob.acquireRule:Z
ifeq 41
27: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 5
iconst_0
invokevirtual org.eclipse.core.internal.jobs.JobManager.runNow:(Lorg/eclipse/core/internal/jobs/ThreadJob;Z)Lorg/eclipse/core/internal/jobs/InternalJob;
ifnonnull 29
28: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.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.LockManager.addLockThread:(Ljava/lang/Thread;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
goto 41
29: StackMap locals:
StackMap stack:
aload 5
aload 2
invokestatic org.eclipse.core.internal.jobs.ThreadJob.joinRun:(Lorg/eclipse/core/internal/jobs/ThreadJob;Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/internal/jobs/ThreadJob;
astore 5
30: goto 41
StackMap locals:
StackMap stack: java.lang.Throwable
31: astore 6
32: aload 0
dup
astore 7
monitorenter
33: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 4
aload 5
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
34: iload 3
ifeq 36
35: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.suspendedRules:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
36: StackMap locals: java.lang.Throwable org.eclipse.core.internal.jobs.ImplicitJobs
StackMap stack:
aload 7
monitorexit
37: goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
38: aload 7
monitorexit
39: athrow
40: StackMap locals:
StackMap stack:
aload 6
athrow
41: StackMap locals:
StackMap stack:
aload 0
dup
astore 7
monitorenter
42: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 4
aload 5
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
43: iload 3
ifeq 45
44: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.suspendedRules:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
45: StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.runtime.jobs.ISchedulingRule org.eclipse.core.runtime.IProgressMonitor int java.lang.Thread org.eclipse.core.internal.jobs.ThreadJob top org.eclipse.core.internal.jobs.ImplicitJobs
StackMap stack:
aload 7
monitorexit
46: goto 49
StackMap locals:
StackMap stack: java.lang.Throwable
47: aload 7
monitorexit
48: athrow
49: StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.runtime.jobs.ISchedulingRule org.eclipse.core.runtime.IProgressMonitor int java.lang.Thread org.eclipse.core.internal.jobs.ThreadJob
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 50 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
0 50 2 monitor Lorg/eclipse/core/runtime/IProgressMonitor;
0 50 3 suspend Z
3 50 4 currentThread Ljava/lang/Thread;
5 23 5 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
25 50 5 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
13 21 7 realJob Lorg/eclipse/core/runtime/jobs/Job;
Exception table:
from to target type
4 8 23 any
9 11 23 any
12 22 23 any
23 24 23 any
25 31 31 any
33 37 38 any
38 39 38 any
42 46 47 any
47 48 47 any
MethodParameters:
Name Flags
rule
monitor
suspend
synchronized void end(org.eclipse.core.runtime.jobs.ISchedulingRule, boolean);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Z)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG_BEGIN_END:Z
ifeq 2
1: new java.lang.StringBuilder
dup
ldc "End rule: "
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:
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.eclipse.core.internal.jobs.ThreadJob
astore 3
start local 3 3: aload 3
ifnonnull 7
4: aload 1
ifnonnull 5
iconst_1
goto 6
StackMap locals: org.eclipse.core.internal.jobs.ThreadJob
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: new java.lang.StringBuilder
dup
ldc "endRule without matching beginRule: "
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.runtime.Assert.isLegal:(ZLjava/lang/String;)Z
pop
goto 9
7: StackMap locals:
StackMap stack:
aload 3
aload 1
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.pop:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Z
ifeq 9
8: aload 0
aload 3
iload 2
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.endThreadJob:(Lorg/eclipse/core/internal/jobs/ThreadJob;Z)V
9: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 10 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
0 10 2 resume Z
3 10 3 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
MethodParameters:
Name Flags
rule
resume
void endJob(org.eclipse.core.internal.jobs.InternalJob);
descriptor: (Lorg/eclipse/core/internal/jobs/InternalJob;)V
flags: (0x0000)
Code:
stack=7, locals=7, args_size=2
start local 0 start local 1 0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 2
start local 2 1: aload 0
dup
astore 4
monitorenter
2: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.eclipse.core.internal.jobs.ThreadJob
astore 5
start local 5 3: aload 5
ifnonnull 8
4: aload 1
invokevirtual org.eclipse.core.internal.jobs.InternalJob.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
ifnull 6
5: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.notifyWaitingThreadJobs:(Lorg/eclipse/core/internal/jobs/InternalJob;)V
6: StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.InternalJob java.lang.Thread top org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.ThreadJob
StackMap stack:
aload 4
monitorexit
7: return
8: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Worker thread ended job: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", but still holds rule: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
start local 6 9: new org.eclipse.core.runtime.Status
dup
iconst_4
ldc "org.eclipse.core.jobs"
iconst_1
aload 6
aconst_null
invokespecial org.eclipse.core.runtime.Status.<init>:(ILjava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
astore 3
start local 3 10: aload 0
aload 5
iconst_0
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.endThreadJob:(Lorg/eclipse/core/internal/jobs/ThreadJob;Z)V
end local 6 end local 5 11: aload 4
monitorexit
12: goto 15
end local 3 StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.InternalJob java.lang.Thread top org.eclipse.core.internal.jobs.ImplicitJobs
StackMap stack: java.lang.Throwable
13: aload 4
monitorexit
14: athrow
start local 3 15: StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.InternalJob java.lang.Thread org.eclipse.core.runtime.IStatus
StackMap stack:
aload 3
invokestatic org.eclipse.core.internal.runtime.RuntimeLog.log:(Lorg/eclipse/core/runtime/IStatus;)V
16: goto 19
StackMap locals:
StackMap stack: java.lang.RuntimeException
17: pop
18: getstatic java.lang.System.err:Ljava/io/PrintStream;
aload 3
invokeinterface org.eclipse.core.runtime.IStatus.getMessage:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
19: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 20 1 lastJob Lorg/eclipse/core/internal/jobs/InternalJob;
1 20 2 currentThread Ljava/lang/Thread;
10 13 3 error Lorg/eclipse/core/runtime/IStatus;
15 20 3 error Lorg/eclipse/core/runtime/IStatus;
3 11 5 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
9 11 6 msg Ljava/lang/String;
Exception table:
from to target type
2 7 13 any
8 12 13 any
13 14 13 any
15 16 17 Class java.lang.RuntimeException
MethodParameters:
Name Flags
lastJob
private void endThreadJob(org.eclipse.core.internal.jobs.ThreadJob, boolean);
descriptor: (Lorg/eclipse/core/internal/jobs/ThreadJob;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 3
start local 3 1: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 1
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
astore 4
start local 4 3: iload 2
ifeq 5
aload 4
ifnull 5
4: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.suspendedRules:Ljava/util/Set;
aload 4
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
5: StackMap locals: java.lang.Thread org.eclipse.core.runtime.jobs.ISchedulingRule
StackMap stack:
aload 1
getfield org.eclipse.core.internal.jobs.ThreadJob.acquireRule:Z
ifeq 8
6: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.getLockManager:()Lorg/eclipse/core/internal/jobs/LockManager;
aload 3
aload 4
invokevirtual org.eclipse.core.internal.jobs.LockManager.removeLockThread:(Ljava/lang/Thread;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
7: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.notifyWaitingThreadJobs:(Lorg/eclipse/core/internal/jobs/InternalJob;)V
8: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.isRunning:()Z
ifeq 10
9: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 1
getstatic org.eclipse.core.runtime.Status.OK_STATUS:Lorg/eclipse/core/runtime/IStatus;
iconst_0
invokevirtual org.eclipse.core.internal.jobs.JobManager.endJob:(Lorg/eclipse/core/internal/jobs/InternalJob;Lorg/eclipse/core/runtime/IStatus;Z)V
10: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.recycle:(Lorg/eclipse/core/internal/jobs/ThreadJob;)V
11: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 12 1 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
0 12 2 resume Z
1 12 3 currentThread Ljava/lang/Thread;
3 12 4 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
MethodParameters:
Name Flags
threadJob
resume
private boolean isSuspended(org.eclipse.core.runtime.jobs.ISchedulingRule);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.suspendedRules:Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
ifeq 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.suspendedRules:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 6
StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.runtime.jobs.ISchedulingRule top java.util.Iterator
StackMap stack:
3: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.eclipse.core.runtime.jobs.ISchedulingRule
astore 2
start local 2 4: aload 2
aload 1
invokeinterface org.eclipse.core.runtime.jobs.ISchedulingRule.contains:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Z
ifeq 6
5: iconst_1
ireturn
end local 2 6: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
7: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 8 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
4 6 2 iSchedulingRule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
MethodParameters:
Name Flags
rule
private org.eclipse.core.internal.jobs.ThreadJob newThreadJob(org.eclipse.core.runtime.jobs.ISchedulingRule);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)Lorg/eclipse/core/internal/jobs/ThreadJob;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.jobCache:Lorg/eclipse/core/internal/jobs/ThreadJob;
ifnull 7
1: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.jobCache:Lorg/eclipse/core/internal/jobs/ThreadJob;
astore 2
start local 2 2: aload 2
aload 1
invokevirtual org.eclipse.core.internal.jobs.InternalJob.internalSetRule:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
3: aload 2
aload 2
iconst_0
dup_x1
putfield org.eclipse.core.internal.jobs.ThreadJob.isRunning:Z
putfield org.eclipse.core.internal.jobs.ThreadJob.acquireRule:Z
4: aload 2
aconst_null
putfield org.eclipse.core.internal.jobs.ThreadJob.realJob:Lorg/eclipse/core/runtime/jobs/Job;
5: aload 0
aconst_null
putfield org.eclipse.core.internal.jobs.ImplicitJobs.jobCache:Lorg/eclipse/core/internal/jobs/ThreadJob;
6: aload 2
areturn
end local 2 7: StackMap locals:
StackMap stack:
new org.eclipse.core.internal.jobs.ThreadJob
dup
aload 1
invokespecial org.eclipse.core.internal.jobs.ThreadJob.<init>:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 8 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
2 7 2 job Lorg/eclipse/core/internal/jobs/ThreadJob;
MethodParameters:
Name Flags
rule
void notifyWaitingThreadJobs(org.eclipse.core.internal.jobs.InternalJob);
descriptor: (Lorg/eclipse/core/internal/jobs/InternalJob;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
getfield org.eclipse.core.internal.jobs.InternalJob.jobStateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 1
getfield org.eclipse.core.internal.jobs.InternalJob.jobStateLock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
2: aload 2
monitorexit
3: goto 6
StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.InternalJob java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 2
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 7 1 job Lorg/eclipse/core/internal/jobs/InternalJob;
Exception table:
from to target type
1 3 4 any
4 5 4 any
MethodParameters:
Name Flags
job
private void recycle(org.eclipse.core.internal.jobs.ThreadJob);
descriptor: (Lorg/eclipse/core/internal/jobs/ThreadJob;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.jobCache:Lorg/eclipse/core/internal/jobs/ThreadJob;
ifnonnull 2
aload 1
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.recycle:()Z
ifeq 2
1: aload 0
aload 1
putfield org.eclipse.core.internal.jobs.ImplicitJobs.jobCache:Lorg/eclipse/core/internal/jobs/ThreadJob;
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/ImplicitJobs;
0 3 1 job Lorg/eclipse/core/internal/jobs/ThreadJob;
MethodParameters:
Name Flags
job
void resume(org.eclipse.core.runtime.jobs.ISchedulingRule);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.end:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Z)V
1: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG_BEGIN_END:Z
ifeq 3
2: new java.lang.StringBuilder
dup
ldc "Resume rule: "
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
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 4 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
MethodParameters:
Name Flags
rule
void suspend(org.eclipse.core.runtime.jobs.ISchedulingRule, org.eclipse.core.runtime.IProgressMonitor);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Lorg/eclipse/core/runtime/IProgressMonitor;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.eclipse.core.internal.jobs.JobManager.DEBUG_BEGIN_END:Z
ifeq 2
1: new java.lang.StringBuilder
dup
ldc "Suspend rule: "
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:
aload 0
aload 1
aload 2
iconst_1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.begin:(Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Lorg/eclipse/core/runtime/IProgressMonitor;Z)V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 4 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
0 4 2 monitor Lorg/eclipse/core/runtime/IProgressMonitor;
MethodParameters:
Name Flags
rule
monitor
synchronized void transfer(org.eclipse.core.runtime.jobs.ISchedulingRule, java.lang.Thread);
descriptor: (Lorg/eclipse/core/runtime/jobs/ISchedulingRule;Ljava/lang/Thread;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: return
2: StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 3
start local 3 3: aload 3
aload 2
if_acmpne 5
4: return
5: StackMap locals: java.lang.Thread
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.eclipse.core.internal.jobs.ThreadJob
astore 4
start local 4 6: aload 4
ifnonnull 7
iconst_1
goto 8
StackMap locals: org.eclipse.core.internal.jobs.ThreadJob
StackMap stack:
7: iconst_0
StackMap locals:
StackMap stack: int
8: ldc "Transfer rule to job that already owns a rule"
invokestatic org.eclipse.core.runtime.Assert.isLegal:(ZLjava/lang/String;)Z
pop
9: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.eclipse.core.internal.jobs.ThreadJob
astore 5
start local 5 10: aload 5
ldc "transferRule without beginRule"
invokestatic org.eclipse.core.runtime.Assert.isNotNull:(Ljava/lang/Object;Ljava/lang/String;)V
11: aload 5
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
aload 1
if_acmpne 12
iconst_1
goto 13
StackMap locals: org.eclipse.core.internal.jobs.ThreadJob
StackMap stack:
12: iconst_0
StackMap locals:
StackMap stack: int
13: new java.lang.StringBuilder
dup
ldc "transferred rule "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " does not match beginRule: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.getRule:()Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.eclipse.core.runtime.Assert.isLegal:(ZLjava/lang/String;)Z
pop
14: aload 5
aload 2
invokevirtual org.eclipse.core.internal.jobs.ThreadJob.setThread:(Ljava/lang/Thread;)V
15: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
16: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 2
aload 5
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
17: aload 5
getfield org.eclipse.core.internal.jobs.ThreadJob.acquireRule:Z
ifeq 20
18: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.getLockManager:()Lorg/eclipse/core/internal/jobs/LockManager;
aload 3
aload 1
invokevirtual org.eclipse.core.internal.jobs.LockManager.removeLockThread:(Ljava/lang/Thread;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
19: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
invokevirtual org.eclipse.core.internal.jobs.JobManager.getLockManager:()Lorg/eclipse/core/internal/jobs/LockManager;
aload 2
aload 1
invokevirtual org.eclipse.core.internal.jobs.LockManager.addLockThread:(Ljava/lang/Thread;Lorg/eclipse/core/runtime/jobs/ISchedulingRule;)V
20: StackMap locals:
StackMap stack:
aload 0
aload 5
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.notifyWaitingThreadJobs:(Lorg/eclipse/core/internal/jobs/InternalJob;)V
21: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 22 1 rule Lorg/eclipse/core/runtime/jobs/ISchedulingRule;
0 22 2 destinationThread Ljava/lang/Thread;
3 22 3 currentThread Ljava/lang/Thread;
6 22 4 target Lorg/eclipse/core/internal/jobs/ThreadJob;
10 22 5 source Lorg/eclipse/core/internal/jobs/ThreadJob;
MethodParameters:
Name Flags
rule
destinationThread
synchronized void removeWaiting(org.eclipse.core.internal.jobs.ThreadJob);
descriptor: (Lorg/eclipse/core/internal/jobs/ThreadJob;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
getfield org.eclipse.core.internal.jobs.InternalJob.jobStateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 1
iconst_0
putfield org.eclipse.core.internal.jobs.ThreadJob.isWaiting:Z
2: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.notifyWaitingThreadJobs:(Lorg/eclipse/core/internal/jobs/InternalJob;)V
3: aload 1
ldc -1
invokevirtual org.eclipse.core.internal.jobs.InternalJob.setWaitQueueStamp:(J)V
4: aload 2
monitorexit
5: goto 8
StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.ThreadJob java.lang.Object
StackMap stack: java.lang.Throwable
6: aload 2
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
getfield org.eclipse.core.internal.jobs.JobManager.waitingThreadJobs:Lorg/eclipse/core/internal/jobs/JobQueue;
aload 1
invokevirtual org.eclipse.core.internal.jobs.JobManager.dequeue:(Lorg/eclipse/core/internal/jobs/JobQueue;Lorg/eclipse/core/internal/jobs/InternalJob;)V
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 10 1 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
Exception table:
from to target type
1 5 6 any
6 7 6 any
MethodParameters:
Name Flags
threadJob
synchronized void addWaiting(org.eclipse.core.internal.jobs.ThreadJob);
descriptor: (Lorg/eclipse/core/internal/jobs/ThreadJob;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
getfield org.eclipse.core.internal.jobs.InternalJob.jobStateLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 1
iconst_1
putfield org.eclipse.core.internal.jobs.ThreadJob.isWaiting:Z
2: aload 0
aload 1
invokevirtual org.eclipse.core.internal.jobs.ImplicitJobs.notifyWaitingThreadJobs:(Lorg/eclipse/core/internal/jobs/InternalJob;)V
3: aload 1
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
getfield org.eclipse.core.internal.jobs.JobManager.waitQueueCounter:Lorg/eclipse/core/internal/jobs/Counter;
invokevirtual org.eclipse.core.internal.jobs.Counter.increment:()J
invokevirtual org.eclipse.core.internal.jobs.InternalJob.setWaitQueueStamp:(J)V
4: aload 2
monitorexit
5: goto 8
StackMap locals: org.eclipse.core.internal.jobs.ImplicitJobs org.eclipse.core.internal.jobs.ThreadJob java.lang.Object
StackMap stack: java.lang.Throwable
6: aload 2
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.manager:Lorg/eclipse/core/internal/jobs/JobManager;
getfield org.eclipse.core.internal.jobs.JobManager.waitingThreadJobs:Lorg/eclipse/core/internal/jobs/JobQueue;
aload 1
invokevirtual org.eclipse.core.internal.jobs.JobManager.enqueue:(Lorg/eclipse/core/internal/jobs/JobQueue;Lorg/eclipse/core/internal/jobs/InternalJob;)V
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 10 1 threadJob Lorg/eclipse/core/internal/jobs/ThreadJob;
Exception table:
from to target type
1 5 6 any
6 7 6 any
MethodParameters:
Name Flags
threadJob
synchronized org.eclipse.core.internal.jobs.ThreadJob getThreadJob(java.lang.Thread);
descriptor: (Ljava/lang/Thread;)Lorg/eclipse/core/internal/jobs/ThreadJob;
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.eclipse.core.internal.jobs.ImplicitJobs.threadJobs:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.eclipse.core.internal.jobs.ThreadJob
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/eclipse/core/internal/jobs/ImplicitJobs;
0 1 1 thread Ljava/lang/Thread;
MethodParameters:
Name Flags
thread
}
SourceFile: "ImplicitJobs.java"