public class org.iq.leveldb.impl.VersionSet extends java.lang.Object implements org.iq.leveldb.impl.SeekingIterable
{
private static final int L0_COMPACTION_TRIGGER;
public static final int TARGET_FILE_SIZE;
public static final long MAX_GRAND_PARENT_OVERLAP_BYTES;
private final java.util.concurrent.atomic.AtomicLong nextFileNumber;
private long manifestFileNumber;
private org.iq.leveldb.impl.Version current;
private long lastSequence;
private long logNumber;
private long prevLogNumber;
private final java.util.Map activeVersions;
private final java.io.File databaseDir;
private final org.iq.leveldb.impl.TableCache tableCache;
private final org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator;
private org.iq.leveldb.impl.LogWriter descriptorLog;
private final java.util.Map compactPointers;
static final boolean $assertionsDisabled;
public void <init>(java.io.File, org.iq.leveldb.impl.TableCache, org.iq.leveldb.impl.InternalKeyComparator) throws java.io.IOException
{
org.iq.leveldb.impl.InternalKeyComparator v;
java.io.File v;
java.util.concurrent.ConcurrentMap v;
java.util.concurrent.atomic.AtomicLong v;
java.util.TreeMap v;
org.iq.leveldb.impl.Version v;
com.google.common.collect.MapMaker v, v;
org.iq.leveldb.impl.TableCache v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: java.io.File;
v := @parameter: org.iq.leveldb.impl.TableCache;
v := @parameter: org.iq.leveldb.impl.InternalKeyComparator;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicLong;
specialinvoke v.<java.util.concurrent.atomic.AtomicLong: void <init>(long)>(2L);
v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber> = v;
v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber> = 1L;
v = new com.google.common.collect.MapMaker;
specialinvoke v.<com.google.common.collect.MapMaker: void <init>()>();
v = virtualinvoke v.<com.google.common.collect.MapMaker: com.google.common.collect.MapMaker weakKeys()>();
v = virtualinvoke v.<com.google.common.collect.MapMaker: java.util.concurrent.ConcurrentMap makeMap()>();
v.<org.iq.leveldb.impl.VersionSet: java.util.Map activeVersions> = v;
v = staticinvoke <com.google.common.collect.Maps: java.util.TreeMap newTreeMap()>();
v.<org.iq.leveldb.impl.VersionSet: java.util.Map compactPointers> = v;
v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir> = v;
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.TableCache tableCache> = v;
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator> = v;
v = new org.iq.leveldb.impl.Version;
specialinvoke v.<org.iq.leveldb.impl.Version: void <init>(org.iq.leveldb.impl.VersionSet)>(v);
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void appendVersion(org.iq.leveldb.impl.Version)>(v);
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void initializeIfNeeded()>();
return;
}
private void initializeIfNeeded() throws java.io.IOException
{
java.lang.Throwable v;
org.iq.leveldb.util.Slice v;
org.iq.leveldb.impl.VersionEdit v;
long v, v, v, v, v, v;
java.lang.String v, v, v;
boolean v;
org.iq.leveldb.impl.InternalKeyComparator v;
java.io.File v, v, v, v, v;
java.util.concurrent.atomic.AtomicLong v;
org.iq.leveldb.impl.LogWriter v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = new java.io.File;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String currentFileName()>();
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = virtualinvoke v.<java.io.File: boolean exists()>();
if v != 0 goto label;
v = new org.iq.leveldb.impl.VersionEdit;
specialinvoke v.<org.iq.leveldb.impl.VersionEdit: void <init>()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: java.lang.String name()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setComparatorName(java.lang.String)>(v);
v = v.<org.iq.leveldb.impl.VersionSet: long prevLogNumber>;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setLogNumber(long)>(v);
v = v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setNextFileNumber(long)>(v);
v = v.<org.iq.leveldb.impl.VersionSet: long lastSequence>;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setLastSequenceNumber(long)>(v);
v = new java.io.File;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String descriptorFileName(long)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber>;
v = staticinvoke <org.iq.leveldb.impl.Logs: org.iq.leveldb.impl.LogWriter createLogWriter(java.io.File,long)>(v, v);
label:
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void writeSnapshot(org.iq.leveldb.impl.LogWriter)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: org.iq.leveldb.util.Slice encode()>();
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void addRecord(org.iq.leveldb.util.Slice,boolean)>(v, 0);
label:
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void close()>();
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void close()>();
throw v;
label:
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: long getFileNumber()>();
staticinvoke <org.iq.leveldb.impl.Filename: boolean setCurrentFile(java.io.File,long)>(v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void destroy() throws java.io.IOException
{
java.util.Map v;
org.iq.leveldb.impl.LogWriter v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void close()>();
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog> = null;
label:
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
if v == null goto label;
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current> = null;
virtualinvoke v.<org.iq.leveldb.impl.Version: void release()>();
label:
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map activeVersions>;
interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
return;
}
private void appendVersion(org.iq.leveldb.impl.Version)
{
java.util.Map v;
java.lang.Object v;
org.iq.leveldb.impl.Version v, v, v;
org.iq.leveldb.impl.VersionSet v;
boolean v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.Version;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "version is null");
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
if v == v goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.Object)>(v, "version is the current version");
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current> = v;
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map activeVersions>;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
if v == null goto label;
virtualinvoke v.<org.iq.leveldb.impl.Version: void release()>();
label:
return;
}
public void removeVersion(org.iq.leveldb.impl.Version)
{
java.lang.AssertionError v;
java.util.Map v;
java.lang.Object v;
org.iq.leveldb.impl.Version v, v;
org.iq.leveldb.impl.VersionSet v;
boolean v, v, v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.Version;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "version is null");
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
if v == v goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.Object)>(v, "version is the current version");
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map activeVersions>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>(v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = <org.iq.leveldb.impl.VersionSet: boolean $assertionsDisabled>;
if v != 0 goto label;
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>(java.lang.Object)>("Expected the version to still be in the active set");
throw v;
label:
return;
}
public org.iq.leveldb.impl.InternalKeyComparator getInternalKeyComparator()
{
org.iq.leveldb.impl.InternalKeyComparator v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
return v;
}
public org.iq.leveldb.impl.TableCache getTableCache()
{
org.iq.leveldb.impl.TableCache v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.TableCache tableCache>;
return v;
}
public org.iq.leveldb.impl.Version getCurrent()
{
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
return v;
}
public long getManifestFileNumber()
{
long v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber>;
return v;
}
public long getNextFileNumber()
{
java.util.concurrent.atomic.AtomicLong v;
long v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long getAndIncrement()>();
return v;
}
public long getLogNumber()
{
long v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: long logNumber>;
return v;
}
public long getPrevLogNumber()
{
long v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: long prevLogNumber>;
return v;
}
public org.iq.leveldb.util.MergingIterator iterator()
{
org.iq.leveldb.util.MergingIterator v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: org.iq.leveldb.util.MergingIterator iterator()>();
return v;
}
public org.iq.leveldb.util.MergingIterator makeInputIterator(org.iq.leveldb.impl.Compaction)
{
java.util.List[] v, v, v;
org.iq.leveldb.util.Level0Iterator v;
java.util.ArrayList v;
int v, v, v;
org.iq.leveldb.impl.TableCache v, v;
boolean v;
org.iq.leveldb.impl.Compaction v;
org.iq.leveldb.util.MergingIterator v;
org.iq.leveldb.impl.InternalKeyComparator v, v, v;
java.util.List v, v, v;
org.iq.leveldb.util.LevelIterator v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.Compaction;
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList()>();
v = 0;
label:
if v >= 2 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: java.util.List[] getInputs()>();
v = v[v];
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: int getLevel()>();
v = v + v;
if v != 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: java.util.List[] getInputs()>();
v = v[v];
v = new org.iq.leveldb.util.Level0Iterator;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.TableCache tableCache>;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.util.Level0Iterator: void <init>(org.iq.leveldb.impl.TableCache,java.util.List,java.util.Comparator)>(v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.TableCache tableCache>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: java.util.List[] getInputs()>();
v = v[v];
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = staticinvoke <org.iq.leveldb.impl.Level: org.iq.leveldb.util.LevelIterator createLevelConcatIterator(org.iq.leveldb.impl.TableCache,java.util.List,org.iq.leveldb.impl.InternalKeyComparator)>(v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = new org.iq.leveldb.util.MergingIterator;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.util.MergingIterator: void <init>(java.util.List,java.util.Comparator)>(v, v);
return v;
}
public org.iq.leveldb.impl.LookupResult get(org.iq.leveldb.impl.LookupKey)
{
org.iq.leveldb.impl.LookupKey v;
org.iq.leveldb.impl.LookupResult v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.LookupKey;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: org.iq.leveldb.impl.LookupResult get(org.iq.leveldb.impl.LookupKey)>(v);
return v;
}
public boolean overlapInLevel(int, org.iq.leveldb.util.Slice, org.iq.leveldb.util.Slice)
{
org.iq.leveldb.util.Slice v, v;
int v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
boolean v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: int;
v := @parameter: org.iq.leveldb.util.Slice;
v := @parameter: org.iq.leveldb.util.Slice;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: boolean overlapInLevel(int,org.iq.leveldb.util.Slice,org.iq.leveldb.util.Slice)>(v, v, v);
return v;
}
public int numberOfFilesInLevel(int)
{
int v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: int;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int numberOfFilesInLevel(int)>(v);
return v;
}
public long numberOfBytesInLevel(int)
{
int v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: int;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int numberOfFilesInLevel(int)>(v);
return v;
}
public long getLastSequence()
{
long v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: long lastSequence>;
return v;
}
public void setLastSequence(long)
{
byte v;
long v, v;
org.iq.leveldb.impl.VersionSet v;
boolean v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: long;
v = v.<org.iq.leveldb.impl.VersionSet: long lastSequence>;
v = v cmp v;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.Object)>(v, "Expected newLastSequence to be greater than or equal to current lastSequence");
v.<org.iq.leveldb.impl.VersionSet: long lastSequence> = v;
return;
}
public void logAndApply(org.iq.leveldb.impl.VersionEdit) throws java.io.IOException
{
org.iq.leveldb.util.Slice v;
byte v, v;
java.lang.Long v, v, v, v, v, v;
boolean v, v, v;
org.iq.leveldb.impl.LogWriter v, v, v, v, v, v, v;
org.iq.leveldb.impl.VersionSet v;
org.iq.leveldb.impl.VersionEdit v;
long v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v;
java.io.IOException v;
java.io.File v, v, v, v, v;
java.util.concurrent.atomic.AtomicLong v, v, v;
org.iq.leveldb.impl.Version v, v;
org.iq.leveldb.impl.VersionSet$Builder v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.VersionEdit;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getLogNumber()>();
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getLogNumber()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = v.<org.iq.leveldb.impl.VersionSet: long logNumber>;
v = v cmp v;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getLogNumber()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
v = v cmp v;
if v >= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
goto label;
label:
v = v.<org.iq.leveldb.impl.VersionSet: long logNumber>;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setLogNumber(long)>(v);
label:
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getPreviousLogNumber()>();
if v != null goto label;
v = v.<org.iq.leveldb.impl.VersionSet: long prevLogNumber>;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setPreviousLogNumber(long)>(v);
label:
v = v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setNextFileNumber(long)>(v);
v = v.<org.iq.leveldb.impl.VersionSet: long lastSequence>;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setLastSequenceNumber(long)>(v);
v = new org.iq.leveldb.impl.Version;
specialinvoke v.<org.iq.leveldb.impl.Version: void <init>(org.iq.leveldb.impl.VersionSet)>(v);
v = new org.iq.leveldb.impl.VersionSet$Builder;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
specialinvoke v.<org.iq.leveldb.impl.VersionSet$Builder: void <init>(org.iq.leveldb.impl.VersionSet,org.iq.leveldb.impl.Version)>(v, v);
virtualinvoke v.<org.iq.leveldb.impl.VersionSet$Builder: void apply(org.iq.leveldb.impl.VersionEdit)>(v);
virtualinvoke v.<org.iq.leveldb.impl.VersionSet$Builder: void saveTo(org.iq.leveldb.impl.Version)>(v);
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void finalizeVersion(org.iq.leveldb.impl.Version)>(v);
v = 0;
label:
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
if v != null goto label;
v = v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: long get()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setNextFileNumber(long)>(v);
v = new java.io.File;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String descriptorFileName(long)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber>;
v = staticinvoke <org.iq.leveldb.impl.Logs: org.iq.leveldb.impl.LogWriter createLogWriter(java.io.File,long)>(v, v);
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog> = v;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void writeSnapshot(org.iq.leveldb.impl.LogWriter)>(v);
v = 1;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: org.iq.leveldb.util.Slice encode()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void addRecord(org.iq.leveldb.util.Slice,boolean)>(v, 1);
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
v = interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: long getFileNumber()>();
staticinvoke <org.iq.leveldb.impl.Filename: boolean setCurrentFile(java.io.File,long)>(v, v);
label:
goto label;
label:
v := @caughtexception;
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void close()>();
v = new java.io.File;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog>;
v = interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: long getFileNumber()>();
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String logFileName(long)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
virtualinvoke v.<java.io.File: boolean delete()>();
v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LogWriter descriptorLog> = null;
label:
throw v;
label:
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void appendVersion(org.iq.leveldb.impl.Version)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getLogNumber()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.iq.leveldb.impl.VersionSet: long logNumber> = v;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getPreviousLogNumber()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.iq.leveldb.impl.VersionSet: long prevLogNumber> = v;
return;
catch java.io.IOException from label to label with label;
}
private void writeSnapshot(org.iq.leveldb.impl.LogWriter) throws java.io.IOException
{
org.iq.leveldb.util.Slice v;
org.iq.leveldb.impl.VersionEdit v;
org.iq.leveldb.impl.InternalKeyComparator v;
com.google.common.collect.Multimap v;
java.util.Map v;
org.iq.leveldb.impl.LogWriter v;
org.iq.leveldb.impl.Version v;
java.lang.String v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.LogWriter;
v = new org.iq.leveldb.impl.VersionEdit;
specialinvoke v.<org.iq.leveldb.impl.VersionEdit: void <init>()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: java.lang.String name()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setComparatorName(java.lang.String)>(v);
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map compactPointers>;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setCompactPointers(java.util.Map)>(v);
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: com.google.common.collect.Multimap getFiles()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void addFiles(com.google.common.collect.Multimap)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: org.iq.leveldb.util.Slice encode()>();
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void addRecord(org.iq.leveldb.util.Slice,boolean)>(v, 0);
return;
}
public void recover() throws java.io.IOException
{
java.lang.IllegalStateException v;
org.iq.leveldb.util.Slice v;
org.iq.leveldb.impl.LogReader v;
org.iq.leveldb.impl.LogMonitor v;
java.lang.Long v, v, v, v;
boolean v, v, v, v, v;
org.iq.leveldb.impl.VersionSet v;
com.google.common.base.Joiner v;
java.lang.Throwable v, v;
java.lang.Object[] v;
org.iq.leveldb.impl.VersionEdit v;
long v, v, v, v, v, v;
java.util.ArrayList v;
java.nio.charset.Charset v;
int v, v, v, v;
java.lang.String v, v, v, v, v, v, v;
java.lang.Long[] v, v, v, v;
char v;
java.io.FileInputStream v;
java.lang.RuntimeException v;
org.iq.leveldb.impl.InternalKeyComparator v;
java.io.File v, v, v, v;
java.util.concurrent.atomic.AtomicLong v;
java.lang.Object v, v, v, v;
org.iq.leveldb.impl.Version v, v;
java.nio.channels.FileChannel v;
org.iq.leveldb.impl.VersionSet$Builder v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = new java.io.File;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String currentFileName()>();
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = virtualinvoke v.<java.io.File: boolean exists()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean,java.lang.Object)>(v, "CURRENT file does not exist");
v = <com.google.common.base.Charsets: java.nio.charset.Charset UTF_8>;
v = staticinvoke <com.google.common.io.Files: java.lang.String toString(java.io.File,java.nio.charset.Charset)>(v, v);
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v == 10 goto label;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("CURRENT file does not end with newline");
throw v;
label:
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = new java.io.FileInputStream;
v = new java.io.File;
v = v.<org.iq.leveldb.impl.VersionSet: java.io.File databaseDir>;
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
specialinvoke v.<java.io.FileInputStream: void <init>(java.io.File)>(v);
label:
v = virtualinvoke v.<java.io.FileInputStream: java.nio.channels.FileChannel getChannel()>();
label:
v = new org.iq.leveldb.impl.VersionSet$Builder;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
specialinvoke v.<org.iq.leveldb.impl.VersionSet$Builder: void <init>(org.iq.leveldb.impl.VersionSet,org.iq.leveldb.impl.Version)>(v, v);
v = new org.iq.leveldb.impl.LogReader;
v = staticinvoke <org.iq.leveldb.impl.LogMonitors: org.iq.leveldb.impl.LogMonitor throwExceptionMonitor()>();
specialinvoke v.<org.iq.leveldb.impl.LogReader: void <init>(java.nio.channels.FileChannel,org.iq.leveldb.impl.LogMonitor,boolean,long)>(v, v, 1, 0L);
v = virtualinvoke v.<org.iq.leveldb.impl.LogReader: org.iq.leveldb.util.Slice readRecord()>();
label:
if v == null goto label;
v = new org.iq.leveldb.impl.VersionEdit;
specialinvoke v.<org.iq.leveldb.impl.VersionEdit: void <init>(org.iq.leveldb.util.Slice)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.String getComparatorName()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: java.lang.String name()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = newarray (java.lang.Object)[2];
v[0] = v;
v[1] = v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object[])>(v, "Expected user comparator %s to match existing database comparator ", v);
virtualinvoke v.<org.iq.leveldb.impl.VersionSet$Builder: void apply(org.iq.leveldb.impl.VersionEdit)>(v);
v = newarray (java.lang.Long)[2];
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getLogNumber()>();
v[0] = v;
v[1] = null;
v = staticinvoke <org.iq.leveldb.impl.VersionSet: java.lang.Object coalesce(java.lang.Object[])>(v);
v = newarray (java.lang.Long)[2];
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getPreviousLogNumber()>();
v[0] = v;
v[1] = null;
v = staticinvoke <org.iq.leveldb.impl.VersionSet: java.lang.Object coalesce(java.lang.Object[])>(v);
v = newarray (java.lang.Long)[2];
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getNextFileNumber()>();
v[0] = v;
v[1] = null;
v = staticinvoke <org.iq.leveldb.impl.VersionSet: java.lang.Object coalesce(java.lang.Object[])>(v);
v = newarray (java.lang.Long)[2];
v = virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: java.lang.Long getLastSequenceNumber()>();
v[0] = v;
v[1] = null;
v = staticinvoke <org.iq.leveldb.impl.VersionSet: java.lang.Object coalesce(java.lang.Object[])>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.LogReader: org.iq.leveldb.util.Slice readRecord()>();
goto label;
label:
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList()>();
if v != null goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("Descriptor does not contain a meta-nextfile entry");
label:
if v != null goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("Descriptor does not contain a meta-lognumber entry");
label:
if v != null goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("Descriptor does not contain a last-sequence-number entry");
label:
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = new java.lang.RuntimeException;
v = staticinvoke <com.google.common.base.Joiner: com.google.common.base.Joiner on(java.lang.String)>("\n\t");
v = virtualinvoke v.<com.google.common.base.Joiner: java.lang.String join(java.lang.Iterable)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Corruption: \n\t\u0001");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
if v != null goto label;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(0L);
label:
v = new org.iq.leveldb.impl.Version;
specialinvoke v.<org.iq.leveldb.impl.Version: void <init>(org.iq.leveldb.impl.VersionSet)>(v);
virtualinvoke v.<org.iq.leveldb.impl.VersionSet$Builder: void saveTo(org.iq.leveldb.impl.Version)>(v);
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void finalizeVersion(org.iq.leveldb.impl.Version)>(v);
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void appendVersion(org.iq.leveldb.impl.Version)>(v);
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.iq.leveldb.impl.VersionSet: long manifestFileNumber> = v;
v = v.<org.iq.leveldb.impl.VersionSet: java.util.concurrent.atomic.AtomicLong nextFileNumber>;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = v + 1L;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLong: void set(long)>(v);
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.iq.leveldb.impl.VersionSet: long lastSequence> = v;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.iq.leveldb.impl.VersionSet: long logNumber> = v;
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.iq.leveldb.impl.VersionSet: long prevLogNumber> = v;
label:
if v == null goto label;
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
virtualinvoke v.<java.io.FileInputStream: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void finalizeVersion(org.iq.leveldb.impl.Version)
{
long v, v;
byte v;
int v, v, v, v, v, v;
boolean v;
double v, v, v, v, v;
java.util.Iterator v;
java.util.List v;
java.lang.Object v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: org.iq.leveldb.impl.Version;
v = (int) -1;
v = v;
v = -1.0;
v = 0;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int numberOfLevels()>();
v = v - 1;
if v >= v goto label;
if v != 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int numberOfFilesInLevel(int)>(v);
v = 1.0 * v;
v = v / 4.0;
goto label;
label:
v = 0L;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getFiles(int)>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getFileSize()>();
v = v + v;
goto label;
label:
v = 1.0 * v;
v = staticinvoke <org.iq.leveldb.impl.VersionSet: double maxBytesForLevel(int)>(v);
v = v / v;
label:
v = v cmpl v;
if v <= 0 goto label;
v = v;
v = v;
label:
v = v + 1;
goto label;
label:
virtualinvoke v.<org.iq.leveldb.impl.Version: void setCompactionLevel(int)>(v);
virtualinvoke v.<org.iq.leveldb.impl.Version: void setCompactionScore(double)>(v);
return;
}
private static transient java.lang.Object coalesce(java.lang.Object[])
{
java.lang.Object[] v;
int v, v;
java.lang.Object v;
v := @parameter: java.lang.Object[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
if v == null goto label;
return v;
label:
v = v + 1;
goto label;
label:
return null;
}
public java.util.List getLiveFiles()
{
java.util.Iterator v;
java.util.Collection v;
java.util.Set v;
com.google.common.collect.Multimap v;
com.google.common.collect.ImmutableList v;
java.util.Map v;
java.lang.Object v;
org.iq.leveldb.impl.VersionSet v;
boolean v;
com.google.common.collect.ImmutableList$Builder v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList$Builder builder()>();
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map activeVersions>;
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Version: com.google.common.collect.Multimap getFiles()>();
v = interfaceinvoke v.<com.google.common.collect.Multimap: java.util.Collection values()>();
virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList$Builder addAll(java.lang.Iterable)>(v);
goto label;
label:
v = virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList build()>();
return v;
}
private static double maxBytesForLevel(int)
{
int v;
double v;
v := @parameter: int;
v = 1.048576E7;
label:
if v <= 1 goto label;
v = v * 10.0;
v = v - 1;
goto label;
label:
return v;
}
public static long maxFileSizeForLevel(int)
{
int v;
v := @parameter: int;
return 2097152L;
}
public boolean needsCompaction()
{
org.iq.leveldb.impl.FileMetaData v;
byte v;
org.iq.leveldb.impl.Version v, v;
org.iq.leveldb.impl.VersionSet v;
boolean v;
double v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: double getCompactionScore()>();
v = v cmpl 1.0;
if v >= 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: org.iq.leveldb.impl.FileMetaData getFileToCompact()>();
if v == null goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public org.iq.leveldb.impl.Compaction compactRange(int, org.iq.leveldb.impl.InternalKey, org.iq.leveldb.impl.InternalKey)
{
java.util.List v;
org.iq.leveldb.impl.InternalKey v, v;
int v;
org.iq.leveldb.impl.Compaction v;
org.iq.leveldb.impl.VersionSet v;
boolean v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: int;
v := @parameter: org.iq.leveldb.impl.InternalKey;
v := @parameter: org.iq.leveldb.impl.InternalKey;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
return null;
label:
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Compaction setupOtherInputs(int,java.util.List)>(v, v);
return v;
}
public org.iq.leveldb.impl.Compaction pickCompaction()
{
org.iq.leveldb.impl.FileMetaData v, v;
java.util.List[] v;
java.lang.Integer v, v;
byte v;
java.util.Map v, v;
boolean v, v, v, v, v, v, v, v, v, v;
org.iq.leveldb.impl.Compaction v;
java.util.List v, v, v;
org.iq.leveldb.impl.VersionSet v;
org.iq.leveldb.impl.InternalKey v;
int v, v, v;
double v;
java.util.Map$Entry v;
java.util.Iterator v;
org.iq.leveldb.impl.InternalKeyComparator v;
java.lang.Object v, v, v, v, v;
org.iq.leveldb.impl.Version v, v, v, v, v, v, v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: double getCompactionScore()>();
v = v cmpl 1.0;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: org.iq.leveldb.impl.FileMetaData getFileToCompact()>();
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int getCompactionLevel()>();
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v + 1;
if v >= 7 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getFiles(int)>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map compactPointers>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getLargest()>();
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map compactPointers>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: int compare(org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v);
if v <= 0 goto label;
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getFiles(int)>(v);
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int getFileToCompactLevel()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: org.iq.leveldb.impl.FileMetaData getFileToCompact()>();
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList of(java.lang.Object)>(v);
goto label;
label:
return null;
label:
if v != 0 goto label;
v = newarray (java.util.List)[1];
v[0] = v;
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.Map$Entry getRange(java.util.List[])>(v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(0, v, v);
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
label:
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Compaction setupOtherInputs(int,java.util.List)>(v, v);
return v;
}
private org.iq.leveldb.impl.Compaction setupOtherInputs(int, java.util.List)
{
java.util.List[] v, v, v, v;
java.lang.Integer v;
java.util.Map v;
boolean v;
org.iq.leveldb.impl.Compaction v;
java.util.List v, v, v, v, v;
org.iq.leveldb.impl.VersionSet v;
org.iq.leveldb.impl.VersionEdit v;
int v, v, v, v, v, v, v, v, v;
java.util.Map$Entry v, v, v, v;
java.lang.Object v, v, v, v, v, v;
org.iq.leveldb.impl.Version v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: int;
v := @parameter: java.util.List;
v = newarray (java.util.List)[1];
v[0] = v;
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.Map$Entry getRange(java.util.List[])>(v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = v + 1;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
v = newarray (java.util.List)[2];
v[0] = v;
v[1] = v;
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.Map$Entry getRange(java.util.List[])>(v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= v goto label;
v = newarray (java.util.List)[1];
v[0] = v;
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.Map$Entry getRange(java.util.List[])>(v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = v + 1;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v != v goto label;
v = v;
v = v;
v = v;
v = newarray (java.util.List)[2];
v[0] = v;
v[1] = v;
v = specialinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.Map$Entry getRange(java.util.List[])>(v);
interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
label:
v = null;
v = v + 2;
if v >= 7 goto label;
v = v + 2;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
label:
v = new org.iq.leveldb.impl.Compaction;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
specialinvoke v.<org.iq.leveldb.impl.Compaction: void <init>(org.iq.leveldb.impl.Version,int,java.util.List,java.util.List,java.util.List)>(v, v, v, v, v);
v = v.<org.iq.leveldb.impl.VersionSet: java.util.Map compactPointers>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setCompactPointer(int,org.iq.leveldb.impl.InternalKey)>(v, v);
return v;
}
java.util.List getOverlappingInputs(int, org.iq.leveldb.impl.InternalKey, org.iq.leveldb.impl.InternalKey)
{
org.iq.leveldb.util.Slice v, v, v, v;
com.google.common.collect.ImmutableList v;
org.iq.leveldb.impl.InternalKey v, v, v, v;
org.iq.leveldb.table.UserComparator v;
int v, v, v;
boolean v;
java.util.Iterator v;
org.iq.leveldb.impl.InternalKeyComparator v;
java.util.List v;
java.lang.Object v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
com.google.common.collect.ImmutableList$Builder v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: int;
v := @parameter: org.iq.leveldb.impl.InternalKey;
v := @parameter: org.iq.leveldb.impl.InternalKey;
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList$Builder builder()>();
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice getUserKey()>();
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice getUserKey()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: org.iq.leveldb.table.UserComparator getUserComparator()>();
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getFiles(int)>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getLargest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice getUserKey()>();
v = interfaceinvoke v.<org.iq.leveldb.table.UserComparator: int compare(java.lang.Object,java.lang.Object)>(v, v);
if v < 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getSmallest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice getUserKey()>();
v = interfaceinvoke v.<org.iq.leveldb.table.UserComparator: int compare(java.lang.Object,java.lang.Object)>(v, v);
if v > 0 goto label;
virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList$Builder add(java.lang.Object)>(v);
goto label;
label:
v = virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList build()>();
return v;
}
private transient java.util.Map$Entry getRange(java.util.List[])
{
java.util.List[] v;
org.iq.leveldb.impl.InternalKey v, v, v, v;
int v, v, v, v;
boolean v;
java.util.Map$Entry v;
java.util.Iterator v;
org.iq.leveldb.impl.InternalKeyComparator v, v;
java.util.List v;
java.lang.Object v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v := @parameter: java.util.List[];
v = null;
v = null;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
if v != null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getSmallest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getLargest()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getSmallest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: int compare(org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v);
if v >= 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getSmallest()>();
label:
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getLargest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: int compare(org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v);
if v <= 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getLargest()>();
goto label;
label:
v = v + 1;
goto label;
label:
v = staticinvoke <com.google.common.collect.Maps: java.util.Map$Entry immutableEntry(java.lang.Object,java.lang.Object)>(v, v);
return v;
}
public long getMaxNextLevelOverlappingBytes()
{
long v, v, v;
org.iq.leveldb.impl.InternalKey v, v;
int v, v;
boolean v, v;
java.util.Iterator v, v;
java.util.List v, v;
java.lang.Object v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.VersionSet;
v = 0L;
v = 1;
label:
if v >= 7 goto label;
v = v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version current>;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getFiles(int)>(v);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v + 1;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getSmallest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: org.iq.leveldb.impl.InternalKey getLargest()>();
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getOverlappingInputs(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
v = 0L;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getFileSize()>();
v = v + v;
goto label;
label:
v = staticinvoke <java.lang.Math: long max(long,long)>(v, v);
goto label;
label:
v = v + 1;
goto label;
label:
return v;
}
static void <clinit>()
{
java.lang.Class v;
boolean v, v;
v = class "Lorg/iq80/leveldb/impl/VersionSet;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<org.iq.leveldb.impl.VersionSet: boolean $assertionsDisabled> = v;
return;
}
}