public class org.h2.util.SourceCompiler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.util.SourceCompiler
super_class: java.lang.Object
{
static final javax.tools.JavaCompiler JAVA_COMPILER;
descriptor: Ljavax/tools/JavaCompiler;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.Class<?> JAVAC_SUN;
descriptor: Ljava/lang/Class;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/Class<*>;
private static final java.lang.String COMPILE_DIR;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
final java.util.HashMap<java.lang.String, java.lang.String> sources;
descriptor: Ljava/util/HashMap;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;
final java.util.HashMap<java.lang.String, java.lang.Class<?>> compiled;
descriptor: Ljava/util/HashMap;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Class<*>;>;
final java.util.Map<java.lang.String, javax.script.CompiledScript> compiledScripts;
descriptor: Ljava/util/Map;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;Ljavax/script/CompiledScript;>;
boolean useJavaSystemCompiler;
descriptor: Z
flags: (0x0000)
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=2, args_size=0
0: ldc "java.io.tmpdir"
ldc "."
invokestatic org.h2.util.Utils.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
1: putstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
2: invokestatic javax.tools.ToolProvider.getSystemJavaCompiler:()Ljavax/tools/JavaCompiler;
astore 0
start local 0 3: goto 6
end local 0 StackMap locals:
StackMap stack: java.lang.Exception
4: pop
5: aconst_null
astore 0
start local 0 6: StackMap locals: javax.tools.JavaCompiler
StackMap stack:
aload 0
putstatic org.h2.util.SourceCompiler.JAVA_COMPILER:Ljavax/tools/JavaCompiler;
7: ldc "com.sun.tools.javac.Main"
invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
astore 1
start local 1 8: goto 11
end local 1 StackMap locals:
StackMap stack: java.lang.Exception
9: pop
10: aconst_null
astore 1
start local 1 11: StackMap locals: java.lang.Class
StackMap stack:
aload 1
putstatic org.h2.util.SourceCompiler.JAVAC_SUN:Ljava/lang/Class;
end local 1 end local 0 12: return
LocalVariableTable:
Start End Slot Name Signature
3 4 0 c Ljavax/tools/JavaCompiler;
6 12 0 c Ljavax/tools/JavaCompiler;
8 9 1 clazz Ljava/lang/Class<*>;
11 12 1 clazz Ljava/lang/Class<*>;
Exception table:
from to target type
2 3 4 Class java.lang.Exception
7 8 9 Class java.lang.Exception
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.h2.util.SourceCompiler.sources:Ljava/util/HashMap;
2: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.h2.util.SourceCompiler.compiled:Ljava/util/HashMap;
3: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.h2.util.SourceCompiler.compiledScripts:Ljava/util/Map;
4: aload 0
getstatic org.h2.engine.SysProperties.JAVA_SYSTEM_COMPILER:Z
putfield org.h2.util.SourceCompiler.useJavaSystemCompiler:Z
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/util/SourceCompiler;
public void setSource(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.h2.util.SourceCompiler.sources:Ljava/util/HashMap;
aload 1
aload 2
invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
getfield org.h2.util.SourceCompiler.compiled:Ljava/util/HashMap;
invokevirtual java.util.HashMap.clear:()V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/h2/util/SourceCompiler;
0 3 1 className Ljava/lang/String;
0 3 2 source Ljava/lang/String;
MethodParameters:
Name Flags
className
source
public void setJavaSystemCompiler(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.h2.util.SourceCompiler.useJavaSystemCompiler:Z
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/util/SourceCompiler;
0 2 1 enabled Z
MethodParameters:
Name Flags
enabled
public java.lang.Class<?> getClass(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/Class;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.util.SourceCompiler.compiled:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Class
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
areturn
3: StackMap locals: java.lang.Class
StackMap stack:
aload 0
getfield org.h2.util.SourceCompiler.sources:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
astore 3
start local 3 4: aload 3
invokestatic org.h2.util.SourceCompiler.isGroovySource:(Ljava/lang/String;)Z
ifeq 8
5: aload 3
aload 1
invokestatic org.h2.util.SourceCompiler$GroovyCompiler.parseClass:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;
astore 4
start local 4 6: aload 0
getfield org.h2.util.SourceCompiler.compiled:Ljava/util/HashMap;
aload 1
aload 4
invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: aload 4
areturn
end local 4 8: StackMap locals: java.lang.String
StackMap stack:
new org.h2.util.SourceCompiler$1
dup
aload 0
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
invokespecial org.h2.util.SourceCompiler$1.<init>:(Lorg/h2/util/SourceCompiler;Ljava/lang/ClassLoader;)V
astore 4
start local 4 9: aload 4
aload 1
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/h2/util/SourceCompiler;
0 10 1 packageAndClassName Ljava/lang/String;
1 10 2 compiledClass Ljava/lang/Class<*>;
4 10 3 source Ljava/lang/String;
6 8 4 clazz Ljava/lang/Class<*>;
9 10 4 classLoader Ljava/lang/ClassLoader;
Exceptions:
throws java.lang.ClassNotFoundException
Signature: (Ljava/lang/String;)Ljava/lang/Class<*>;
MethodParameters:
Name Flags
packageAndClassName
private static boolean isGroovySource(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "//groovy"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 1
aload 0
ldc "@groovy"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 source Ljava/lang/String;
MethodParameters:
Name Flags
source
private static boolean isJavascriptSource(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "//javascript"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 source Ljava/lang/String;
MethodParameters:
Name Flags
source
private static boolean isRubySource(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "#ruby"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 source Ljava/lang/String;
MethodParameters:
Name Flags
source
public static boolean isJavaxScriptSource(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic org.h2.util.SourceCompiler.isJavascriptSource:(Ljava/lang/String;)Z
ifne 1
aload 0
invokestatic org.h2.util.SourceCompiler.isRubySource:(Ljava/lang/String;)Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 source Ljava/lang/String;
MethodParameters:
Name Flags
source
public javax.script.CompiledScript getCompiledScript(java.lang.String);
descriptor: (Ljava/lang/String;)Ljavax/script/CompiledScript;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.util.SourceCompiler.compiledScripts:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javax.script.CompiledScript
astore 2
start local 2 1: aload 2
ifnonnull 13
2: aload 0
getfield org.h2.util.SourceCompiler.sources:Ljava/util/HashMap;
aload 1
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.String
astore 3
start local 3 3: aload 3
invokestatic org.h2.util.SourceCompiler.isJavascriptSource:(Ljava/lang/String;)Z
ifeq 6
4: ldc "javascript"
astore 4
start local 4 5: goto 10
end local 4 StackMap locals: javax.script.CompiledScript java.lang.String
StackMap stack:
6: aload 3
invokestatic org.h2.util.SourceCompiler.isRubySource:(Ljava/lang/String;)Z
ifeq 9
7: ldc "ruby"
astore 4
start local 4 8: goto 10
end local 4 9: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Unknown language for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
start local 4 10: StackMap locals: java.lang.String
StackMap stack:
new javax.script.ScriptEngineManager
dup
invokespecial javax.script.ScriptEngineManager.<init>:()V
aload 4
invokevirtual javax.script.ScriptEngineManager.getEngineByName:(Ljava/lang/String;)Ljavax/script/ScriptEngine;
checkcast javax.script.Compilable
astore 5
start local 5 11: aload 5
aload 3
invokeinterface javax.script.Compilable.compile:(Ljava/lang/String;)Ljavax/script/CompiledScript;
astore 2
12: aload 0
getfield org.h2.util.SourceCompiler.compiledScripts:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 5 end local 4 end local 3 13: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/h2/util/SourceCompiler;
0 14 1 packageAndClassName Ljava/lang/String;
1 14 2 compiledScript Ljavax/script/CompiledScript;
3 13 3 source Ljava/lang/String;
5 6 4 lang Ljava/lang/String;
8 9 4 lang Ljava/lang/String;
10 13 4 lang Ljava/lang/String;
11 13 5 jsEngine Ljavax/script/Compilable;
Exceptions:
throws javax.script.ScriptException
MethodParameters:
Name Flags
packageAndClassName
public java.lang.reflect.Method getMethod(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/reflect/Method;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=10, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.h2.util.SourceCompiler.getClass:(Ljava/lang/String;)Ljava/lang/Class;
astore 2
start local 2 1: aload 2
invokevirtual java.lang.Class.getDeclaredMethods:()[Ljava/lang/reflect/Method;
astore 3
start local 3 2: aload 3
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 10
StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.Class java.lang.reflect.Method[] top int int java.lang.reflect.Method[]
StackMap stack:
3: aload 7
iload 5
aaload
astore 4
start local 4 4: aload 4
invokevirtual java.lang.reflect.Method.getModifiers:()I
istore 8
start local 8 5: iload 8
invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
ifeq 9
iload 8
invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
ifeq 9
6: aload 4
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
astore 9
start local 9 7: aload 9
ldc "_"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 9
aload 4
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "main"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 9
8: aload 4
areturn
end local 9 end local 8 end local 4 9: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
10: iload 5
iload 6
if_icmplt 3
11: aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/h2/util/SourceCompiler;
0 12 1 className Ljava/lang/String;
1 12 2 clazz Ljava/lang/Class<*>;
2 12 3 methods [Ljava/lang/reflect/Method;
4 9 4 m Ljava/lang/reflect/Method;
5 9 8 modifiers I
7 9 9 name Ljava/lang/String;
Exceptions:
throws java.lang.ClassNotFoundException
MethodParameters:
Name Flags
className
byte[] javacCompile(java.lang.String, java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[B
flags: (0x0000)
Code:
stack=6, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.io.File
dup
getstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 4
start local 4 1: aload 1
ifnull 4
2: new java.io.File
dup
aload 4
aload 1
bipush 46
bipush 47
invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 4
3: aload 4
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
invokestatic org.h2.store.fs.FileUtils.createDirectories:(Ljava/lang/String;)V
4: StackMap locals: java.io.File
StackMap stack:
new java.io.File
dup
aload 4
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".java"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 5
start local 5 5: new java.io.File
dup
aload 4
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ".class"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 6
start local 6 6: aload 5
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
iconst_0
invokestatic org.h2.store.fs.FileUtils.newOutputStream:(Ljava/lang/String;Z)Ljava/io/OutputStream;
astore 7
start local 7 7: aload 7
invokestatic org.h2.util.IOUtils.getBufferedWriter:(Ljava/io/OutputStream;)Ljava/io/Writer;
astore 8
start local 8 8: aload 6
invokevirtual java.io.File.delete:()Z
pop
9: aload 8
aload 3
invokevirtual java.io.Writer.write:(Ljava/lang/String;)V
10: aload 8
invokevirtual java.io.Writer.close:()V
11: getstatic org.h2.util.SourceCompiler.JAVAC_SUN:Ljava/lang/Class;
ifnull 14
12: aload 5
invokestatic org.h2.util.SourceCompiler.javacSun:(Ljava/io/File;)V
13: goto 15
14: StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.io.File java.io.File java.io.File java.io.OutputStream java.io.Writer
StackMap stack:
aload 5
invokestatic org.h2.util.SourceCompiler.javacProcess:(Ljava/io/File;)V
15: StackMap locals:
StackMap stack:
aload 6
invokevirtual java.io.File.length:()J
l2i
newarray 8
astore 9
start local 9 16: new java.io.DataInputStream
dup
new java.io.FileInputStream
dup
aload 6
invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
astore 10
start local 10 17: aload 10
aload 9
invokevirtual java.io.DataInputStream.readFully:([B)V
18: aload 10
invokevirtual java.io.DataInputStream.close:()V
19: aload 9
astore 12
20: aload 5
invokevirtual java.io.File.delete:()Z
pop
21: aload 6
invokevirtual java.io.File.delete:()Z
pop
22: aload 12
areturn
end local 10 end local 9 end local 8 end local 7 23: StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.io.File java.io.File java.io.File
StackMap stack: java.lang.Exception
astore 7
start local 7 24: aload 7
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 7 25: StackMap locals:
StackMap stack: java.lang.Throwable
astore 11
26: aload 5
invokevirtual java.io.File.delete:()Z
pop
27: aload 6
invokevirtual java.io.File.delete:()Z
pop
28: aload 11
athrow
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lorg/h2/util/SourceCompiler;
0 29 1 packageName Ljava/lang/String;
0 29 2 className Ljava/lang/String;
0 29 3 source Ljava/lang/String;
1 29 4 dir Ljava/io/File;
5 29 5 javaFile Ljava/io/File;
6 29 6 classFile Ljava/io/File;
7 23 7 f Ljava/io/OutputStream;
8 23 8 out Ljava/io/Writer;
16 23 9 data [B
17 23 10 in Ljava/io/DataInputStream;
24 25 7 e Ljava/lang/Exception;
Exception table:
from to target type
6 20 23 Class java.lang.Exception
6 20 25 any
23 25 25 any
MethodParameters:
Name Flags
packageName
className
source
static java.lang.String getCompleteSourceCode(java.lang.String, java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
ldc "package "
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 2
1: aload 2
areturn
2: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 3
start local 3 3: aload 0
ifnull 5
4: aload 3
ldc "package "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ";\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 2
ldc "@CODE"
invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
istore 4
start local 4 6: ldc "import java.util.*;\nimport java.math.*;\nimport java.sql.*;\n"
7: astore 5
start local 5 8: iload 4
iflt 11
9: aload 2
iconst_0
iload 4
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 5
10: aload 2
ldc "@CODE"
invokevirtual java.lang.String.length:()I
iload 4
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 2
11: StackMap locals: int java.lang.String
StackMap stack:
aload 3
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
12: aload 3
ldc "public class "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: ldc " {\n public static "
14: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\n}\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
16: aload 3
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 packageName Ljava/lang/String;
0 17 1 className Ljava/lang/String;
0 17 2 source Ljava/lang/String;
3 17 3 buff Ljava/lang/StringBuilder;
6 17 4 endImport I
8 17 5 importCode Ljava/lang/String;
MethodParameters:
Name Flags
packageName
className
source
java.lang.Class<?> javaxToolsJavac(java.lang.String, java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;
flags: (0x0000)
Code:
stack=7, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 1: new java.io.StringWriter
dup
invokespecial java.io.StringWriter.<init>:()V
astore 5
start local 5 2: aconst_null
astore 6
aconst_null
astore 7
3: new org.h2.util.SourceCompiler$ClassFileManager
dup
getstatic org.h2.util.SourceCompiler.JAVA_COMPILER:Ljavax/tools/JavaCompiler;
4: aconst_null
aconst_null
aconst_null
invokeinterface javax.tools.JavaCompiler.getStandardFileManager:(Ljavax/tools/DiagnosticListener;Ljava/util/Locale;Ljava/nio/charset/Charset;)Ljavax/tools/StandardJavaFileManager;
5: invokespecial org.h2.util.SourceCompiler$ClassFileManager.<init>:(Ljavax/tools/StandardJavaFileManager;)V
astore 8
start local 8 6: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 9
start local 9 7: aload 9
new org.h2.util.SourceCompiler$StringJavaFileObject
dup
aload 4
aload 3
invokespecial org.h2.util.SourceCompiler$StringJavaFileObject.<init>:(Ljava/lang/String;Ljava/lang/String;)V
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
8: getstatic org.h2.util.SourceCompiler.JAVA_COMPILER:Ljavax/tools/JavaCompiler;
dup
astore 11
monitorenter
9: getstatic org.h2.util.SourceCompiler.JAVA_COMPILER:Ljavax/tools/JavaCompiler;
aload 5
aload 8
aconst_null
aconst_null
10: aconst_null
aload 9
11: invokeinterface javax.tools.JavaCompiler.getTask:(Ljava/io/Writer;Ljavax/tools/JavaFileManager;Ljavax/tools/DiagnosticListener;Ljava/lang/Iterable;Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljavax/tools/JavaCompiler$CompilationTask;
12: invokeinterface javax.tools.JavaCompiler$CompilationTask.call:()Ljava/lang/Boolean;
invokevirtual java.lang.Boolean.booleanValue:()Z
13: istore 10
start local 10 14: aload 11
monitorexit
15: goto 18
end local 10 StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.lang.String java.io.StringWriter java.lang.Throwable java.lang.Throwable javax.tools.JavaFileManager java.util.ArrayList top javax.tools.JavaCompiler
StackMap stack: java.lang.Throwable
16: aload 11
monitorexit
17: athrow
start local 10 18: StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.lang.String java.io.StringWriter java.lang.Throwable java.lang.Throwable javax.tools.JavaFileManager java.util.ArrayList int
StackMap stack:
aload 5
invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
astore 11
start local 11 19: aload 11
iload 10
ifeq 20
iconst_0
goto 21
StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.lang.String java.io.StringWriter java.lang.Throwable java.lang.Throwable javax.tools.JavaFileManager java.util.ArrayList int java.lang.String
StackMap stack: java.lang.String
20: iconst_1
StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.lang.String java.io.StringWriter java.lang.Throwable java.lang.Throwable javax.tools.JavaFileManager java.util.ArrayList int java.lang.String
StackMap stack: java.lang.String int
21: invokestatic org.h2.util.SourceCompiler.handleSyntaxError:(Ljava/lang/String;I)V
22: aload 8
aconst_null
invokeinterface javax.tools.JavaFileManager.getClassLoader:(Ljavax/tools/JavaFileManager$Location;)Ljava/lang/ClassLoader;
aload 4
invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
23: aload 8
ifnull 24
aload 8
invokeinterface javax.tools.JavaFileManager.close:()V
24: StackMap locals:
StackMap stack: java.lang.Class
areturn
end local 11 end local 10 end local 9 StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.lang.String java.io.StringWriter java.lang.Throwable java.lang.Throwable javax.tools.JavaFileManager
StackMap stack: java.lang.Throwable
25: astore 6
26: aload 8
ifnull 27
aload 8
invokeinterface javax.tools.JavaFileManager.close:()V
end local 8 StackMap locals:
StackMap stack:
27: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
28: astore 7
aload 6
ifnonnull 29
aload 7
astore 6
goto 30
StackMap locals:
StackMap stack:
29: aload 6
aload 7
if_acmpeq 30
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
30: aload 6
athrow
StackMap locals: org.h2.util.SourceCompiler java.lang.String java.lang.String java.lang.String java.lang.String java.io.StringWriter
StackMap stack: java.lang.Exception
31: astore 6
start local 6 32: aload 6
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lorg/h2/util/SourceCompiler;
0 33 1 packageName Ljava/lang/String;
0 33 2 className Ljava/lang/String;
0 33 3 source Ljava/lang/String;
1 33 4 fullClassName Ljava/lang/String;
2 33 5 writer Ljava/io/StringWriter;
6 27 8 fileManager Ljavax/tools/JavaFileManager;
7 25 9 compilationUnits Ljava/util/ArrayList<Ljavax/tools/JavaFileObject;>;
14 16 10 ok Z
18 25 10 ok Z
19 25 11 output Ljava/lang/String;
32 33 6 e Ljava/lang/Exception;
Exception table:
from to target type
9 15 16 any
16 17 16 any
6 23 25 any
3 24 28 any
25 28 28 any
2 24 31 Class java.lang.ClassNotFoundException
25 31 31 Class java.lang.ClassNotFoundException
2 24 31 Class java.io.IOException
25 31 31 Class java.io.IOException
Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class<*>;
MethodParameters:
Name Flags
packageName
className
source
private static void javacProcess(java.io.File);
descriptor: (Ljava/io/File;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: bipush 8
anewarray java.lang.String
dup
iconst_0
1: ldc "javac"
aastore
dup
iconst_1
2: ldc "-sourcepath"
aastore
dup
iconst_2
getstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
aastore
dup
iconst_3
3: ldc "-d"
aastore
dup
iconst_4
getstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
aastore
dup
iconst_5
4: ldc "-encoding"
aastore
dup
bipush 6
ldc "UTF-8"
aastore
dup
bipush 7
5: aload 0
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
aastore
6: invokestatic org.h2.util.SourceCompiler.exec:([Ljava/lang/String;)I
pop
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 javaFile Ljava/io/File;
MethodParameters:
Name Flags
javaFile
private static int exec(java.lang.String[]);
descriptor: ([Ljava/lang/String;)I
flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 1
start local 1 1: new java.lang.ProcessBuilder
dup
iconst_0
anewarray java.lang.String
invokespecial java.lang.ProcessBuilder.<init>:([Ljava/lang/String;)V
astore 2
start local 2 2: aload 2
invokevirtual java.lang.ProcessBuilder.environment:()Ljava/util/Map;
ldc "JAVA_TOOL_OPTIONS"
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
3: aload 2
aload 0
invokevirtual java.lang.ProcessBuilder.command:([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
pop
4: aload 2
invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
astore 3
start local 3 5: aload 3
invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
aload 1
invokestatic org.h2.util.SourceCompiler.copyInThread:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
6: aload 3
invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
aload 1
invokestatic org.h2.util.SourceCompiler.copyInThread:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
7: aload 3
invokevirtual java.lang.Process.waitFor:()I
pop
8: new java.lang.String
dup
aload 1
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
astore 4
start local 4 9: aload 4
aload 3
invokevirtual java.lang.Process.exitValue:()I
invokestatic org.h2.util.SourceCompiler.handleSyntaxError:(Ljava/lang/String;I)V
10: aload 3
invokevirtual java.lang.Process.exitValue:()I
11: ireturn
end local 4 end local 3 end local 2 12: StackMap locals: java.lang.String[] java.io.ByteArrayOutputStream
StackMap stack: java.lang.Exception
astore 2
start local 2 13: aload 2
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 args [Ljava/lang/String;
1 14 1 buff Ljava/io/ByteArrayOutputStream;
2 12 2 builder Ljava/lang/ProcessBuilder;
5 12 3 p Ljava/lang/Process;
9 12 4 output Ljava/lang/String;
13 14 2 e Ljava/lang/Exception;
Exception table:
from to target type
1 11 12 Class java.lang.Exception
MethodParameters:
Name Flags
args
private static void copyInThread(java.io.InputStream, java.io.OutputStream);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: new org.h2.util.SourceCompiler$2
dup
aload 0
aload 1
invokespecial org.h2.util.SourceCompiler$2.<init>:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
1: invokevirtual org.h2.util.SourceCompiler$2.execute:()Lorg/h2/util/Task;
pop
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 in Ljava/io/InputStream;
0 3 1 out Ljava/io/OutputStream;
MethodParameters:
Name Flags
in final
out final
private static synchronized void javacSun(java.io.File);
descriptor: (Ljava/io/File;)V
flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=9, locals=9, args_size=1
start local 0 0: getstatic java.lang.System.err:Ljava/io/PrintStream;
astore 1
start local 1 1: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 2
start local 2 2: new java.io.PrintStream
dup
aload 2
invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
astore 3
start local 3 3: aload 3
invokestatic java.lang.System.setErr:(Ljava/io/PrintStream;)V
4: getstatic org.h2.util.SourceCompiler.JAVAC_SUN:Ljava/lang/Class;
ldc "compile"
iconst_1
anewarray java.lang.Class
dup
iconst_0
ldc [Ljava/lang/String;
aastore
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
astore 4
start local 4 5: getstatic org.h2.util.SourceCompiler.JAVAC_SUN:Ljava/lang/Class;
iconst_0
anewarray java.lang.Class
invokevirtual java.lang.Class.getDeclaredConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 6: aload 4
aload 5
iconst_1
anewarray java.lang.Object
dup
iconst_0
bipush 7
anewarray java.lang.String
dup
iconst_0
7: ldc "-sourcepath"
aastore
dup
iconst_1
getstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
aastore
dup
iconst_2
8: ldc "-d"
aastore
dup
iconst_3
getstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
aastore
dup
iconst_4
9: ldc "-encoding"
aastore
dup
iconst_5
ldc "UTF-8"
aastore
dup
bipush 6
10: aload 0
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
aastore
aastore
11: invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 6
start local 6 12: new java.lang.String
dup
aload 2
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
astore 7
start local 7 13: aload 7
aload 6
invokevirtual java.lang.Integer.intValue:()I
invokestatic org.h2.util.SourceCompiler.handleSyntaxError:(Ljava/lang/String;I)V
end local 7 end local 6 end local 5 end local 4 14: goto 20
StackMap locals: java.io.File java.io.PrintStream java.io.ByteArrayOutputStream java.io.PrintStream
StackMap stack: java.lang.Exception
15: astore 4
start local 4 16: aload 4
invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
athrow
end local 4 17: StackMap locals:
StackMap stack: java.lang.Throwable
astore 8
18: aload 1
invokestatic java.lang.System.setErr:(Ljava/io/PrintStream;)V
19: aload 8
athrow
20: StackMap locals:
StackMap stack:
aload 1
invokestatic java.lang.System.setErr:(Ljava/io/PrintStream;)V
21: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 javaFile Ljava/io/File;
1 22 1 old Ljava/io/PrintStream;
2 22 2 buff Ljava/io/ByteArrayOutputStream;
3 22 3 temp Ljava/io/PrintStream;
5 14 4 compile Ljava/lang/reflect/Method;
6 14 5 javac Ljava/lang/Object;
12 14 6 status Ljava/lang/Integer;
13 14 7 output Ljava/lang/String;
16 17 4 e Ljava/lang/Exception;
Exception table:
from to target type
3 14 15 Class java.lang.Exception
3 17 17 any
MethodParameters:
Name Flags
javaFile
private static void handleSyntaxError(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: iload 1
ifne 2
1: return
2: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 3: new java.io.BufferedReader
dup
new java.io.StringReader
dup
aload 0
invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
astore 3
start local 3 4: goto 10
start local 4 5: StackMap locals: int java.io.BufferedReader java.lang.String
StackMap stack:
aload 4
ldc "warning"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 10
aload 4
ldc "warnings"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 10
6: aload 4
ldc "Note:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 10
7: aload 4
ldc "warning:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 10
8: iconst_1
istore 2
9: goto 14
end local 4 10: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
dup
astore 4
start local 4 11: ifnonnull 5
end local 4 12: goto 14
StackMap locals:
StackMap stack: java.io.IOException
13: pop
14: StackMap locals:
StackMap stack:
iload 2
ifeq 17
15: aload 0
getstatic org.h2.util.SourceCompiler.COMPILE_DIR:Ljava/lang/String;
ldc ""
invokestatic org.h2.util.StringUtils.replaceAll:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 0
16: ldc 42000
aload 0
invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
athrow
17: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 output Ljava/lang/String;
0 18 1 exitStatus I
3 18 2 syntaxError Z
4 18 3 reader Ljava/io/BufferedReader;
5 10 4 line Ljava/lang/String;
11 12 4 line Ljava/lang/String;
Exception table:
from to target type
4 12 13 Class java.io.IOException
MethodParameters:
Name Flags
output
exitStatus
}
SourceFile: "SourceCompiler.java"
NestMembers:
org.h2.util.SourceCompiler$1 org.h2.util.SourceCompiler$2 org.h2.util.SourceCompiler$ClassFileManager org.h2.util.SourceCompiler$ClassFileManager$1 org.h2.util.SourceCompiler$GroovyCompiler org.h2.util.SourceCompiler$JavaClassObject org.h2.util.SourceCompiler$StringJavaFileObject
InnerClasses:
public abstract CompilationTask = javax.tools.JavaCompiler$CompilationTask of javax.tools.JavaCompiler
public abstract Location = javax.tools.JavaFileManager$Location of javax.tools.JavaFileManager
org.h2.util.SourceCompiler$1
org.h2.util.SourceCompiler$2
ClassFileManager = org.h2.util.SourceCompiler$ClassFileManager of org.h2.util.SourceCompiler
private final GroovyCompiler = org.h2.util.SourceCompiler$GroovyCompiler of org.h2.util.SourceCompiler
JavaClassObject = org.h2.util.SourceCompiler$JavaClassObject of org.h2.util.SourceCompiler
StringJavaFileObject = org.h2.util.SourceCompiler$StringJavaFileObject of org.h2.util.SourceCompiler