public final class org.fusesource.hawtdispatch.internal.ActiveMetricsCollector extends org.fusesource.hawtdispatch.internal.MetricsCollector
{
private final org.fusesource.hawtdispatch.DispatchQueue queue;
private final java.util.concurrent.atomic.AtomicLong max_run_time;
private final java.util.concurrent.atomic.AtomicLong max_wait_time;
private final java.util.concurrent.atomic.AtomicLong enqueued;
private final java.util.concurrent.atomic.AtomicLong dequeued;
private final java.util.concurrent.atomic.AtomicLong total_run_time;
private final java.util.concurrent.atomic.AtomicLong total_wait_time;
private final java.util.concurrent.atomic.AtomicLong reset_at;
public void <init>(org.fusesource.hawtdispatch.DispatchQueue)
{
long v;
org.fusesource.hawtdispatch.DispatchQueue v;
java.util.concurrent.atomic.AtomicLong v, v, v, v, v, v, v;
org.fusesource.hawtdispatch.internal.ActiveMetricsCollector v;
v := @this: org.fusesource.hawtdispatch.internal.ActiveMetricsCollector;
v := @parameter: org.fusesource.hawtdispatch.DispatchQueue;
specialinvoke v.<org.fusesource.hawtdispatch.internal.MetricsCollector: void <init>()>();
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong max_run_time> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong max_wait_time> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong enqueued> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong dequeued> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong total_run_time> = v;
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>()>();
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong total_wait_time> = v;
v = new java.util.concurrent.atomic.AtomicLong;
v = staticinvoke <java.lang.System: long nanoTime()>();
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(v);
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong reset_at> = v;
v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: org.fusesource.hawtdispatch.DispatchQueue queue> = v;
return;
}
private void setMax(java.util.concurrent.atomic.AtomicLong, long)
{
java.util.concurrent.atomic.AtomicLong v;
org.fusesource.hawtdispatch.internal.ActiveMetricsCollector v;
byte v;
long v, v;
boolean v;
v := @this: org.fusesource.hawtdispatch.internal.ActiveMetricsCollector;
v := @parameter: java.util.concurrent.atomic.AtomicLong;
v := @parameter: long;
label:
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp v;
if v <= 0 goto label;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: boolean compareAndSet(long,long)>(v, v);
if v == 0 goto label;
return;
label:
return;
}
public org.fusesource.hawtdispatch.Task track(org.fusesource.hawtdispatch.Task)
{
java.util.concurrent.atomic.AtomicLong v;
org.fusesource.hawtdispatch.internal.ActiveMetricsCollector v;
org.fusesource.hawtdispatch.Task v;
long v;
org.fusesource.hawtdispatch.internal.ActiveMetricsCollector$1 v;
v := @this: org.fusesource.hawtdispatch.internal.ActiveMetricsCollector;
v := @parameter: org.fusesource.hawtdispatch.Task;
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong enqueued>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long incrementAndGet()>();
v = staticinvoke <java.lang.System: long nanoTime()>();
v = new org.fusesource.hawtdispatch.internal.ActiveMetricsCollector$1;
specialinvoke v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector$1: void <init>(org.fusesource.hawtdispatch.internal.ActiveMetricsCollector,long,org.fusesource.hawtdispatch.Task)>(v, v, v);
return v;
}
public org.fusesource.hawtdispatch.Metrics metrics()
{
long v, v, v, v, v, v, v, v, v;
byte v, v;
org.fusesource.hawtdispatch.DispatchQueue v;
org.fusesource.hawtdispatch.Metrics v;
java.util.concurrent.atomic.AtomicLong v, v, v, v, v, v, v;
org.fusesource.hawtdispatch.internal.ActiveMetricsCollector v;
v := @this: org.fusesource.hawtdispatch.internal.ActiveMetricsCollector;
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong reset_at>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(v);
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong enqueued>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong dequeued>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v = v cmp 0L;
if v != 0 goto label;
v = v cmp 0L;
if v != 0 goto label;
return null;
label:
v = new org.fusesource.hawtdispatch.Metrics;
specialinvoke v.<org.fusesource.hawtdispatch.Metrics: void <init>()>();
v = v - v;
v.<org.fusesource.hawtdispatch.Metrics: long durationNS> = v;
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: org.fusesource.hawtdispatch.DispatchQueue queue>;
v.<org.fusesource.hawtdispatch.Metrics: org.fusesource.hawtdispatch.DispatchQueue queue> = v;
v.<org.fusesource.hawtdispatch.Metrics: long enqueued> = v;
v.<org.fusesource.hawtdispatch.Metrics: long dequeued> = v;
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong max_wait_time>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v.<org.fusesource.hawtdispatch.Metrics: long maxWaitTimeNS> = v;
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong max_run_time>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v.<org.fusesource.hawtdispatch.Metrics: long maxRunTimeNS> = v;
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong total_run_time>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v.<org.fusesource.hawtdispatch.Metrics: long totalRunTimeNS> = v;
v = v.<org.fusesource.hawtdispatch.internal.ActiveMetricsCollector: java.util.concurrent.atomic.AtomicLong total_wait_time>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndSet(long)>(0L);
v.<org.fusesource.hawtdispatch.Metrics: long totalWaitTimeNS> = v;
return v;
}
}