From 1d17d1dfd14f3ed4ef049b592aa395863b6a9b8f Mon Sep 17 00:00:00 2001 From: Zan Skamljic Date: Thu, 21 Nov 2024 19:25:00 +0100 Subject: [PATCH] feat: make java/lang/Throwable compile --- src/main/java/zskamljic/wjvern/Blacklist.java | 2 +- .../zskamljic/wjvern/llir/ClassBuilder.java | 17 ++------ .../wjvern/llir/IrClassGenerator.java | 11 +++++ .../java/zskamljic/wjvern/llir/Utils.java | 8 ++++ .../wjvern/llir/models/AggregateType.java | 3 +- src/main/resources/supported_classes.txt | 2 + src/main/resources/unsupported_functions.json | 42 ++++++++++++++++++- src/test/resources/BasicMath.ll | 5 +-- src/test/resources/Comparisons.ll | 5 +-- .../ConstructorAndInstanceMethods.ll | 5 +-- src/test/resources/Conversions.ll | 5 +-- src/test/resources/CustomException.ll | 5 +-- src/test/resources/Exceptions.ll | 14 ++++--- src/test/resources/ExceptionsData.ll | 5 +-- src/test/resources/ForEach.ll | 5 +-- src/test/resources/ForLoop.ll | 5 +-- src/test/resources/FunctionOverloading.ll | 5 +-- src/test/resources/IfStatements.ll | 5 +-- src/test/resources/Inheritance.ll | 5 +-- src/test/resources/InstanceFields.ll | 5 +-- src/test/resources/InstanceOf.ll | 9 ++-- src/test/resources/InterfaceCalls.ll | 7 ++-- src/test/resources/MutableParameters.ll | 5 +-- src/test/resources/NativeMethods.ll | 5 +-- src/test/resources/NativeVarArgMethods.ll | 5 +-- src/test/resources/ObjectArrays.ll | 5 +-- src/test/resources/Parameters.ll | 5 +-- src/test/resources/Parent.ll | 5 +-- src/test/resources/ReferenceFields.ll | 5 +-- src/test/resources/ReturnArray.ll | 5 +-- src/test/resources/ReturnReference.ll | 5 +-- src/test/resources/ReusedLocals.ll | 5 +-- src/test/resources/Simple.ll | 5 +-- src/test/resources/StandardMain.ll | 5 +-- src/test/resources/StaticFields.ll | 5 +-- src/test/resources/StaticFunctions.ll | 5 +-- src/test/resources/Strings.ll | 5 +-- src/test/resources/Switch.ll | 5 +-- src/test/resources/VariableAssignment.ll | 5 +-- src/test/resources/VirtualMethods.ll | 5 +-- src/test/resources/WhileLoop.ll | 5 +-- 41 files changed, 147 insertions(+), 123 deletions(-) diff --git a/src/main/java/zskamljic/wjvern/Blacklist.java b/src/main/java/zskamljic/wjvern/Blacklist.java index 93b5625..b98ee7d 100644 --- a/src/main/java/zskamljic/wjvern/Blacklist.java +++ b/src/main/java/zskamljic/wjvern/Blacklist.java @@ -85,7 +85,7 @@ private static boolean isBlacklistedForClass(MethodModel method) { public static boolean hasUnsupportedType(MethodRefEntry method) { return Stream.concat(Stream.of(method.typeSymbol().returnType()), method.typeSymbol().parameterList().stream()) .map(c -> c.packageName().replace(".", "/") + "/" + c.displayName()) - .anyMatch(Blacklist::isSupportedClass); + .allMatch(Blacklist::isSupportedClass); } record Items(BlacklistClass any, Map classes) { diff --git a/src/main/java/zskamljic/wjvern/llir/ClassBuilder.java b/src/main/java/zskamljic/wjvern/llir/ClassBuilder.java index 8795d53..71a8838 100644 --- a/src/main/java/zskamljic/wjvern/llir/ClassBuilder.java +++ b/src/main/java/zskamljic/wjvern/llir/ClassBuilder.java @@ -107,7 +107,6 @@ private void handleStaticRequirements(IrClassGenerator classGenerator, List loadClass(ClassEntry classEntry) { var type = Utils.unwrapType(classEntry); if (type.isPrimitive()) return Optional.empty(); - return loadClass(typeName(type)); + return loadClass(Utils.typeName(type)); } private Optional loadClassStdlibAll(ClassEntry classEntry) { var type = Utils.unwrapType(classEntry); if (type.isPrimitive()) return Optional.empty(); - return Optional.of(resolver.resolve(typeName(type))); + return Optional.of(resolver.resolve(Utils.typeName(type))); } private Optional loadClass(String className) { diff --git a/src/main/java/zskamljic/wjvern/llir/IrClassGenerator.java b/src/main/java/zskamljic/wjvern/llir/IrClassGenerator.java index a41578e..4991b7d 100644 --- a/src/main/java/zskamljic/wjvern/llir/IrClassGenerator.java +++ b/src/main/java/zskamljic/wjvern/llir/IrClassGenerator.java @@ -14,6 +14,7 @@ import java.lang.classfile.constantpool.ClassEntry; import java.lang.classfile.constantpool.MethodRefEntry; import java.lang.classfile.instruction.InvokeInstruction; +import java.lang.constant.ClassDesc; import java.lang.reflect.AccessFlag; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -144,6 +145,16 @@ public void addMethodDependency(MethodRefEntry method, boolean isStatic) { if (method.owner().name().stringValue().equals(className)) return; if (Blacklist.hasUnsupportedType(method)) return; + method.typeSymbol() + .parameterList() + .stream() + .distinct() + .filter(Predicate.not(ClassDesc::isArray)) + .filter(Predicate.not(ClassDesc::isPrimitive)) + .map(Utils::typeName) + .map(LlvmType.Declared::new) + .forEach(this::addRequiredType); + methodDependencies.add(Utils.methodDeclaration(method, isStatic)); } diff --git a/src/main/java/zskamljic/wjvern/llir/Utils.java b/src/main/java/zskamljic/wjvern/llir/Utils.java index 31c9a0f..f0c7808 100644 --- a/src/main/java/zskamljic/wjvern/llir/Utils.java +++ b/src/main/java/zskamljic/wjvern/llir/Utils.java @@ -27,6 +27,14 @@ public static String escape(String name) { return name; } + public static String typeName(ClassDesc type) { + var className = type.packageName().replace('.', '/'); + if (!className.isEmpty()) { + className += "/"; + } + return className + type.displayName(); + } + public static String methodName(String parent, MethodModel method) { return escape(parent + "_" + method.methodName() + method.methodTypeSymbol().descriptorString()); } diff --git a/src/main/java/zskamljic/wjvern/llir/models/AggregateType.java b/src/main/java/zskamljic/wjvern/llir/models/AggregateType.java index 13e3d88..73f720e 100644 --- a/src/main/java/zskamljic/wjvern/llir/models/AggregateType.java +++ b/src/main/java/zskamljic/wjvern/llir/models/AggregateType.java @@ -15,7 +15,8 @@ public String toString() { builder.append(type).append(" = type { "); var fieldsString = fields.stream() - .map(String::valueOf) + //.map(String::valueOf) + .map(f -> f instanceof LlvmType.Pointer ? "ptr" : f.toString()) .collect(Collectors.joining(", ")); builder.append(fieldsString); diff --git a/src/main/resources/supported_classes.txt b/src/main/resources/supported_classes.txt index 8559992..ea0251e 100644 --- a/src/main/resources/supported_classes.txt +++ b/src/main/resources/supported_classes.txt @@ -5,6 +5,8 @@ java/lang/Integer java/lang/Number java/lang/Object java/lang/String +java/lang/Throwable java/lang/Void java/io/Serializable +java/util/List java/util/function/Supplier \ No newline at end of file diff --git a/src/main/resources/unsupported_functions.json b/src/main/resources/unsupported_functions.json index cb7b6a3..aec1420 100644 --- a/src/main/resources/unsupported_functions.json +++ b/src/main/resources/unsupported_functions.json @@ -217,9 +217,49 @@ "lastIndexOfLatin1" ] }, + "java/lang/Throwable": { + "byName": [ + "addSuppressed", + "getSuppressed", + "initCause", + "lockedPrintStackTrace", + "printEnclosedStackTrace", + "printStackTrace", + "readObject", + "setStackTrace", + "validateSuppressedExceptionsList", + "getOurStackTrace", + "writeObject", + "getStackTrace", + "writeObject", + "lockedPrintStackTrace", + "printEnclosedStackTrace", + "fillInStackTrace" + ], + "bySignature": [ + { + "name": "", + "signatures": [ + "()V", + "(Ljava/lang/String;)V", + "(Ljava/lang/String;Ljava/lang/Throwable;)V", + "(Ljava/lang/Throwable;)V", + "(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V" + ] + } + ] + }, "java/util/List": { "byName": [ - "spliterator" + "copyOf", + "of", + "sort", + "spliterator", + "getFirst", + "getLast", + "removeFirst", + "removeLast", + "reversed" ] } } \ No newline at end of file diff --git a/src/test/resources/BasicMath.ll b/src/test/resources/BasicMath.ll index a762bcd..2efcc69 100644 --- a/src/test/resources/BasicMath.ll +++ b/src/test/resources/BasicMath.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %BasicMath = type { %BasicMath_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Comparisons.ll b/src/test/resources/Comparisons.ll index 7e975ce..c038805 100644 --- a/src/test/resources/Comparisons.ll +++ b/src/test/resources/Comparisons.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Comparisons = type { %Comparisons_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %Comparisons_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ConstructorAndInstanceMethods.ll b/src/test/resources/ConstructorAndInstanceMethods.ll index f0c6373..74ddaaa 100644 --- a/src/test/resources/ConstructorAndInstanceMethods.ll +++ b/src/test/resources/ConstructorAndInstanceMethods.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ConstructorAndInstanceMethods = type { %ConstructorAndInstanceMethods_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %ConstructorAndInstanceMethods_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Conversions.ll b/src/test/resources/Conversions.ll index 82abec0..cdc89ad 100644 --- a/src/test/resources/Conversions.ll +++ b/src/test/resources/Conversions.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Conversions = type { %Conversions_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %Conversions_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/CustomException.ll b/src/test/resources/CustomException.ll index 9b3fd6b..7a1f30e 100644 --- a/src/test/resources/CustomException.ll +++ b/src/test/resources/CustomException.ll @@ -1,7 +1,7 @@ %"java/lang/Exception" = type { ptr, ptr } %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %CustomException = type { %CustomException_vtable_type*, %java_TypeInfo*, i32 } @@ -12,7 +12,6 @@ declare void @"java/lang/Exception_()V"(%"java/lang/Exception"*) %CustomException_vtable_type = type { i32(%CustomException*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -25,7 +24,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) i32(%CustomException*)* @"CustomException_getCode()I" } -@typeInfo_types = private global [1 x i32] [i32 11] +@typeInfo_types = private global [1 x i32] [i32 13] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 1, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Exceptions.ll b/src/test/resources/Exceptions.ll index 1c1eb8f..bfc699b 100644 --- a/src/test/resources/Exceptions.ll +++ b/src/test/resources/Exceptions.ll @@ -1,8 +1,8 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %CustomException = type { ptr, ptr, i32 } -%"java/lang/Throwable" = type opaque +%"java/lang/Throwable" = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Exceptions = type { %Exceptions_vtable_type*, %java_TypeInfo* } @@ -20,10 +20,9 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %Exceptions_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %CustomException_vtable_type = type { i32(%CustomException*)* } -%"java/lang/Throwable_vtable_type" = type { } +%"java/lang/Throwable_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, %"java/lang/String"(%"java/lang/Throwable"*)*, %"java/lang/String"(%"java/lang/Throwable"*)*, %"java/lang/Throwable"(%"java/lang/Throwable"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -45,13 +44,18 @@ declare void @__cxa_end_catch() @CustomException_type_info = constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @CustomException_type_string } @PCustomException_type_info = constant { ptr, ptr, i32, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv119__pointer_type_infoE, i64 2), ptr @PCustomException_type_string, i32 0, ptr @CustomException_type_info } +@"java/lang/Throwable_type_string" = constant [22 x i8] c"19java/lang/Throwable\00" +@"Pjava/lang/Throwable_type_string" = constant [23 x i8] c"P19java/lang/Throwable\00" +@"java/lang/Throwable_type_info" = constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @"java/lang/Throwable_type_string" } +@"Pjava/lang/Throwable_type_info" = constant { ptr, ptr, i32, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv119__pointer_type_infoE, i64 2), ptr @"Pjava/lang/Throwable_type_string", i32 0, ptr @"java/lang/Throwable_type_info" } + @Exceptions_vtable_data = global %Exceptions_vtable_type { i32(%"java/lang/Object"*)* @"java/lang/Object_hashCode()I", i1(%"java/lang/Object"*, %"java/lang/Object")* @"java/lang/Object_equals(Ljava/lang/Object;)Z", void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ExceptionsData.ll b/src/test/resources/ExceptionsData.ll index 0b1a7ab..e11e9da 100644 --- a/src/test/resources/ExceptionsData.ll +++ b/src/test/resources/ExceptionsData.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %CustomException = type { ptr, ptr, i32 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } @@ -21,7 +21,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %CustomException_vtable_type = type { i32(%CustomException*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -49,7 +48,7 @@ declare void @__cxa_end_catch() void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ForEach.ll b/src/test/resources/ForEach.ll index e7db039..57d3936 100644 --- a/src/test/resources/ForEach.ll +++ b/src/test/resources/ForEach.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ForEach = type { %ForEach_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %ForEach_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ForLoop.ll b/src/test/resources/ForLoop.ll index 0c63cfe..829e660 100644 --- a/src/test/resources/ForLoop.ll +++ b/src/test/resources/ForLoop.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ForLoop = type { %ForLoop_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %ForLoop_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/FunctionOverloading.ll b/src/test/resources/FunctionOverloading.ll index 7e83e46..dae0656 100644 --- a/src/test/resources/FunctionOverloading.ll +++ b/src/test/resources/FunctionOverloading.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %FunctionOverloading = type { %FunctionOverloading_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %FunctionOverloading_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%FunctionOverloading*)*, i32(%FunctionOverloading*, i32)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -34,7 +33,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) i32(%FunctionOverloading*, i32)* @"FunctionOverloading_doSomething(I)I" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/IfStatements.ll b/src/test/resources/IfStatements.ll index 52b5e3b..501308d 100644 --- a/src/test/resources/IfStatements.ll +++ b/src/test/resources/IfStatements.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %IfStatements = type { %IfStatements_vtable_type*, %java_TypeInfo*, i32, i1 } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %IfStatements_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Inheritance.ll b/src/test/resources/Inheritance.ll index eb600fa..2a32079 100644 --- a/src/test/resources/Inheritance.ll +++ b/src/test/resources/Inheritance.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %Parent = type { ptr, ptr, i32, i32 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } @@ -21,7 +21,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %Inheritance_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, void(%Parent*)*, void(%Inheritance*)*, void(%Inheritance*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -39,7 +38,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%Inheritance*)* @"Inheritance_childMethod()V" } -@typeInfo_types = private global [3 x i32] [i32 11, i32 10, i32 1] +@typeInfo_types = private global [3 x i32] [i32 13, i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 3, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/InstanceFields.ll b/src/test/resources/InstanceFields.ll index f457aae..ef01120 100644 --- a/src/test/resources/InstanceFields.ll +++ b/src/test/resources/InstanceFields.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %InstanceFields = type { %InstanceFields_vtable_type*, %java_TypeInfo*, i32, float, double } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %InstanceFields_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/InstanceOf.ll b/src/test/resources/InstanceOf.ll index 38a177d..4426457 100644 --- a/src/test/resources/InstanceOf.ll +++ b/src/test/resources/InstanceOf.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %"java/lang/System" = type opaque %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } @@ -20,7 +20,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/System_vtable_type" = type { } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -43,7 +42,7 @@ declare void @__cxa_end_catch() void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } @@ -95,13 +94,13 @@ label4: ; %object entered scope under name %local.1 ; Line 10 %2 = load %"java/lang/Object"*, %"java/lang/Object"** %local.1 - %3 = call i1 @instanceof(ptr %2, i32 10) + %3 = call i1 @instanceof(ptr %2, i32 12) %4 = sext i1 %3 to i32 %5 = icmp eq i32 %4, 0 br i1 %5, label %label1, label %label5 label5: %6 = load %"java/lang/Object"*, %"java/lang/Object"** %local.1 - %7 = call i1 @instanceof(ptr %6, i32 10) + %7 = call i1 @instanceof(ptr %6, i32 12) br i1 %7, label %label6, label %label7 label7: call void @__cxa_throw(ptr null, ptr null, ptr null) diff --git a/src/test/resources/InterfaceCalls.ll b/src/test/resources/InterfaceCalls.ll index 1ba463b..716fba3 100644 --- a/src/test/resources/InterfaceCalls.ll +++ b/src/test/resources/InterfaceCalls.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %"java/lang/Comparable" = type { ptr, ptr } %"java/lang/System" = type opaque %java_Array = type { i32, ptr } @@ -25,7 +25,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind i32(%"java/lang/Comparable"*, %"java/lang/Object")* @"InterfaceCalls_compareTo(Ljava/lang/Object;)I" } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -50,7 +49,7 @@ declare void @__cxa_end_catch() i32(%InterfaceCalls*, %"java/lang/Object")* @"InterfaceCalls_compareTo(Ljava/lang/Object;)I" } -@typeInfo_types = private global [3 x i32] [i32 10, i32 1, i32 8] +@typeInfo_types = private global [3 x i32] [i32 12, i32 1, i32 8] @typeInfo_interfaces = private global [1 x i32] [i32 8] @typeInfo_interface_tables = private global [1 x ptr] [ptr @"InterfaceCalls_java/lang/Comparable_vtable"] @typeInfo = private global %java_TypeInfo { i32 3, i32* @typeInfo_types, i32 1, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } @@ -192,7 +191,7 @@ label0: %local.1 = alloca %"java/lang/Object"** store %"java/lang/Object"* %param.1, %"java/lang/Object"** %local.1 %2 = load %"java/lang/Object"*, %"java/lang/Object"** %local.1 - %3 = call i1 @instanceof(ptr %2, i32 10) + %3 = call i1 @instanceof(ptr %2, i32 12) br i1 %3, label %label2, label %label3 label3: call void @__cxa_throw(ptr null, ptr null, ptr null) diff --git a/src/test/resources/MutableParameters.ll b/src/test/resources/MutableParameters.ll index e5fc63c..f308e00 100644 --- a/src/test/resources/MutableParameters.ll +++ b/src/test/resources/MutableParameters.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %"java/lang/System" = type opaque %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } @@ -20,7 +20,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/System_vtable_type" = type { } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -35,7 +34,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/NativeMethods.ll b/src/test/resources/NativeMethods.ll index b99edc1..5142298 100644 --- a/src/test/resources/NativeMethods.ll +++ b/src/test/resources/NativeMethods.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %NativeMethods = type { %NativeMethods_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/NativeVarArgMethods.ll b/src/test/resources/NativeVarArgMethods.ll index 2ba1311..994dd05 100644 --- a/src/test/resources/NativeVarArgMethods.ll +++ b/src/test/resources/NativeVarArgMethods.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %NativeVarArgMethods = type { %NativeVarArgMethods_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %NativeVarArgMethods_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ObjectArrays.ll b/src/test/resources/ObjectArrays.ll index 0a8c291..5601699 100644 --- a/src/test/resources/ObjectArrays.ll +++ b/src/test/resources/ObjectArrays.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ObjectArrays = type { %ObjectArrays_vtable_type*, %java_TypeInfo*, i32 } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %ObjectArrays_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Parameters.ll b/src/test/resources/Parameters.ll index 7f9a69b..6c80428 100644 --- a/src/test/resources/Parameters.ll +++ b/src/test/resources/Parameters.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Parameters = type { %Parameters_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Parent.ll b/src/test/resources/Parent.ll index ca3b302..05d8dda 100644 --- a/src/test/resources/Parent.ll +++ b/src/test/resources/Parent.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Parent = type { %Parent_vtable_type*, %java_TypeInfo*, i32, i32 } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %Parent_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, void(%Parent*)*, void(%Parent*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -34,7 +33,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%Parent*)* @"Parent_dynamic()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ReferenceFields.ll b/src/test/resources/ReferenceFields.ll index 05c0dd1..45da2b5 100644 --- a/src/test/resources/ReferenceFields.ll +++ b/src/test/resources/ReferenceFields.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ReferenceFields = type { %ReferenceFields_vtable_type*, %java_TypeInfo*, %java_Array*, %ReferenceFields* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %ReferenceFields_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ReturnArray.ll b/src/test/resources/ReturnArray.ll index 0bfe71a..2913516 100644 --- a/src/test/resources/ReturnArray.ll +++ b/src/test/resources/ReturnArray.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ReturnArray = type { %ReturnArray_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ReturnReference.ll b/src/test/resources/ReturnReference.ll index f61f818..a311d12 100644 --- a/src/test/resources/ReturnReference.ll +++ b/src/test/resources/ReturnReference.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ReturnReference = type { %ReturnReference_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -33,7 +32,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) i32(%ReturnReference*)* @"ReturnReference_returnValue()I" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/ReusedLocals.ll b/src/test/resources/ReusedLocals.ll index b90b87d..33bd05d 100644 --- a/src/test/resources/ReusedLocals.ll +++ b/src/test/resources/ReusedLocals.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %ReusedLocals = type { %ReusedLocals_vtable_type*, %java_TypeInfo*, i32 } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %ReusedLocals_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Simple.ll b/src/test/resources/Simple.ll index 8c4b399..918d6df 100644 --- a/src/test/resources/Simple.ll +++ b/src/test/resources/Simple.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Simple = type { %Simple_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %Simple_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/StandardMain.ll b/src/test/resources/StandardMain.ll index 21b8f90..0aeb017 100644 --- a/src/test/resources/StandardMain.ll +++ b/src/test/resources/StandardMain.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %"java/lang/System" = type opaque %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } @@ -21,7 +21,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/System_vtable_type" = type { } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -36,7 +35,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/StaticFields.ll b/src/test/resources/StaticFields.ll index 885f46a..4cb700f 100644 --- a/src/test/resources/StaticFields.ll +++ b/src/test/resources/StaticFields.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %StaticFields = type { %StaticFields_vtable_type*, %java_TypeInfo* } @@ -19,7 +19,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind @StaticFields_value = global i32 0 %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -34,7 +33,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/StaticFunctions.ll b/src/test/resources/StaticFunctions.ll index 1e6d043..979677f 100644 --- a/src/test/resources/StaticFunctions.ll +++ b/src/test/resources/StaticFunctions.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %StaticFunctions = type { %StaticFunctions_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Strings.ll b/src/test/resources/Strings.ll index ffa3804..710208c 100644 --- a/src/test/resources/Strings.ll +++ b/src/test/resources/Strings.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Strings = type { %Strings_vtable_type*, %java_TypeInfo* } @@ -37,7 +37,6 @@ handlerLabel: } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -52,7 +51,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/Switch.ll b/src/test/resources/Switch.ll index d7b2185..d029bd1 100644 --- a/src/test/resources/Switch.ll +++ b/src/test/resources/Switch.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %Switch = type { %Switch_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %Switch_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/VariableAssignment.ll b/src/test/resources/VariableAssignment.ll index a12bd63..4ffb940 100644 --- a/src/test/resources/VariableAssignment.ll +++ b/src/test/resources/VariableAssignment.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %VariableAssignment = type { %VariableAssignment_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %VariableAssignment_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/VirtualMethods.ll b/src/test/resources/VirtualMethods.ll index b6764cf..beed4cc 100644 --- a/src/test/resources/VirtualMethods.ll +++ b/src/test/resources/VirtualMethods.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %VirtualMethods = type { %VirtualMethods_vtable_type*, %java_TypeInfo*, i32 } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %"java/lang/String_vtable_type" = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)*, i32(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*)*, i8(%"java/lang/String"*)*, %java_Array(%"java/lang/String"*)*, i1(%"java/lang/String"*)*, %"java/lang/String"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")*, %"java/lang/Object"(%"java/lang/String"*, %"java/lang/invoke/MethodHandles$Lookup")* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -33,7 +32,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%VirtualMethods*)* @"VirtualMethods_doSomething()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables } diff --git a/src/test/resources/WhileLoop.ll b/src/test/resources/WhileLoop.ll index 43dbce6..c1cc990 100644 --- a/src/test/resources/WhileLoop.ll +++ b/src/test/resources/WhileLoop.ll @@ -1,6 +1,6 @@ %"java/lang/Object" = type { ptr, ptr } %"java/lang/invoke/MethodHandles$Lookup" = type opaque -%"java/lang/String" = type { ptr, ptr, %java_Array*, i8, i32, i1 } +%"java/lang/String" = type { ptr, ptr, ptr, i8, i32, i1 } %java_Array = type { i32, ptr } %java_TypeInfo = type { i32, i32*, i32, i32*, ptr } %WhileLoop = type { %WhileLoop_vtable_type*, %java_TypeInfo* } @@ -17,7 +17,6 @@ declare void @"java/lang/Object_wait0(J)V"(%"java/lang/Object"*, i64) nounwind %WhileLoop_vtable_type = type { i32(%"java/lang/Object"*)*, i1(%"java/lang/Object"*, %"java/lang/Object")*, void(%"java/lang/Object"*)* } %"java/util/stream/IntStream" = type opaque -%"java/util/function/BiFunction" = type opaque declare i32 @__gxx_personality_v0(...) declare i1 @instanceof(ptr,i32) declare ptr @type_interface_vtable(ptr,i32) @@ -32,7 +31,7 @@ declare void @llvm.memset.p0.i64(ptr,i8,i64,i1) void(%"java/lang/Object"*)* @"java/lang/Object_finalize()V" } -@typeInfo_types = private global [2 x i32] [i32 10, i32 1] +@typeInfo_types = private global [2 x i32] [i32 12, i32 1] @typeInfo_interfaces = private global [0 x i32] [] @typeInfo_interface_tables = private global [0 x ptr] [] @typeInfo = private global %java_TypeInfo { i32 2, i32* @typeInfo_types, i32 0, i32* @typeInfo_interfaces, ptr @typeInfo_interface_tables }