public class org.iq.leveldb.impl.DbImpl extends java.lang.Object implements org.iq.leveldb.DB
{
private final org.iq.leveldb.Options options;
private final java.io.File databaseDir;
private final org.iq.leveldb.impl.TableCache tableCache;
private final org.iq.leveldb.impl.DbLock dbLock;
private final org.iq.leveldb.impl.VersionSet versions;
private final java.util.concurrent.atomic.AtomicBoolean shuttingDown;
private final java.util.concurrent.locks.ReentrantLock mutex;
private final java.util.concurrent.locks.Condition backgroundCondition;
private final java.util.List pendingOutputs;
private org.iq.leveldb.impl.LogWriter log;
private org.iq.leveldb.impl.MemTable memTable;
private org.iq.leveldb.impl.MemTable immutableMemTable;
private final org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator;
private volatile java.lang.Throwable backgroundException;
private final java.util.concurrent.ExecutorService compactionExecutor;
private java.util.concurrent.Future backgroundCompaction;
private org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction;
private final java.lang.Object suspensionMutex;
private int suspensionCounter;
public void <init>(org.iq.leveldb.Options, java.io.File) throws java.io.IOException
{
byte v, v, v;
java.lang.Long v;
org.iq.leveldb.Options v, v, v;
java.lang.Throwable v;
java.lang.Object[] v, v, v, v;
org.iq.leveldb.impl.VersionEdit v;
org.iq.leveldb.impl.InternalUserComparator v;
long v, v, v, v, v, v, v, v, v, v;
org.iq.leveldb.impl.Filename$FileInfo v;
java.util.ArrayList v, v;
org.iq.leveldb.table.BytewiseComparator v;
java.lang.String v, v, v;
org.iq.leveldb.impl.TableCache v, v;
org.iq.leveldb.CompressionType v, v, v;
org.iq.leveldb.impl.InternalKeyComparator v, v, v, v;
java.io.File v, v, v, v;
org.iq.leveldb.impl.DbLock v;
org.iq.leveldb.impl.MemTable v;
org.iq.leveldb.table.UserComparator v;
org.iq.leveldb.impl.DbImpl v;
java.util.concurrent.ThreadFactory v;
boolean v, v, v, v, v, v, v, v, v, v;
org.iq.leveldb.impl.DbImpl$1 v;
java.util.List v;
org.iq.leveldb.table.CustomUserComparator v;
org.iq.leveldb.DBComparator v;
org.iq.leveldb.impl.LogWriter v, v;
org.iq.leveldb.impl.VersionSet v, v, v, v, v, v, v, v;
com.google.common.util.concurrent.ThreadFactoryBuilder v, v, v;
java.util.concurrent.atomic.AtomicBoolean v;
org.iq.leveldb.impl.Filename$FileType v, v;
int v, v;
java.util.concurrent.ExecutorService v;
java.util.Iterator v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v, v;
java.util.concurrent.locks.Condition v;
java.lang.Object v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.Options;
v := @parameter: java.io.File;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown> = v;
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex> = v;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: java.util.concurrent.locks.Condition newCondition()>();
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition> = v;
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList()>();
v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.iq.leveldb.impl.DbImpl: java.lang.Object suspensionMutex> = v;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "options is null");
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "databaseDir is null");
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options> = v;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options>;
v = virtualinvoke v.<org.iq.leveldb.Options: org.iq.leveldb.CompressionType compressionType()>();
v = <org.iq.leveldb.CompressionType: org.iq.leveldb.CompressionType SNAPPY>;
if v != v goto label;
v = staticinvoke <org.iq.leveldb.util.Snappy: boolean available()>();
if v != 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options>;
v = <org.iq.leveldb.CompressionType: org.iq.leveldb.CompressionType NONE>;
virtualinvoke v.<org.iq.leveldb.Options: org.iq.leveldb.Options compressionType(org.iq.leveldb.CompressionType)>(v);
label:
v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir> = v;
v = virtualinvoke v.<org.iq.leveldb.Options: org.iq.leveldb.DBComparator comparator()>();
if v == null goto label;
v = new org.iq.leveldb.table.CustomUserComparator;
specialinvoke v.<org.iq.leveldb.table.CustomUserComparator: void <init>(org.iq.leveldb.DBComparator)>(v);
v = v;
goto label;
label:
v = new org.iq.leveldb.table.BytewiseComparator;
specialinvoke v.<org.iq.leveldb.table.BytewiseComparator: void <init>()>();
v = v;
label:
v = new org.iq.leveldb.impl.InternalKeyComparator;
specialinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: void <init>(org.iq.leveldb.table.UserComparator)>(v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator> = v;
v = new org.iq.leveldb.impl.MemTable;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.MemTable: void <init>(org.iq.leveldb.impl.InternalKeyComparator)>(v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable> = v;
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable> = null;
v = new com.google.common.util.concurrent.ThreadFactoryBuilder;
specialinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: void <init>()>();
v = virtualinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: com.google.common.util.concurrent.ThreadFactoryBuilder setNameFormat(java.lang.String)>("leveldb-compaction-%s");
v = new org.iq.leveldb.impl.DbImpl$1;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$1: void <init>(org.iq.leveldb.impl.DbImpl)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: com.google.common.util.concurrent.ThreadFactoryBuilder setUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: java.util.concurrent.ThreadFactory build()>();
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ExecutorService newSingleThreadExecutor(java.util.concurrent.ThreadFactory)>(v);
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.ExecutorService compactionExecutor> = v;
v = virtualinvoke v.<org.iq.leveldb.Options: int maxOpenFiles()>();
v = v - 10;
v = new org.iq.leveldb.impl.TableCache;
v = new org.iq.leveldb.impl.InternalUserComparator;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.InternalUserComparator: void <init>(org.iq.leveldb.impl.InternalKeyComparator)>(v);
v = virtualinvoke v.<org.iq.leveldb.Options: boolean verifyChecksums()>();
specialinvoke v.<org.iq.leveldb.impl.TableCache: void <init>(java.io.File,int,org.iq.leveldb.table.UserComparator,boolean)>(v, v, v, v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.TableCache tableCache> = v;
virtualinvoke v.<java.io.File: boolean mkdirs()>();
v = virtualinvoke v.<java.io.File: boolean exists()>();
v = newarray (java.lang.Object)[1];
v[0] = v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object[])>(v, "Database directory \'%s\' does not exist and could not be created", v);
v = virtualinvoke v.<java.io.File: boolean isDirectory()>();
v = newarray (java.lang.Object)[1];
v[0] = v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object[])>(v, "Database directory \'%s\' is not a directory", v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = new org.iq.leveldb.impl.DbLock;
v = new java.io.File;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String lockFileName()>();
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
specialinvoke v.<org.iq.leveldb.impl.DbLock: void <init>(java.io.File)>(v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbLock dbLock> = v;
v = new java.io.File;
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 canRead()>();
if v != 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.Options: boolean createIfMissing()>();
v = newarray (java.lang.Object)[1];
v[0] = v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object[])>(v, "Database \'%s\' does not exist and the create if missing option is disabled", v);
goto label;
label:
v = virtualinvoke v.<org.iq.leveldb.Options: boolean errorIfExists()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = newarray (java.lang.Object)[1];
v[0] = v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object[])>(v, "Database \'%s\' exists and the error if exists option is enabled", v);
label:
v = new org.iq.leveldb.impl.VersionSet;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.TableCache tableCache>;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.VersionSet: void <init>(java.io.File,org.iq.leveldb.impl.TableCache,org.iq.leveldb.impl.InternalKeyComparator)>(v, v, v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions> = v;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void recover()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLogNumber()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getPrevLogNumber()>();
v = staticinvoke <org.iq.leveldb.impl.Filename: java.util.List listFiles(java.io.File)>(v);
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList()>();
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 = staticinvoke <org.iq.leveldb.impl.Filename: org.iq.leveldb.impl.Filename$FileInfo parseFileName(java.io.File)>(v);
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: org.iq.leveldb.impl.Filename$FileType getFileType()>();
v = <org.iq.leveldb.impl.Filename$FileType: org.iq.leveldb.impl.Filename$FileType LOG>;
if v != v goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: long getFileNumber()>();
v = v cmp v;
if v >= 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: long getFileNumber()>();
v = v cmp v;
if v != 0 goto label;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: long getFileNumber()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new org.iq.leveldb.impl.VersionEdit;
specialinvoke v.<org.iq.leveldb.impl.VersionEdit: void <init>()>();
staticinvoke <java.util.Collections: void sort(java.util.List)>(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.<java.lang.Long: long longValue()>();
v = specialinvoke v.<org.iq.leveldb.impl.DbImpl: long recoverLogFile(long,org.iq.leveldb.impl.VersionEdit)>(v, v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLastSequence()>();
v = v cmp v;
if v >= 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void setLastSequence(long)>(v);
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getNextFileNumber()>();
v = new java.io.File;
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);
v = staticinvoke <org.iq.leveldb.impl.Logs: org.iq.leveldb.impl.LogWriter createLogWriter(java.io.File,long)>(v, v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log> = v;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log>;
v = interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: long getFileNumber()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setLogNumber(long)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void logAndApply(org.iq.leveldb.impl.VersionEdit)>(v);
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void deleteObsoleteFiles()>();
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void close()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.Future v;
java.lang.Thread v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.TableCache v;
java.util.concurrent.ExecutorService v, v;
boolean v;
java.util.concurrent.locks.ReentrantLock v, v, v;
java.io.IOException v, v;
org.iq.leveldb.impl.DbLock v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.locks.Condition v;
java.lang.InterruptedException v;
org.iq.leveldb.impl.LogWriter v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean getAndSet(boolean)>(1);
if v == 0 goto label;
return;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.Future backgroundCompaction>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void awaitUninterruptibly()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.ExecutorService compactionExecutor>;
interfaceinvoke v.<java.util.concurrent.ExecutorService: void shutdown()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.ExecutorService compactionExecutor>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit DAYS>;
interfaceinvoke v.<java.util.concurrent.ExecutorService: boolean awaitTermination(long,java.util.concurrent.TimeUnit)>(1L, v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void destroy()>();
label:
goto label;
label:
v := @caughtexception;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log>;
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void close()>();
label:
goto label;
label:
v := @caughtexception;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.TableCache tableCache>;
virtualinvoke v.<org.iq.leveldb.impl.TableCache: void close()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbLock dbLock>;
virtualinvoke v.<org.iq.leveldb.impl.DbLock: void release()>();
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
}
public java.lang.String getProperty(java.lang.String)
{
java.lang.String v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: java.lang.String;
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: void checkBackgroundException()>();
return null;
}
private void deleteObsoleteFiles()
{
byte v, v, v;
int[] v;
java.lang.Long v, v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v, v, v, v, v;
java.util.List v, v, v;
org.iq.leveldb.impl.VersionSet v, v, v, v;
long v, v, v, v, v;
org.iq.leveldb.impl.Filename$FileInfo v;
java.util.ArrayList v;
org.iq.leveldb.impl.Filename$FileType v, v, v;
int v, v;
org.iq.leveldb.impl.TableCache v;
java.util.Iterator v, v;
java.util.concurrent.locks.ReentrantLock v;
java.io.File v;
java.lang.Object v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs>;
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList(java.lang.Iterable)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: java.util.List getLiveFiles()>();
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 getNumber()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.util.List listFiles(java.io.File)>(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 = staticinvoke <org.iq.leveldb.impl.Filename: org.iq.leveldb.impl.Filename$FileInfo parseFileName(java.io.File)>(v);
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: long getFileNumber()>();
v = 1;
v = <org.iq.leveldb.impl.DbImpl$6: int[] $SwitchMap$org$iq80$leveldb$impl$Filename$FileType>;
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: org.iq.leveldb.impl.Filename$FileType getFileType()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileType: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
default: goto label;
};
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLogNumber()>();
v = v cmp v;
if v >= 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getPrevLogNumber()>();
v = v cmp v;
if v != 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = v;
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getManifestFileNumber()>();
v = v cmp v;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
goto label;
label:
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
goto label;
label:
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
goto label;
label:
v = 1;
label:
if v != 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Filename$FileInfo: org.iq.leveldb.impl.Filename$FileType getFileType()>();
v = <org.iq.leveldb.impl.Filename$FileType: org.iq.leveldb.impl.Filename$FileType TABLE>;
if v != v goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.TableCache tableCache>;
virtualinvoke v.<org.iq.leveldb.impl.TableCache: void evict(long)>(v);
label:
virtualinvoke v.<java.io.File: boolean delete()>();
goto label;
label:
return;
}
public void flushMemTable()
{
java.lang.Throwable v;
org.iq.leveldb.impl.MemTable v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.ReentrantLock v, v, v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void makeRoomForWrite(boolean)>(1);
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void awaitUninterruptibly()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void compactRange(int, org.iq.leveldb.util.Slice, org.iq.leveldb.util.Slice)
{
java.lang.Throwable v;
org.iq.leveldb.util.Slice v, v;
java.lang.Object[] v;
org.iq.leveldb.impl.DbImpl$ManualCompaction v, v, v;
java.lang.Integer v;
int v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v;
java.util.concurrent.locks.ReentrantLock v, v, v;
java.util.concurrent.locks.Condition v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: int;
v := @parameter: org.iq.leveldb.util.Slice;
v := @parameter: org.iq.leveldb.util.Slice;
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, "level is negative");
v = v + 1;
if v >= 7 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = newarray (java.lang.Object)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(7);
v[0] = v;
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object[])>(v, "level is greater than or equal to %s", v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "start is null");
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "end is null");
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void awaitUninterruptibly()>();
goto label;
label:
v = new org.iq.leveldb.impl.DbImpl$ManualCompaction;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$ManualCompaction: void <init>(int,org.iq.leveldb.util.Slice,org.iq.leveldb.util.Slice)>(v, v, v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction> = v;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
if v != v goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void awaitUninterruptibly()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void maybeScheduleCompaction()
{
java.util.concurrent.locks.ReentrantLock v;
org.iq.leveldb.impl.DbImpl$ManualCompaction v;
java.util.concurrent.atomic.AtomicBoolean v;
org.iq.leveldb.impl.DbImpl$2 v;
org.iq.leveldb.impl.MemTable v;
java.util.concurrent.Future v, v;
org.iq.leveldb.impl.DbImpl v;
java.util.concurrent.ExecutorService v;
org.iq.leveldb.impl.VersionSet v;
boolean v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.Future backgroundCompaction>;
if v != null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
if v != null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
if v != null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: boolean needsCompaction()>();
if v == 0 goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.ExecutorService compactionExecutor>;
v = new org.iq.leveldb.impl.DbImpl$2;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$2: void <init>(org.iq.leveldb.impl.DbImpl)>(v);
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.concurrent.Future submit(java.util.concurrent.Callable)>(v);
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.Future backgroundCompaction> = v;
label:
return;
}
public void checkBackgroundException()
{
java.lang.Throwable v;
org.iq.leveldb.impl.DbImpl$BackgroundProcessingException v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.lang.Throwable backgroundException>;
if v == null goto label;
v = new org.iq.leveldb.impl.DbImpl$BackgroundProcessingException;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$BackgroundProcessingException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
}
private void backgroundCall() throws java.io.IOException
{
java.util.concurrent.Future v;
org.iq.leveldb.impl.DbImpl v;
boolean v;
java.lang.Throwable v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.locks.ReentrantLock v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.locks.Condition v, v, v, v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.Future backgroundCompaction>;
if v != null goto label;
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
v := @caughtexception;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
throw v;
label:
return;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void backgroundCompaction()>();
label:
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.Future backgroundCompaction> = null;
goto label;
label:
v := @caughtexception;
v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.Future backgroundCompaction> = null;
throw v;
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
v := @caughtexception;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
throw v;
label:
v := @caughtexception;
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
v := @caughtexception;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
throw v;
label:
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void backgroundCompaction() throws java.io.IOException
{
org.iq.leveldb.util.Slice v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v, v;
org.iq.leveldb.impl.Compaction v;
java.util.List v, v;
org.iq.leveldb.impl.VersionSet v, v, v;
org.iq.leveldb.impl.DbImpl$ManualCompaction v, v, v, v, v, v;
org.iq.leveldb.impl.VersionEdit v, v, v;
long v;
org.iq.leveldb.impl.DbImpl$CompactionState v;
org.iq.leveldb.impl.InternalKey v, v;
int v, v, v, v, v;
org.iq.leveldb.impl.ValueType v, v;
java.util.concurrent.locks.ReentrantLock v;
java.lang.Object v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void compactMemTableInternal()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
v = v.<org.iq.leveldb.impl.DbImpl$ManualCompaction: int level>;
v = new org.iq.leveldb.impl.InternalKey;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
v = v.<org.iq.leveldb.impl.DbImpl$ManualCompaction: org.iq.leveldb.util.Slice begin>;
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType VALUE>;
specialinvoke v.<org.iq.leveldb.impl.InternalKey: void <init>(org.iq.leveldb.util.Slice,long,org.iq.leveldb.impl.ValueType)>(v, 72057594037927935L, v);
v = new org.iq.leveldb.impl.InternalKey;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
v = v.<org.iq.leveldb.impl.DbImpl$ManualCompaction: org.iq.leveldb.util.Slice end>;
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType DELETION>;
specialinvoke v.<org.iq.leveldb.impl.InternalKey: void <init>(org.iq.leveldb.util.Slice,long,org.iq.leveldb.impl.ValueType)>(v, 0L, v);
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Compaction compactRange(int,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v);
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Compaction pickCompaction()>();
label:
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
if v != null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: boolean isTrivialMove()>();
if v == 0 goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: java.util.List getLevelInputs()>();
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: java.util.List getLevelInputs()>();
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: int getLevel()>();
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getNumber()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void deleteFile(int,long)>(v, v);
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: int getLevel()>();
v = v + 1;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void addFile(int,org.iq.leveldb.impl.FileMetaData)>(v, v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void logAndApply(org.iq.leveldb.impl.VersionEdit)>(v);
goto label;
label:
v = new org.iq.leveldb.impl.DbImpl$CompactionState;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$CompactionState: void <init>(org.iq.leveldb.impl.Compaction)>(v);
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void doCompactionWork(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void cleanupCompaction(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction>;
if v == null goto label;
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.DbImpl$ManualCompaction manualCompaction> = null;
label:
return;
}
private void cleanupCompaction(org.iq.leveldb.impl.DbImpl$CompactionState)
{
java.util.Iterator v;
java.util.concurrent.locks.ReentrantLock v;
long v;
org.iq.leveldb.table.TableBuilder v, v;
java.util.List v, v;
org.iq.leveldb.impl.DbImpl$CompactionState v;
java.lang.Long v;
java.lang.Object v;
org.iq.leveldb.impl.DbImpl v;
java.nio.channels.FileChannel v;
boolean v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.DbImpl$CompactionState;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
virtualinvoke v.<org.iq.leveldb.table.TableBuilder: void abandon()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
label:
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.util.List outputs>;
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.DbImpl: java.util.List pendingOutputs>;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getNumber()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean remove(java.lang.Object)>(v);
goto label;
label:
return;
}
private long recoverLogFile(long, org.iq.leveldb.impl.VersionEdit) throws java.io.IOException
{
org.iq.leveldb.util.Slice v;
org.iq.leveldb.impl.LogReader v;
org.iq.leveldb.impl.LogMonitor v;
byte v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v;
org.iq.leveldb.impl.DbImpl$InsertIntoHandler v;
org.iq.leveldb.Options v;
java.lang.Throwable v, v;
org.iq.leveldb.impl.VersionEdit v;
long v, v, v, v, v, v, v;
org.iq.leveldb.util.SliceInput v;
int v, v, v, v;
java.lang.String v;
java.util.concurrent.locks.ReentrantLock v;
org.iq.leveldb.impl.WriteBatchImpl v;
java.io.FileInputStream v;
org.iq.leveldb.impl.InternalKeyComparator v;
java.io.File v, v;
org.iq.leveldb.impl.MemTable v, v;
java.nio.channels.FileChannel v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: long;
v := @parameter: org.iq.leveldb.impl.VersionEdit;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = new java.io.File;
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
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);
v = new java.io.FileInputStream;
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 = staticinvoke <org.iq.leveldb.impl.LogMonitors: org.iq.leveldb.impl.LogMonitor logMonitor()>();
v = new org.iq.leveldb.impl.LogReader;
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 = 0L;
v = null;
v = virtualinvoke v.<org.iq.leveldb.impl.LogReader: org.iq.leveldb.util.Slice readRecord()>();
label:
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.util.Slice: org.iq.leveldb.util.SliceInput input()>();
v = virtualinvoke v.<org.iq.leveldb.util.SliceInput: int available()>();
if v >= 12 goto label;
v = virtualinvoke v.<org.iq.leveldb.util.SliceInput: int available()>();
interfaceinvoke v.<org.iq.leveldb.impl.LogMonitor: void corruption(long,java.lang.String)>(v, "log record too small");
goto label;
label:
v = virtualinvoke v.<org.iq.leveldb.util.SliceInput: long readLong()>();
v = virtualinvoke v.<org.iq.leveldb.util.SliceInput: int readInt()>();
v = specialinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.WriteBatchImpl readWriteBatch(org.iq.leveldb.util.SliceInput,int)>(v, v);
if v != null goto label;
v = new org.iq.leveldb.impl.MemTable;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.MemTable: void <init>(org.iq.leveldb.impl.InternalKeyComparator)>(v);
v = v;
label:
v = new org.iq.leveldb.impl.DbImpl$InsertIntoHandler;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$InsertIntoHandler: void <init>(org.iq.leveldb.impl.MemTable,long)>(v, v);
virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void forEach(org.iq.leveldb.impl.WriteBatchImpl$Handler)>(v);
v = v + v;
v = v - 1L;
v = v cmp v;
if v <= 0 goto label;
v = v;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: long approximateMemoryUsage()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options>;
v = virtualinvoke v.<org.iq.leveldb.Options: int writeBufferSize()>();
v = v cmp v;
if v <= 0 goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void writeLevel0Table(org.iq.leveldb.impl.MemTable,org.iq.leveldb.impl.VersionEdit,org.iq.leveldb.impl.Version)>(v, v, null);
v = null;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.LogReader: org.iq.leveldb.util.Slice readRecord()>();
goto label;
label:
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: boolean isEmpty()>();
if v != 0 goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void writeLevel0Table(org.iq.leveldb.impl.MemTable,org.iq.leveldb.impl.VersionEdit,org.iq.leveldb.impl.Version)>(v, v, null);
label:
v = v;
label:
if v == null goto label;
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
label:
virtualinvoke v.<java.io.FileInputStream: void close()>();
return v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public byte[] get(byte[]) throws org.iq.leveldb.DBException
{
byte[] v, v;
org.iq.leveldb.ReadOptions v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v = new org.iq.leveldb.ReadOptions;
specialinvoke v.<org.iq.leveldb.ReadOptions: void <init>()>();
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: byte[] get(byte[],org.iq.leveldb.ReadOptions)>(v, v);
return v;
}
public byte[] get(byte[], org.iq.leveldb.ReadOptions) throws org.iq.leveldb.DBException
{
byte[] v, v, v, v;
org.iq.leveldb.util.Slice v, v, v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v;
org.iq.leveldb.impl.VersionSet v, v;
java.lang.Throwable v, v;
long v;
org.iq.leveldb.ReadOptions v;
org.iq.leveldb.impl.SnapshotImpl v;
java.util.concurrent.locks.ReentrantLock v, v, v, v, v, v, v, v, v, v;
org.iq.leveldb.impl.LookupKey v;
org.iq.leveldb.impl.MemTable v, v, v;
org.iq.leveldb.impl.LookupResult v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v := @parameter: org.iq.leveldb.ReadOptions;
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: void checkBackgroundException()>();
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = specialinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.SnapshotImpl getSnapshot(org.iq.leveldb.ReadOptions)>(v);
v = new org.iq.leveldb.impl.LookupKey;
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice wrappedBuffer(byte[])>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.SnapshotImpl: long getLastSequence()>();
specialinvoke v.<org.iq.leveldb.impl.LookupKey: void <init>(org.iq.leveldb.util.Slice,long)>(v, v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable>;
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: org.iq.leveldb.impl.LookupResult get(org.iq.leveldb.impl.LookupKey)>(v);
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.LookupResult: org.iq.leveldb.util.Slice getValue()>();
if v != null goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return null;
label:
v = virtualinvoke v.<org.iq.leveldb.util.Slice: byte[] getBytes()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: org.iq.leveldb.impl.LookupResult get(org.iq.leveldb.impl.LookupKey)>(v);
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.LookupResult: org.iq.leveldb.util.Slice getValue()>();
if v != null goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return null;
label:
v = virtualinvoke v.<org.iq.leveldb.util.Slice: byte[] getBytes()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.LookupResult get(org.iq.leveldb.impl.LookupKey)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: boolean needsCompaction()>();
if v == 0 goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.LookupResult: org.iq.leveldb.util.Slice getValue()>();
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.util.Slice: byte[] getBytes()>();
return v;
label:
return null;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void put(byte[], byte[]) throws org.iq.leveldb.DBException
{
byte[] v, v;
org.iq.leveldb.WriteOptions v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v := @parameter: byte[];
v = new org.iq.leveldb.WriteOptions;
specialinvoke v.<org.iq.leveldb.WriteOptions: void <init>()>();
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Snapshot put(byte[],byte[],org.iq.leveldb.WriteOptions)>(v, v, v);
return;
}
public org.iq.leveldb.Snapshot put(byte[], byte[], org.iq.leveldb.WriteOptions) throws org.iq.leveldb.DBException
{
byte[] v, v;
org.iq.leveldb.WriteOptions v;
org.iq.leveldb.impl.WriteBatchImpl v, v;
org.iq.leveldb.Snapshot v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v := @parameter: byte[];
v := @parameter: org.iq.leveldb.WriteOptions;
v = new org.iq.leveldb.impl.WriteBatchImpl;
specialinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void <init>()>();
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: org.iq.leveldb.impl.WriteBatchImpl put(byte[],byte[])>(v, v);
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Snapshot writeInternal(org.iq.leveldb.impl.WriteBatchImpl,org.iq.leveldb.WriteOptions)>(v, v);
return v;
}
public void delete(byte[]) throws org.iq.leveldb.DBException
{
byte[] v;
org.iq.leveldb.WriteOptions v;
org.iq.leveldb.impl.WriteBatchImpl v, v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v = new org.iq.leveldb.impl.WriteBatchImpl;
specialinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void <init>()>();
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: org.iq.leveldb.impl.WriteBatchImpl delete(byte[])>(v);
v = new org.iq.leveldb.WriteOptions;
specialinvoke v.<org.iq.leveldb.WriteOptions: void <init>()>();
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Snapshot writeInternal(org.iq.leveldb.impl.WriteBatchImpl,org.iq.leveldb.WriteOptions)>(v, v);
return;
}
public org.iq.leveldb.Snapshot delete(byte[], org.iq.leveldb.WriteOptions) throws org.iq.leveldb.DBException
{
byte[] v;
org.iq.leveldb.WriteOptions v;
org.iq.leveldb.impl.WriteBatchImpl v, v;
org.iq.leveldb.Snapshot v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v := @parameter: org.iq.leveldb.WriteOptions;
v = new org.iq.leveldb.impl.WriteBatchImpl;
specialinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void <init>()>();
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: org.iq.leveldb.impl.WriteBatchImpl delete(byte[])>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Snapshot writeInternal(org.iq.leveldb.impl.WriteBatchImpl,org.iq.leveldb.WriteOptions)>(v, v);
return v;
}
public void write(org.iq.leveldb.WriteBatch) throws org.iq.leveldb.DBException
{
org.iq.leveldb.WriteBatch v;
org.iq.leveldb.WriteOptions v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.WriteBatch;
v = new org.iq.leveldb.WriteOptions;
specialinvoke v.<org.iq.leveldb.WriteOptions: void <init>()>();
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Snapshot writeInternal(org.iq.leveldb.impl.WriteBatchImpl,org.iq.leveldb.WriteOptions)>(v, v);
return;
}
public org.iq.leveldb.Snapshot write(org.iq.leveldb.WriteBatch, org.iq.leveldb.WriteOptions) throws org.iq.leveldb.DBException
{
org.iq.leveldb.WriteBatch v;
org.iq.leveldb.WriteOptions v;
org.iq.leveldb.Snapshot v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.WriteBatch;
v := @parameter: org.iq.leveldb.WriteOptions;
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Snapshot writeInternal(org.iq.leveldb.impl.WriteBatchImpl,org.iq.leveldb.WriteOptions)>(v, v);
return v;
}
public org.iq.leveldb.Snapshot writeInternal(org.iq.leveldb.impl.WriteBatchImpl, org.iq.leveldb.WriteOptions) throws org.iq.leveldb.DBException
{
java.lang.Throwable v;
org.iq.leveldb.util.Slice v;
long v, v, v, v;
org.iq.leveldb.impl.SnapshotImpl v;
int v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v;
org.iq.leveldb.WriteOptions v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
org.iq.leveldb.impl.DbImpl$InsertIntoHandler v;
org.iq.leveldb.impl.WriteBatchImpl v;
java.io.IOException v;
java.lang.RuntimeException v;
org.iq.leveldb.impl.MemTable v;
org.iq.leveldb.impl.LogWriter v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v, v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.WriteBatchImpl;
v := @parameter: org.iq.leveldb.WriteOptions;
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: void checkBackgroundException()>();
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: int size()>();
if v == 0 goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void makeRoomForWrite(boolean)>(0);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLastSequence()>();
v = v + 1L;
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: int size()>();
v = v + v;
v = v - 1L;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void setLastSequence(long)>(v);
v = specialinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.util.Slice writeWriteBatch(org.iq.leveldb.impl.WriteBatchImpl,long)>(v, v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log>;
v = virtualinvoke v.<org.iq.leveldb.WriteOptions: boolean sync()>();
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void addRecord(org.iq.leveldb.util.Slice,boolean)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <com.google.common.base.Throwables: java.lang.RuntimeException propagate(java.lang.Throwable)>(v);
throw v;
label:
v = new org.iq.leveldb.impl.DbImpl$InsertIntoHandler;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable>;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$InsertIntoHandler: void <init>(org.iq.leveldb.impl.MemTable,long)>(v, v);
virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void forEach(org.iq.leveldb.impl.WriteBatchImpl$Handler)>(v);
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLastSequence()>();
label:
v = virtualinvoke v.<org.iq.leveldb.WriteOptions: boolean snapshot()>();
if v == 0 goto label;
v = new org.iq.leveldb.impl.SnapshotImpl;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
specialinvoke v.<org.iq.leveldb.impl.SnapshotImpl: void <init>(org.iq.leveldb.impl.Version,long)>(v, v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return null;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public org.iq.leveldb.WriteBatch createWriteBatch()
{
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.WriteBatchImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: void checkBackgroundException()>();
v = new org.iq.leveldb.impl.WriteBatchImpl;
specialinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void <init>()>();
return v;
}
public org.iq.leveldb.impl.SeekingIteratorAdapter iterator()
{
org.iq.leveldb.impl.SeekingIteratorAdapter v;
org.iq.leveldb.ReadOptions v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = new org.iq.leveldb.ReadOptions;
specialinvoke v.<org.iq.leveldb.ReadOptions: void <init>()>();
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.SeekingIteratorAdapter iterator(org.iq.leveldb.ReadOptions)>(v);
return v;
}
public org.iq.leveldb.impl.SeekingIteratorAdapter iterator(org.iq.leveldb.ReadOptions)
{
java.lang.Throwable v;
org.iq.leveldb.util.DbIterator v;
java.util.concurrent.locks.ReentrantLock v, v, v;
org.iq.leveldb.ReadOptions v;
org.iq.leveldb.impl.InternalKeyComparator v;
org.iq.leveldb.impl.SnapshotSeekingIterator v;
org.iq.leveldb.impl.SeekingIteratorAdapter v;
org.iq.leveldb.impl.SnapshotImpl v;
org.iq.leveldb.table.UserComparator v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.ReadOptions;
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: void checkBackgroundException()>();
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.util.DbIterator internalIterator()>();
v = specialinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.SnapshotImpl getSnapshot(org.iq.leveldb.ReadOptions)>(v);
v = new org.iq.leveldb.impl.SnapshotSeekingIterator;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: org.iq.leveldb.table.UserComparator getUserComparator()>();
specialinvoke v.<org.iq.leveldb.impl.SnapshotSeekingIterator: void <init>(org.iq.leveldb.util.DbIterator,org.iq.leveldb.impl.SnapshotImpl,java.util.Comparator)>(v, v, v);
v = new org.iq.leveldb.impl.SeekingIteratorAdapter;
specialinvoke v.<org.iq.leveldb.impl.SeekingIteratorAdapter: void <init>(org.iq.leveldb.impl.SnapshotSeekingIterator)>(v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
org.iq.leveldb.impl.SeekingIterable internalIterable()
{
org.iq.leveldb.impl.DbImpl$3 v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = new org.iq.leveldb.impl.DbImpl$3;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$3: void <init>(org.iq.leveldb.impl.DbImpl)>(v);
return v;
}
org.iq.leveldb.util.DbIterator internalIterator()
{
java.lang.Throwable v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.util.DbIterator v;
java.util.concurrent.locks.ReentrantLock v, v, v;
org.iq.leveldb.impl.InternalKeyComparator v;
org.iq.leveldb.impl.MemTable$MemTableIterator v, v;
org.iq.leveldb.impl.MemTable v, v, v;
java.util.List v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = null;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: org.iq.leveldb.impl.MemTable$MemTableIterator iterator()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
v = new org.iq.leveldb.util.DbIterator;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable>;
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: org.iq.leveldb.impl.MemTable$MemTableIterator iterator()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getLevel0Files()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Version: java.util.List getLevelIterators()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.util.DbIterator: void <init>(org.iq.leveldb.impl.MemTable$MemTableIterator,org.iq.leveldb.impl.MemTable$MemTableIterator,java.util.List,java.util.List,java.util.Comparator)>(v, v, v, v, v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
public org.iq.leveldb.Snapshot getSnapshot()
{
java.lang.Throwable v;
java.util.concurrent.locks.ReentrantLock v, v, v;
long v;
org.iq.leveldb.impl.SnapshotImpl v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.VersionSet v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
virtualinvoke v.<org.iq.leveldb.impl.DbImpl: void checkBackgroundException()>();
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = new org.iq.leveldb.impl.SnapshotImpl;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLastSequence()>();
specialinvoke v.<org.iq.leveldb.impl.SnapshotImpl: void <init>(org.iq.leveldb.impl.Version,long)>(v, v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
return v;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
private org.iq.leveldb.impl.SnapshotImpl getSnapshot(org.iq.leveldb.ReadOptions)
{
long v;
org.iq.leveldb.Snapshot v, v;
org.iq.leveldb.ReadOptions v;
org.iq.leveldb.impl.SnapshotImpl v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.VersionSet v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.ReadOptions;
v = virtualinvoke v.<org.iq.leveldb.ReadOptions: org.iq.leveldb.Snapshot snapshot()>();
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.ReadOptions: org.iq.leveldb.Snapshot snapshot()>();
goto label;
label:
v = new org.iq.leveldb.impl.SnapshotImpl;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLastSequence()>();
specialinvoke v.<org.iq.leveldb.impl.SnapshotImpl: void <init>(org.iq.leveldb.impl.Version,long)>(v, v);
v = v;
virtualinvoke v.<org.iq.leveldb.impl.SnapshotImpl: void close()>();
label:
return v;
}
private void makeRoomForWrite(boolean)
{
byte v, v;
java.lang.Thread v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v, v, v, v;
org.iq.leveldb.Options v;
org.iq.leveldb.impl.LogWriter v, v, v;
org.iq.leveldb.impl.VersionSet v, v, v, v;
java.lang.Throwable v;
long v, v, v;
int v, v, v;
java.lang.String v, v, v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
java.io.IOException v, v;
java.lang.RuntimeException v, v, v;
org.iq.leveldb.impl.InternalKeyComparator v;
java.io.File v, v, v, v, v, v;
org.iq.leveldb.impl.MemTable v, v, v, v;
java.util.concurrent.locks.Condition v, v;
java.lang.InterruptedException v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: boolean;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
label:
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: int numberOfFilesInLevel(int)>(0);
if v <= 8 goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
staticinvoke <java.lang.Thread: void sleep(long)>(1L);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
throw v;
label:
v = 0;
goto label;
label:
if v != 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable>;
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: long approximateMemoryUsage()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options>;
v = virtualinvoke v.<org.iq.leveldb.Options: int writeBufferSize()>();
v = v cmp v;
if v <= 0 goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
if v == null goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void awaitUninterruptibly()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: int numberOfFilesInLevel(int)>(0);
if v < 12 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void awaitUninterruptibly()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getPrevLogNumber()>();
v = v cmp 0L;
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 = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log>;
interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: void close()>();
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log>;
v = interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: java.io.File getFile()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.io.File)>(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[])>("Unable to close log file \u0001");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getNextFileNumber()>();
label:
v = new java.io.File;
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
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);
v = staticinvoke <org.iq.leveldb.impl.Logs: org.iq.leveldb.impl.LogWriter createLogWriter(java.io.File,long)>(v, v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
v = new java.io.File;
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
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);
v = virtualinvoke v.<java.io.File: java.io.File getAbsoluteFile()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.io.File)>(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[])>("Unable to open new log file \u0001");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable>;
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable> = v;
v = new org.iq.leveldb.impl.MemTable;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.MemTable: void <init>(org.iq.leveldb.impl.InternalKeyComparator)>(v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable memTable> = v;
v = 0;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void maybeScheduleCompaction()>();
goto label;
label:
return;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
}
public void compactMemTable() throws java.io.IOException
{
java.lang.Throwable v;
java.util.concurrent.locks.ReentrantLock v, v, v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void compactMemTableInternal()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void compactMemTableInternal() throws java.io.IOException
{
java.lang.Throwable v;
org.iq.leveldb.impl.VersionEdit v;
java.util.concurrent.atomic.AtomicBoolean v;
long v;
org.iq.leveldb.impl.DbImpl$DatabaseShutdownException v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v;
java.util.concurrent.locks.ReentrantLock v;
org.iq.leveldb.impl.MemTable v, v;
java.util.concurrent.locks.Condition v, v;
org.iq.leveldb.impl.LogWriter v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
if v != null goto label;
return;
label:
v = new org.iq.leveldb.impl.VersionEdit;
specialinvoke v.<org.iq.leveldb.impl.VersionEdit: void <init>()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable>;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void writeLevel0Table(org.iq.leveldb.impl.MemTable,org.iq.leveldb.impl.VersionEdit,org.iq.leveldb.impl.Version)>(v, v, v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new org.iq.leveldb.impl.DbImpl$DatabaseShutdownException;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$DatabaseShutdownException: void <init>(java.lang.String)>("Database shutdown during memtable compaction");
throw v;
label:
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setPreviousLogNumber(long)>(0L);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.LogWriter log>;
v = interfaceinvoke v.<org.iq.leveldb.impl.LogWriter: long getFileNumber()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void setLogNumber(long)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void logAndApply(org.iq.leveldb.impl.VersionEdit)>(v);
v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.MemTable immutableMemTable> = null;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void deleteObsoleteFiles()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.Condition backgroundCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signalAll()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void writeLevel0Table(org.iq.leveldb.impl.MemTable, org.iq.leveldb.impl.VersionEdit, org.iq.leveldb.impl.Version) throws java.io.IOException
{
java.lang.Throwable v;
org.iq.leveldb.impl.FileMetaData v;
org.iq.leveldb.util.Slice v, v;
org.iq.leveldb.impl.VersionEdit v;
long v, v;
byte v;
org.iq.leveldb.impl.InternalKey v, v;
java.lang.Long v, v;
int v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v;
org.iq.leveldb.impl.MemTable v;
java.util.List v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.MemTable;
v := @parameter: org.iq.leveldb.impl.VersionEdit;
v := @parameter: org.iq.leveldb.impl.Version;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.MemTable: boolean isEmpty()>();
if v == 0 goto label;
return;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getNextFileNumber()>();
v = v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
label:
v = specialinvoke v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.FileMetaData buildTable(org.iq.leveldb.impl.SeekingIterable,long)>(v, v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
throw v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean remove(java.lang.Object)>(v);
v = 0;
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getFileSize()>();
v = v cmp 0L;
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 = 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()>();
if v == null goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int pickLevelForMemTableOutput(org.iq.leveldb.util.Slice,org.iq.leveldb.util.Slice)>(v, v);
label:
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void addFile(int,org.iq.leveldb.impl.FileMetaData)>(v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
}
private org.iq.leveldb.impl.FileMetaData buildTable(org.iq.leveldb.impl.SeekingIterable, long) throws java.io.IOException
{
java.lang.Throwable v, v, v;
org.iq.leveldb.impl.FileMetaData v;
org.iq.leveldb.util.Slice v;
org.iq.leveldb.impl.InternalUserComparator v;
long v, v;
org.iq.leveldb.impl.InternalKey v, v;
java.lang.Long v;
java.lang.String v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.TableCache v;
boolean v;
java.util.Iterator v;
java.io.FileOutputStream v;
java.io.IOException v;
org.iq.leveldb.impl.InternalKeyComparator v;
org.iq.leveldb.table.TableBuilder v;
java.io.File v, v;
org.iq.leveldb.impl.SeekingIterable v;
java.util.List v;
org.iq.leveldb.Options v;
java.lang.Object v, v, v;
java.nio.channels.FileChannel v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.SeekingIterable;
v := @parameter: long;
v = new java.io.File;
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String tableFileName(long)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
label:
v = null;
v = null;
v = new java.io.FileOutputStream;
specialinvoke v.<java.io.FileOutputStream: void <init>(java.io.File)>(v);
v = virtualinvoke v.<java.io.FileOutputStream: java.nio.channels.FileChannel getChannel()>();
label:
v = new org.iq.leveldb.table.TableBuilder;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options>;
v = new org.iq.leveldb.impl.InternalUserComparator;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.InternalUserComparator: void <init>(org.iq.leveldb.impl.InternalKeyComparator)>(v);
specialinvoke v.<org.iq.leveldb.table.TableBuilder: void <init>(org.iq.leveldb.Options,java.nio.channels.FileChannel,org.iq.leveldb.table.UserComparator)>(v, v, v);
v = interfaceinvoke v.<org.iq.leveldb.impl.SeekingIterable: 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 = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
if v != null goto label;
v = v;
label:
v = v;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice encode()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
virtualinvoke v.<org.iq.leveldb.table.TableBuilder: void add(org.iq.leveldb.util.Slice,org.iq.leveldb.util.Slice)>(v, v);
goto label;
label:
virtualinvoke v.<org.iq.leveldb.table.TableBuilder: void finish()>();
label:
virtualinvoke v.<java.nio.channels.FileChannel: void force(boolean)>(1);
label:
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
throw v;
label:
v := @caughtexception;
label:
virtualinvoke v.<java.nio.channels.FileChannel: void force(boolean)>(1);
label:
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
throw v;
label:
throw v;
label:
if v != null goto label;
label:
return null;
label:
v = new org.iq.leveldb.impl.FileMetaData;
v = virtualinvoke v.<java.io.File: long length()>();
specialinvoke v.<org.iq.leveldb.impl.FileMetaData: void <init>(long,long,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v, v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.TableCache tableCache>;
virtualinvoke v.<org.iq.leveldb.impl.TableCache: org.iq.leveldb.util.InternalTableIterator newIterator(org.iq.leveldb.impl.FileMetaData)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean remove(java.lang.Object)>(v);
label:
return v;
label:
v := @caughtexception;
virtualinvoke v.<java.io.File: boolean delete()>();
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
}
private void doCompactionWork(org.iq.leveldb.impl.DbImpl$CompactionState) throws java.io.IOException
{
byte v, v, v, v, v;
java.lang.Throwable v, v;
long v, v, v, v, v, v, v, v, v;
org.iq.leveldb.impl.DbImpl$CompactionState v;
java.util.Map$Entry v, v;
org.iq.leveldb.impl.InternalKeyComparator v;
org.iq.leveldb.util.Slice v, v, v, v;
org.iq.leveldb.impl.DbImpl$DatabaseShutdownException v;
org.iq.leveldb.table.UserComparator v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v, v, v, v, v, v, v, v, v, v;
org.iq.leveldb.impl.Compaction v, v, v, v, v;
org.iq.leveldb.util.MergingIterator v;
org.iq.leveldb.impl.VersionSet v, v, v;
java.util.concurrent.atomic.AtomicBoolean v, v;
int v, v;
org.iq.leveldb.impl.ValueType v, v;
java.util.concurrent.locks.ReentrantLock v, v, v, v, v, v, v;
org.iq.leveldb.table.TableBuilder v, v, v, v, v, v, v;
java.lang.Object v, v;
java.nio.channels.FileChannel v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.DbImpl$CompactionState;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction getCompaction()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: int getLevel()>();
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long numberOfBytesInLevel(int)>(v);
v = v cmp 0L;
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getLastSequence()>();
v.<org.iq.leveldb.impl.DbImpl$CompactionState: long smallestSnapshot> = v;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.util.MergingIterator makeInputIterator(org.iq.leveldb.impl.Compaction)>(v);
v = null;
v = 0;
v = 72057594037927935L;
label:
v = virtualinvoke v.<org.iq.leveldb.util.MergingIterator: boolean hasNext()>();
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void compactMemTableInternal()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
v = virtualinvoke v.<org.iq.leveldb.util.MergingIterator: java.util.Map$Entry peek()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: boolean shouldStopBefore(org.iq.leveldb.impl.InternalKey)>(v);
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v == null goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void finishCompactionOutputFile(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
label:
v = 0;
if v == 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKeyComparator: org.iq.leveldb.table.UserComparator getUserComparator()>();
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;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice getUserKey()>();
v = 1;
v = 72057594037927935L;
label:
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: long smallestSnapshot>;
v = v cmp v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.impl.ValueType getValueType()>();
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType DELETION>;
if v != v goto label;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: long getSequenceNumber()>();
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: long smallestSnapshot>;
v = v cmp v;
if v > 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice getUserKey()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: boolean isBaseLevelForKey(org.iq.leveldb.util.Slice)>(v);
if v == 0 goto label;
v = 1;
label:
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: long getSequenceNumber()>();
if v != 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v != null goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void openCompactionOutputFile(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
label:
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
v = virtualinvoke v.<org.iq.leveldb.table.TableBuilder: long getEntryCount()>();
v = v cmp 0L;
if v != 0 goto label;
v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.InternalKey currentSmallest> = v;
label:
v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.InternalKey currentLargest> = v;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
v = virtualinvoke v.<org.iq.leveldb.impl.InternalKey: org.iq.leveldb.util.Slice encode()>();
v = virtualinvoke v.<org.iq.leveldb.util.MergingIterator: java.util.Map$Entry peek()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
virtualinvoke v.<org.iq.leveldb.table.TableBuilder: void add(org.iq.leveldb.util.Slice,org.iq.leveldb.util.Slice)>(v, v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
v = virtualinvoke v.<org.iq.leveldb.table.TableBuilder: long getFileSize()>();
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: long getMaxOutputFileSize()>();
v = v cmp v;
if v < 0 goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void finishCompactionOutputFile(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
label:
virtualinvoke v.<org.iq.leveldb.util.MergingIterator: java.util.Map$Entry next()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.atomic.AtomicBoolean shuttingDown>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new org.iq.leveldb.impl.DbImpl$DatabaseShutdownException;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$DatabaseShutdownException: void <init>(java.lang.String)>("DB shutdown during compaction");
throw v;
label:
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v == null goto label;
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void finishCompactionOutputFile(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
throw v;
label:
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void installCompactionResults(org.iq.leveldb.impl.DbImpl$CompactionState)>(v);
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void openCompactionOutputFile(org.iq.leveldb.impl.DbImpl$CompactionState) throws java.io.FileNotFoundException
{
java.lang.Throwable v;
org.iq.leveldb.impl.InternalUserComparator v;
long v;
org.iq.leveldb.impl.DbImpl$CompactionState v;
java.lang.Long v;
java.lang.String v;
org.iq.leveldb.impl.DbImpl v;
boolean v;
java.util.concurrent.locks.ReentrantLock v, v, v;
java.io.FileOutputStream v;
org.iq.leveldb.impl.InternalKeyComparator v;
org.iq.leveldb.table.TableBuilder v, v;
java.io.File v, v;
java.util.List v;
org.iq.leveldb.Options v;
java.nio.channels.FileChannel v, v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.DbImpl$CompactionState;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "compactionState is null");
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.Object)>(v, "compactionState builder is not null");
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void lock()>();
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getNextFileNumber()>();
v = v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v.<org.iq.leveldb.impl.DbImpl$CompactionState: long currentFileNumber> = v;
v.<org.iq.leveldb.impl.DbImpl$CompactionState: long currentFileSize> = 0L;
v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.InternalKey currentSmallest> = null;
v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.InternalKey currentLargest> = null;
v = new java.io.File;
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String tableFileName(long)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
v = new java.io.FileOutputStream;
specialinvoke v.<java.io.FileOutputStream: void <init>(java.io.File)>(v);
v = virtualinvoke v.<java.io.FileOutputStream: java.nio.channels.FileChannel getChannel()>();
v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile> = v;
v = new org.iq.leveldb.table.TableBuilder;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.Options options>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile>;
v = new org.iq.leveldb.impl.InternalUserComparator;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.InternalKeyComparator internalKeyComparator>;
specialinvoke v.<org.iq.leveldb.impl.InternalUserComparator: void <init>(org.iq.leveldb.impl.InternalKeyComparator)>(v);
specialinvoke v.<org.iq.leveldb.table.TableBuilder: void <init>(org.iq.leveldb.Options,java.nio.channels.FileChannel,org.iq.leveldb.table.UserComparator)>(v, v, v);
v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder> = v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void finishCompactionOutputFile(org.iq.leveldb.impl.DbImpl$CompactionState) throws java.io.IOException
{
org.iq.leveldb.impl.FileMetaData v;
long v, v, v, v, v;
org.iq.leveldb.impl.DbImpl$CompactionState v;
byte v, v;
org.iq.leveldb.impl.InternalKey v, v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.TableCache v;
boolean v, v, v;
org.iq.leveldb.table.TableBuilder v, v, v, v;
java.util.List v;
java.nio.channels.FileChannel v, v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.DbImpl$CompactionState;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "compactionState is null");
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: long currentFileNumber>;
v = v cmp 0L;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
v = virtualinvoke v.<org.iq.leveldb.table.TableBuilder: long getEntryCount()>();
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
virtualinvoke v.<org.iq.leveldb.table.TableBuilder: void finish()>();
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder>;
v = virtualinvoke v.<org.iq.leveldb.table.TableBuilder: long getFileSize()>();
v.<org.iq.leveldb.impl.DbImpl$CompactionState: long currentFileSize> = v;
v.<org.iq.leveldb.impl.DbImpl$CompactionState: long totalBytes> = v;
v = new org.iq.leveldb.impl.FileMetaData;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: long currentFileNumber>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: long currentFileSize>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.InternalKey currentSmallest>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.InternalKey currentLargest>;
specialinvoke v.<org.iq.leveldb.impl.FileMetaData: void <init>(long,long,org.iq.leveldb.impl.InternalKey,org.iq.leveldb.impl.InternalKey)>(v, v, v, v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.util.List outputs>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.table.TableBuilder builder> = null;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile>;
virtualinvoke v.<java.nio.channels.FileChannel: void force(boolean)>(1);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile>;
virtualinvoke v.<java.nio.channels.FileChannel: void close()>();
v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.nio.channels.FileChannel outfile> = null;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.TableCache tableCache>;
virtualinvoke v.<org.iq.leveldb.impl.TableCache: org.iq.leveldb.util.InternalTableIterator newIterator(long)>(v);
label:
return;
}
private void installCompactionResults(org.iq.leveldb.impl.DbImpl$CompactionState) throws java.io.IOException
{
java.lang.Long v;
org.iq.leveldb.impl.DbImpl v;
boolean v, v, v;
org.iq.leveldb.impl.Compaction v, v, v, v, v;
java.util.List v, v, v, v;
org.iq.leveldb.impl.VersionSet v;
org.iq.leveldb.impl.VersionEdit v, v, v;
long v, v;
org.iq.leveldb.impl.DbImpl$CompactionState v;
int v, v;
java.lang.String v;
java.util.Iterator v, v;
java.util.concurrent.locks.ReentrantLock v;
java.io.IOException v;
java.io.File v, v;
java.lang.Object v, v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.DbImpl$CompactionState;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.locks.ReentrantLock mutex>;
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantLock: boolean isHeldByCurrentThread()>();
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
virtualinvoke v.<org.iq.leveldb.impl.Compaction: void addInputDeletions(org.iq.leveldb.impl.VersionEdit)>(v);
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: int getLevel()>();
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.util.List outputs>;
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.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
v = v + 1;
virtualinvoke v.<org.iq.leveldb.impl.VersionEdit: void addFile(int,org.iq.leveldb.impl.FileMetaData)>(v, v);
v = v.<org.iq.leveldb.impl.DbImpl: java.util.List pendingOutputs>;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getNumber()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<java.util.List: boolean remove(java.lang.Object)>(v);
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: org.iq.leveldb.impl.Compaction compaction>;
v = virtualinvoke v.<org.iq.leveldb.impl.Compaction: org.iq.leveldb.impl.VersionEdit getEdit()>();
virtualinvoke v.<org.iq.leveldb.impl.VersionSet: void logAndApply(org.iq.leveldb.impl.VersionEdit)>(v);
specialinvoke v.<org.iq.leveldb.impl.DbImpl: void deleteObsoleteFiles()>();
label:
goto label;
label:
v := @caughtexception;
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.util.List outputs>;
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 = new java.io.File;
v = v.<org.iq.leveldb.impl.DbImpl: java.io.File databaseDir>;
v = virtualinvoke v.<org.iq.leveldb.impl.FileMetaData: long getNumber()>();
v = staticinvoke <org.iq.leveldb.impl.Filename: java.lang.String tableFileName(long)>(v);
specialinvoke v.<java.io.File: void <init>(java.io.File,java.lang.String)>(v, v);
virtualinvoke v.<java.io.File: boolean delete()>();
goto label;
label:
v = v.<org.iq.leveldb.impl.DbImpl$CompactionState: java.util.List outputs>;
interfaceinvoke v.<java.util.List: void clear()>();
label:
return;
catch java.io.IOException from label to label with label;
}
int numberOfFilesInLevel(int)
{
int v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: int;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
v = virtualinvoke v.<org.iq.leveldb.impl.Version: int numberOfFilesInLevel(int)>(v);
return v;
}
public transient long[] getApproximateSizes(org.iq.leveldb.Range[])
{
long v;
org.iq.leveldb.Range[] v;
long[] v;
int v, v, v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.Range v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.Range[];
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "ranges is null");
v = lengthof v;
v = newarray (long)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.iq.leveldb.impl.DbImpl: long getApproximateSizes(org.iq.leveldb.Range)>(v);
v[v] = v;
v = v + 1;
goto label;
label:
return v;
}
public long getApproximateSizes(org.iq.leveldb.Range)
{
byte[] v, v;
org.iq.leveldb.util.Slice v, v;
long v, v, v;
byte v;
org.iq.leveldb.impl.InternalKey v, v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.Range v;
org.iq.leveldb.impl.ValueType v, v;
org.iq.leveldb.impl.Version v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.Range;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: org.iq.leveldb.impl.Version getCurrent()>();
v = new org.iq.leveldb.impl.InternalKey;
v = virtualinvoke v.<org.iq.leveldb.Range: byte[] start()>();
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice wrappedBuffer(byte[])>(v);
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType VALUE>;
specialinvoke v.<org.iq.leveldb.impl.InternalKey: void <init>(org.iq.leveldb.util.Slice,long,org.iq.leveldb.impl.ValueType)>(v, 72057594037927935L, v);
v = new org.iq.leveldb.impl.InternalKey;
v = virtualinvoke v.<org.iq.leveldb.Range: byte[] limit()>();
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice wrappedBuffer(byte[])>(v);
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType VALUE>;
specialinvoke v.<org.iq.leveldb.impl.InternalKey: void <init>(org.iq.leveldb.util.Slice,long,org.iq.leveldb.impl.ValueType)>(v, 72057594037927935L, v);
v = virtualinvoke v.<org.iq.leveldb.impl.Version: long getApproximateOffsetOf(org.iq.leveldb.impl.InternalKey)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.Version: long getApproximateOffsetOf(org.iq.leveldb.impl.InternalKey)>(v);
v = v cmp v;
if v < 0 goto label;
v = v - v;
goto label;
label:
v = 0L;
label:
return v;
}
public long getMaxNextLevelOverlappingBytes()
{
long v;
org.iq.leveldb.impl.DbImpl v;
org.iq.leveldb.impl.VersionSet v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: org.iq.leveldb.impl.VersionSet versions>;
v = virtualinvoke v.<org.iq.leveldb.impl.VersionSet: long getMaxNextLevelOverlappingBytes()>();
return v;
}
private org.iq.leveldb.impl.WriteBatchImpl readWriteBatch(org.iq.leveldb.util.SliceInput, int) throws java.io.IOException
{
java.lang.IllegalStateException v;
org.iq.leveldb.util.Slice v, v, v;
java.lang.Object[] v;
java.lang.Integer v, v;
org.iq.leveldb.util.SliceInput v;
byte v;
int v, v;
java.lang.String v, v;
org.iq.leveldb.impl.DbImpl v;
boolean v;
org.iq.leveldb.impl.ValueType v, v, v;
org.iq.leveldb.impl.WriteBatchImpl v;
java.io.IOException v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.util.SliceInput;
v := @parameter: int;
v = new org.iq.leveldb.impl.WriteBatchImpl;
specialinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void <init>()>();
v = 0;
label:
v = virtualinvoke v.<org.iq.leveldb.util.SliceInput: boolean isReadable()>();
if v == 0 goto label;
v = v + 1;
v = virtualinvoke v.<org.iq.leveldb.util.SliceInput: byte readByte()>();
v = staticinvoke <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType getValueTypeByPersistentId(int)>(v);
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType VALUE>;
if v != v goto label;
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice readLengthPrefixedBytes(org.iq.leveldb.util.SliceInput)>(v);
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice readLengthPrefixedBytes(org.iq.leveldb.util.SliceInput)>(v);
virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: org.iq.leveldb.impl.WriteBatchImpl put(org.iq.leveldb.util.Slice,org.iq.leveldb.util.Slice)>(v, v);
goto label;
label:
v = <org.iq.leveldb.impl.ValueType: org.iq.leveldb.impl.ValueType DELETION>;
if v != v goto label;
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice readLengthPrefixedBytes(org.iq.leveldb.util.SliceInput)>(v);
virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: org.iq.leveldb.impl.WriteBatchImpl delete(org.iq.leveldb.util.Slice)>(v);
goto label;
label:
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.iq.leveldb.impl.ValueType)>(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[])>("Unexpected value type \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
if v == v goto label;
v = new java.io.IOException;
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Expected %d entries in log record but found %s entries", v);
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
return v;
}
private org.iq.leveldb.util.Slice writeWriteBatch(org.iq.leveldb.impl.WriteBatchImpl, long)
{
org.iq.leveldb.util.Slice v, v;
org.iq.leveldb.impl.WriteBatchImpl v;
long v;
org.iq.leveldb.impl.DbImpl$4 v;
org.iq.leveldb.util.SliceOutput v;
int v, v, v, v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: org.iq.leveldb.impl.WriteBatchImpl;
v := @parameter: long;
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: int getApproximateSize()>();
v = 12 + v;
v = staticinvoke <org.iq.leveldb.util.Slices: org.iq.leveldb.util.Slice allocate(int)>(v);
v = virtualinvoke v.<org.iq.leveldb.util.Slice: org.iq.leveldb.util.SliceOutput output()>();
virtualinvoke v.<org.iq.leveldb.util.SliceOutput: void writeLong(long)>(v);
v = virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: int size()>();
virtualinvoke v.<org.iq.leveldb.util.SliceOutput: void writeInt(int)>(v);
v = new org.iq.leveldb.impl.DbImpl$4;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$4: void <init>(org.iq.leveldb.impl.DbImpl,org.iq.leveldb.util.SliceOutput)>(v, v);
virtualinvoke v.<org.iq.leveldb.impl.WriteBatchImpl: void forEach(org.iq.leveldb.impl.WriteBatchImpl$Handler)>(v);
v = virtualinvoke v.<org.iq.leveldb.util.SliceOutput: int size()>();
v = virtualinvoke v.<org.iq.leveldb.util.Slice: org.iq.leveldb.util.Slice slice(int,int)>(0, v);
return v;
}
public void suspendCompactions() throws java.lang.InterruptedException
{
java.lang.Throwable v;
int v;
java.lang.Object v, v;
org.iq.leveldb.impl.DbImpl v;
java.util.concurrent.ExecutorService v;
org.iq.leveldb.impl.DbImpl$5 v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.util.concurrent.ExecutorService compactionExecutor>;
v = new org.iq.leveldb.impl.DbImpl$5;
specialinvoke v.<org.iq.leveldb.impl.DbImpl$5: void <init>(org.iq.leveldb.impl.DbImpl)>(v);
interfaceinvoke v.<java.util.concurrent.ExecutorService: void execute(java.lang.Runnable)>(v);
v = v.<org.iq.leveldb.impl.DbImpl: java.lang.Object suspensionMutex>;
entermonitor v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: int suspensionCounter>;
if v >= 1 goto label;
v = v.<org.iq.leveldb.impl.DbImpl: java.lang.Object suspensionMutex>;
virtualinvoke v.<java.lang.Object: void wait()>();
goto label;
label:
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void resumeCompactions()
{
java.lang.Throwable v;
int v, v;
java.lang.Object v, v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v = v.<org.iq.leveldb.impl.DbImpl: java.lang.Object suspensionMutex>;
entermonitor v;
label:
v = v.<org.iq.leveldb.impl.DbImpl: int suspensionCounter>;
v = v - 1;
v.<org.iq.leveldb.impl.DbImpl: int suspensionCounter> = v;
v = v.<org.iq.leveldb.impl.DbImpl: java.lang.Object suspensionMutex>;
virtualinvoke v.<java.lang.Object: void notifyAll()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void compactRange(byte[], byte[]) throws org.iq.leveldb.DBException
{
byte[] v, v;
java.lang.UnsupportedOperationException v;
org.iq.leveldb.impl.DbImpl v;
v := @this: org.iq.leveldb.impl.DbImpl;
v := @parameter: byte[];
v := @parameter: byte[];
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("Not yet implemented");
throw v;
}
}