From b707a0f03eedd41d4a34cfb61fdc8e0830ccef7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrico=20Schr=C3=B6dter?= Date: Thu, 7 Apr 2016 15:44:29 +0200 Subject: [PATCH] Bugfix: Methodenparameter --- src/de/dhbwstuttgart/bytecode/ClassGenerator.java | 2 +- src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java | 4 ++++ src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/de/dhbwstuttgart/bytecode/ClassGenerator.java b/src/de/dhbwstuttgart/bytecode/ClassGenerator.java index ef556c50..393d2e6e 100644 --- a/src/de/dhbwstuttgart/bytecode/ClassGenerator.java +++ b/src/de/dhbwstuttgart/bytecode/ClassGenerator.java @@ -53,7 +53,7 @@ public class ClassGenerator extends ClassGen{ } public DHBWInstructionFactory getInstructionFactory() { - return factory ; + return factory; } /** diff --git a/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java b/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java index fb555342..853ddae1 100644 --- a/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java +++ b/src/de/dhbwstuttgart/bytecode/DHBWInstructionFactory.java @@ -158,4 +158,8 @@ public class DHBWInstructionFactory extends InstructionFactory{ public Attribute createSignatureAttribute(String signature) { return new Signature(cp.addUtf8("Signature"),2,cp.addUtf8(signature),cp.getConstantPool()); } + + public void resetStoreIndexes() { + storeIndexes = new HashMap<>(); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java b/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java index 051fafff..7b7b82bb 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java @@ -12,6 +12,7 @@ import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; +import de.dhbwstuttgart.bytecode.DHBWInstructionFactory; import de.dhbwstuttgart.logger.Logger; import de.dhbwstuttgart.myexception.JVMCodeException; import de.dhbwstuttgart.syntaxtree.Method; @@ -324,7 +325,8 @@ public class MethodCall extends Expr @Override public InstructionList genByteCode(ClassGenerator cg, TypeinferenceResultSet rs) { InstructionList il = new InstructionList(); - InstructionFactory _factory = new InstructionFactory(cg, cg.getConstantPool()); + DHBWInstructionFactory _factory = cg.getInstructionFactory(); + _factory.resetStoreIndexes(); il.append(receiver.get_Expr().genByteCode(cg, rs)); @@ -343,6 +345,8 @@ public class MethodCall extends Expr argumentTypen = new org.apache.commons.bcel6.generic.Type[this.getArgumentList().size()]; int i = 0; for(Expr argument : this.arglist.expr){ + _factory.getStoreIndex(argument.get_Name()); + argumentTypen[i] = argument.getType().getBytecodeType(cg, rs); //Das Argument auf den Stack legen: il.append(argument.genByteCode(cg, rs));