From aa6a6beb9371cbcb621b0e0f579b0b09e907e65b Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Thu, 25 Aug 2016 19:52:06 +0200 Subject: [PATCH] StackMapTable-Fix --- lib/bcel-6.1-SNAPSHOT-sources.jar | Bin 684621 -> 684723 bytes lib/bcel-6.1-SNAPSHOT.jar | Bin 682979 -> 682941 bytes src/de/dhbwstuttgart/core/MyCompiler.java | 1 - .../dhbwstuttgart/syntaxtree/SourceFile.java | 8 --- .../statement/LambdaExpression.java | 15 ++-- .../dhbwstuttgart/syntaxtree/type/FunN.java | 19 ++--- test/bytecode/Fun0.java | 3 + test/bytecode/LambdaExpr.jav | 2 +- test/bytecode/LambdaRunnable.jav | 7 ++ test/bytecode/LambdaRunnableTest.java | 40 +++++++++++ test/bytecode/OL.jav | 16 +++++ test/bytecode/OLTest.java | 39 +++++++++++ test/bytecode/Test.java | 6 ++ test/bytecode/asdf.java | 8 +++ .../stackmaptable/StackMapTableGenTests.java | 66 ++++++++++++++++++ test/bytecode/stackmaptable/Test.java | 6 ++ 16 files changed, 202 insertions(+), 34 deletions(-) create mode 100644 test/bytecode/Fun0.java create mode 100644 test/bytecode/LambdaRunnable.jav create mode 100644 test/bytecode/LambdaRunnableTest.java create mode 100755 test/bytecode/OL.jav create mode 100644 test/bytecode/OLTest.java create mode 100644 test/bytecode/Test.java create mode 100644 test/bytecode/asdf.java create mode 100644 test/bytecode/stackmaptable/StackMapTableGenTests.java create mode 100644 test/bytecode/stackmaptable/Test.java diff --git a/lib/bcel-6.1-SNAPSHOT-sources.jar b/lib/bcel-6.1-SNAPSHOT-sources.jar index 20c942ae10afa255dec475765fc634f334838bf4..6b1fdda0c01f7794d9bf459e7e965ed59f480089 100644 GIT binary patch delta 23342 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 VnrEq+sfj{nsS%bVHxvZS{{z`SSakpZ delta 23154 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%0D7>ULp}`PjIeeY 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%0D;%BTla`6Q$EXO-sC0?_FK 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 J5eBQ^{{WfjwC(@^ diff --git a/src/de/dhbwstuttgart/core/MyCompiler.java b/src/de/dhbwstuttgart/core/MyCompiler.java index ef2bcdde..c363041d 100755 --- a/src/de/dhbwstuttgart/core/MyCompiler.java +++ b/src/de/dhbwstuttgart/core/MyCompiler.java @@ -157,7 +157,6 @@ public class MyCompiler implements MyCompilerAPI{ FunNInterface funN = new FunNInterface(i); ret.add(funN.getPublicFieldAssumptions()); } - //Keine FunVoidInterfaces in den Assumptions. for(int i = 0; i<6; i++){ FunVoidNInterface funN = new FunVoidNInterface(i); ret.add(funN.getPublicFieldAssumptions()); diff --git a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java index 7b9641dc..175639d7 100755 --- a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java +++ b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java @@ -893,7 +893,6 @@ public class SourceFile ret.add(funN.getPublicFieldAssumptions()); } - return ret; //TODO: Diese TypeAssumptions mit basic-Assumptions füllen } // ino.end @@ -1030,13 +1029,11 @@ public class SourceFile //for(SyntaxTreeNode node : this.getChildren())node.parserPostProcessing(this); } - @Override public SyntaxTreeNode getParent() { return null; } - @Override public Menge getChildren() { Menge ret = new Menge(); @@ -1046,7 +1043,6 @@ public class SourceFile return ret; } - /** * SourceFile stellt eine geparste Java-Datei dar. Mit dieser Methode wird der Name der eingelesenen Datei gesetzt. * @param filename - Der Name der eingelesenen JavaDatei @@ -1056,16 +1052,12 @@ public class SourceFile //this.filename = filename; } - - @Override public int getOffset() { // TODO Auto-generated method stub return 0; } - - @Override public int getVariableLength() { // TODO Auto-generated method stub diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java index 3c2044cf..85f5327f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java @@ -235,10 +235,13 @@ public class LambdaExpression extends Expr{ il.append(var.createLoad(cg, rs)); //Hier kann noch der cg vom Lambda-Ausdruck verwendet werden } } + //Das sind die zusätzlich benötigten Parameter für den invokedynamic aufruf: (hier gehört auch noch das "this" dazu) org.apache.bcel.generic.Type[] additionalParameters = lambdaMethodParams.getBytecodeTypeList(cg, rs); for(FormalParameter param : params){ lambdaMethodParams.set_AddParameter(param); } + //Im Anschluss wird der this Parameter wieder von den LambdaMethodParams entfernt! + lambdaMethodParams.formalparameter.remove(0); /* * Generieren der Methode @@ -283,7 +286,7 @@ public class LambdaExpression extends Expr{ int innerClassName = cp.addUtf8("Lookup"); int outerClassIndex = cp.addClass("java.lang.invoke.MethodHandles"); - int accessFlags = Constants.ACC_FINAL + Constants.ACC_STATIC + Constants.ACC_PUBLIC; + int accessFlags = Const.ACC_FINAL + Const.ACC_STATIC + Const.ACC_PUBLIC; InnerClass innerClassAttribute = new InnerClass(innerClassIndex, outerClassIndex, innerClassName,accessFlags); cg.addInnerClass(innerClassAttribute); @@ -292,17 +295,11 @@ public class LambdaExpression extends Expr{ */ String interfaceMethodName = "apply"; //Das ist ein Hack, funktioniert momentan, da nur FunN Interfaces für LambdaAusdrücke funktionieren - String invokeDynamicType = org.apache.bcel.generic.Type.getMethodSignature(lambdaType.getBytecodeType(cg, rs), additionalParameters); + //String invokeDynamicType = org.apache.bcel.generic.Type.getMethodSignature(lambdaType.getBytecodeType(cg, rs), additionalParameters); + String invokeDynamicType = org.apache.bcel.generic.Type.getMethodSignature(new org.apache.bcel.generic.ObjectType("Fun0"), additionalParameters); il.append(cg.getInstructionFactory().createInvokeDynamic(interfaceMethodName,invokeDynamicType, bMethod)); return il; } - private String getLambdaSignature(ClassGenerator cg, TypeinferenceResultSet rs){ - String typeSignature = "("; - typeSignature+=this.getParentClass().getType().getBytecodeType(cg, rs).getSignature(); - typeSignature += ")"; - typeSignature += this.lambdaType.getBytecodeType(cg, rs).getSignature(); - return typeSignature; - } } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FunN.java b/src/de/dhbwstuttgart/syntaxtree/type/FunN.java index 0e23a2a2..7657c791 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/FunN.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/FunN.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import de.dhbwstuttgart.typeinference.FunNInterface; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; import de.dhbwstuttgart.bytecode.ClassGenerator; @@ -152,22 +153,10 @@ public class FunN extends RefType { return ret; } - /* - public CMethodTypeAssumption toCMethodTypeAssumption() { - //CMethodTypeAssumption ret = new CMethodTypeAssumption(this, "apply", R, this.T.size(), 0,this.getOffset(),new Menge(),null); - MethodAssumption ret = null; - Method method = new Method(); - method.set_Method_Name(this.getName()); - ParameterList paraList = new ParameterList(); - method.setParameterList(this.get_ParaList().clone()); - for(Type t : T){ - - //ret.addParaAssumption(TypeAssumptions.createCParaTypeAssumption(t.get_Name(), t)); - } - return ret; + public FunNInterface getCorrespondingInterface(){ + return null; } - */ - + /* @Override public JavaCodeResult printJavaCode(ResultSet resultSet){ diff --git a/test/bytecode/Fun0.java b/test/bytecode/Fun0.java new file mode 100644 index 00000000..da05fdb1 --- /dev/null +++ b/test/bytecode/Fun0.java @@ -0,0 +1,3 @@ +interface Fun0{ + A apply(); +} diff --git a/test/bytecode/LambdaExpr.jav b/test/bytecode/LambdaExpr.jav index 26c9a0be..882f8f9e 100644 --- a/test/bytecode/LambdaExpr.jav +++ b/test/bytecode/LambdaExpr.jav @@ -3,7 +3,7 @@ class LambdaExpr { void method() { lambda; - lambda = ()-> 1; + lambda = () -> 1; } } \ No newline at end of file diff --git a/test/bytecode/LambdaRunnable.jav b/test/bytecode/LambdaRunnable.jav new file mode 100644 index 00000000..eb2c69c1 --- /dev/null +++ b/test/bytecode/LambdaRunnable.jav @@ -0,0 +1,7 @@ +class LambdaRunnable { + + op = ()->method(); + + void method() { + } +} \ No newline at end of file diff --git a/test/bytecode/LambdaRunnableTest.java b/test/bytecode/LambdaRunnableTest.java new file mode 100644 index 00000000..c2d3a4bd --- /dev/null +++ b/test/bytecode/LambdaRunnableTest.java @@ -0,0 +1,40 @@ +package bytecode; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.IOException; + +import junit.framework.TestCase; + +import org.junit.Ignore; +import org.junit.Test; + +import plugindevelopment.TypeInsertTester; +import de.dhbwstuttgart.core.MyCompiler; +import de.dhbwstuttgart.core.MyCompilerAPI; +import de.dhbwstuttgart.logger.LoggerConfiguration; +import de.dhbwstuttgart.logger.Section; +import de.dhbwstuttgart.parser.JavaParser.yyException; +import de.dhbwstuttgart.typeinference.ByteCodeResult; +import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; +import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; + +public class LambdaRunnableTest extends SourceFileBytecodeTest{ + @Override + protected void init() { + testName = "LambdaRunnable"; + rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + } + + @Test + public void testConstruct() throws Exception{ + ClassLoader classLoader = getClassLoader(); + + Class cls = classLoader.loadClass(testName); + + Object obj = cls.newInstance(); + assertTrue(true); + } +} diff --git a/test/bytecode/OL.jav b/test/bytecode/OL.jav new file mode 100755 index 00000000..5c102f6a --- /dev/null +++ b/test/bytecode/OL.jav @@ -0,0 +1,16 @@ +class OL { + + m(Integer x) { return x + x; } + + m(Boolean x) {return x || x; } +} + +class Main { + + main(x) { + ol; + ol = new OL(); + return ol.m(x); + } + +} diff --git a/test/bytecode/OLTest.java b/test/bytecode/OLTest.java new file mode 100644 index 00000000..e8cdd5ee --- /dev/null +++ b/test/bytecode/OLTest.java @@ -0,0 +1,39 @@ +package bytecode; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.IOException; + +import junit.framework.TestCase; + +import org.junit.Test; + +import plugindevelopment.TypeInsertTester; +import de.dhbwstuttgart.core.MyCompiler; +import de.dhbwstuttgart.core.MyCompilerAPI; +import de.dhbwstuttgart.logger.LoggerConfiguration; +import de.dhbwstuttgart.logger.Section; +import de.dhbwstuttgart.parser.JavaParser.yyException; +import de.dhbwstuttgart.typeinference.ByteCodeResult; +import de.dhbwstuttgart.typeinference.Menge; +import de.dhbwstuttgart.typeinference.TypeinferenceResultSet; +import de.dhbwstuttgart.typeinference.typedeployment.TypeInsertSet; + +public class OLTest extends SourceFileBytecodeTest{ + @Override + protected void init() { + testName = "OL"; + rootDirectory = System.getProperty("user.dir")+"/test/bytecode/"; + } + + @Test + public void testConstruct() throws Exception{ + ClassLoader classLoader = getClassLoader(); + + Class cls = classLoader.loadClass(testName); + + Object obj = cls.newInstance(); + assertTrue(true); + } +} \ No newline at end of file diff --git a/test/bytecode/Test.java b/test/bytecode/Test.java new file mode 100644 index 00000000..0cd36a62 --- /dev/null +++ b/test/bytecode/Test.java @@ -0,0 +1,6 @@ +class Test{ + public static void main(String[] args){ + System.out.println(new Main().main(true)); + new LambdaExpr().method(); +} +} diff --git a/test/bytecode/asdf.java b/test/bytecode/asdf.java new file mode 100644 index 00000000..efdb9dc8 --- /dev/null +++ b/test/bytecode/asdf.java @@ -0,0 +1,8 @@ +class ASDFTest{ + +public static void main(String[] args){ + VariableMultimethods test = new VariableMultimethods(); + System.out.println(test.method(test.method(1,2),test.method(3),0)); +} + +} diff --git a/test/bytecode/stackmaptable/StackMapTableGenTests.java b/test/bytecode/stackmaptable/StackMapTableGenTests.java new file mode 100644 index 00000000..f100c5c1 --- /dev/null +++ b/test/bytecode/stackmaptable/StackMapTableGenTests.java @@ -0,0 +1,66 @@ +package bytecode.stackmaptable; + +import junit.framework.TestCase; +import org.apache.bcel.Repository; +import org.apache.bcel.classfile.*; +import org.apache.bcel.generic.ConstantPoolGen; +import org.apache.bcel.generic.MethodGen; +import org.apache.bcel.generic.StackMapTableGen; + +import java.util.List; + +public class StackMapTableGenTests extends TestCase { + + public static class StackMapTableTest { + public void method1(){} + + Integer method2(Boolean b){ + if(b){ + return 1; + }else{ + return 2; + } + } + + public static void staticMethod1(){ + int a = 1; + int b = 2; + while(true){ + a = b; + } + } + + } + + private MethodGen getMethod(Class cls, String name) throws ClassNotFoundException { + JavaClass jc = Repository.lookupClass(cls); + ConstantPoolGen cp = new ConstantPoolGen(jc.getConstantPool()); + for (Method method : jc.getMethods()) { + if (method.getName().equals(name)) { + return new MethodGen(method, jc.getClassName(), cp); + } + } + + fail("Method " + name + " not found in class " + cls); + return null; + } + + public void testFrameSplittingTrivial() throws Exception{ + MethodGen mg = getMethod(StackMapTableTest.class, "method1"); + StackMapTableGen sg = new StackMapTableGen(mg,mg.getConstantPool()); + List blocks = sg.splitIntoBlocks(mg.getInstructionList(), mg.getConstantPool()); + assertTrue(blocks.size() == 1); //There is only one frame, because the method1 is empty + } + + public void testStaticMethods() throws Exception{ + MethodGen mg = getMethod(StackMapTableTest.class, "staticMethod1"); + StackMapTableGen sg = new StackMapTableGen(mg,mg.getConstantPool()); + try{ + StackMap stackMap = sg.getStackMap(); + assertTrue(stackMap.getStackMap().length > 0); + }catch(Exception e){ + e.printStackTrace(); + } + } + +} diff --git a/test/bytecode/stackmaptable/Test.java b/test/bytecode/stackmaptable/Test.java new file mode 100644 index 00000000..442df603 --- /dev/null +++ b/test/bytecode/stackmaptable/Test.java @@ -0,0 +1,6 @@ +class Test{ + public static void main(String[] args){ + System.out.println(new IfStatement().methode(true)); + System.out.println(new IfStatement().methode(false)); + } +}