From: bdemsky Date: Sat, 4 Nov 2006 03:29:30 +0000 (+0000) Subject: fixed bug with wrong method being called in inheritance situations X-Git-Tag: preEdgeChange~765 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=456fd91c6300e17269b0d36ba8be0db02c632819;p=IRC.git fixed bug with wrong method being called in inheritance situations --- diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index e3394adc..e33fc83c 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -1027,6 +1027,8 @@ public class BuildCode { if (fc.getReturnTemp()!=null) output.print(generateTemp(fm,fc.getReturnTemp())+"="); + + /* Do we need to do virtual dispatch? */ if (md.isStatic()||md.getReturnType()==null||singleCall(fc.getThis().getType().getClassDesc(),md)) { output.print(cn.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()); } else { diff --git a/Robust/src/IR/MethodDescriptor.java b/Robust/src/IR/MethodDescriptor.java index 115e3073..979a4b64 100644 --- a/Robust/src/IR/MethodDescriptor.java +++ b/Robust/src/IR/MethodDescriptor.java @@ -136,10 +136,13 @@ public class MethodDescriptor extends Descriptor { public String toString() { String st=""; + String type=""; + if (cd!=null) + type=cd+"."; if (returntype!=null) - st=modifier.toString()+returntype.toString()+" "+identifier+"("; + st=modifier.toString()+returntype.toString()+" "+type+identifier+"("; else - st=modifier.toString()+" "+identifier+"("; + st=modifier.toString()+" "+type+identifier+"("; for(int i=0;i