diff --git a/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java b/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java index 853ddae1..c9a60d89 100644 --- a/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java +++ b/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java @@ -140,12 +140,12 @@ public class DHBWInstructionFactory extends InstructionFactory{ } public LocalVariableInstruction createLoad(org.apache.commons.bcel6.generic.Type bytecodeType, String variableName) { - return InstructionFactory.createLoad(bytecodeType, storeIndexes.get(variableName)); + return InstructionFactory.createLoad(bytecodeType, getStoreIndex(variableName)); } public Integer getStoreIndex(String variableName) { if(!storeIndexes.containsKey(variableName)){ - storeIndexes.put(variableName, storeIndexes.size()+1); + storeIndexes.put(variableName, storeIndexes.size()); } return storeIndexes.get(variableName); @@ -160,6 +160,6 @@ public class DHBWInstructionFactory extends InstructionFactory{ } public void resetStoreIndexes() { - storeIndexes = new HashMap<>(); + storeIndexes.clear(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java index a5a319b0..ee4f4579 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java @@ -431,7 +431,7 @@ public class LocalVarDecl extends Statement implements TypeInsertable @Override public InstructionList genByteCode(ClassGenerator _cg, TypeinferenceResultSet rs) { - // TODO Auto-generated method stub + _cg.getInstructionFactory().getStoreIndex(get_Name()); return new InstructionList(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java b/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java index 7b7b82bb..affe569d 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java @@ -326,6 +326,7 @@ public class MethodCall extends Expr public InstructionList genByteCode(ClassGenerator cg, TypeinferenceResultSet rs) { InstructionList il = new InstructionList(); DHBWInstructionFactory _factory = cg.getInstructionFactory(); + //TODO: später wiederherstelln? _factory.resetStoreIndexes(); il.append(receiver.get_Expr().genByteCode(cg, rs)); diff --git a/test/bytecode/types/OL.jav b/test/bytecode/types/OL.jav index 66e95aeb..f98887b2 100644 --- a/test/bytecode/types/OL.jav +++ b/test/bytecode/types/OL.jav @@ -7,7 +7,7 @@ class OL { class Main { - main(x) { + main(x) { ol; ol = new OL(); return ol.m(x); diff --git a/test/bytecode/types/OLTest.java b/test/bytecode/types/OLTest.java index 4b369283..a425b77b 100644 --- a/test/bytecode/types/OLTest.java +++ b/test/bytecode/types/OLTest.java @@ -33,13 +33,13 @@ public class OLTest extends SourceFileBytecodeTest{ URL url = file.toURL(); URL[] urls = new URL[]{url}; - Class stringVector = classLoader.loadClass("Integer"); + Integer integer = new Integer(1); Class[] params = new Class[1]; - params[0] = stringVector; + params[0] = integer.getClass(); Method method = cls.getDeclaredMethod("m", params); - method.invoke(obj, stringVector.newInstance()); + method.invoke(obj, integer); assertTrue(true); }catch(Exception e){ throw new RuntimeException(e); @@ -59,13 +59,13 @@ public class OLTest extends SourceFileBytecodeTest{ URL url = file.toURL(); URL[] urls = new URL[]{url}; - Class stringVector = classLoader.loadClass("Boolean"); + Boolean bool = new Boolean(true); Class[] params = new Class[1]; - params[0] = stringVector; + params[0] = bool.getClass(); Method method = cls.getDeclaredMethod("m", params); - method.invoke(obj, stringVector.newInstance()); + method.invoke(obj, bool); assertTrue(true); }catch(Exception e){ throw new RuntimeException(e); diff --git a/test/bytecode/types/Overloading.jav b/test/bytecode/types/Overloading.jav index 0c0fdb2b..66a2ad81 100644 --- a/test/bytecode/types/Overloading.jav +++ b/test/bytecode/types/Overloading.jav @@ -10,8 +10,12 @@ class Overloading{ } - main(String[] args) { - new Overloading().method(new Vector ()); + main(String[] args) { + ol; + ol = new Overloading(); + v; + v = new Vector (); + ol.method(v); } } \ No newline at end of file