From 38a8042079b187f53de9139939c8885e96c6212e Mon Sep 17 00:00:00 2001 From: Andrew John Hughes Date: Tue, 2 Sep 2008 22:00:23 +0000 Subject: 2008-09-02 Andrew John Hughes * tools/gnu/classpath/tools/javah/ClassWrapper.java: (makeVtable()): Populate methodNameMap. (printMethods(CniPrintStream)): Always use pre-populated methodNameMap for bridge targets. --- ChangeLog | 11 ++++++++-- tools/gnu/classpath/tools/javah/ClassWrapper.java | 26 +++++++++++------------ 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9dac44a64..c4b1f27c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,14 @@ +2008-09-02 Andrew John Hughes + + * tools/gnu/classpath/tools/javah/ClassWrapper.java: + (makeVtable()): Populate methodNameMap. + (printMethods(CniPrintStream)): Always use pre-populated + methodNameMap for bridge targets. + 2008-09-01 Mario Torre - * gnu/java/awt/peer/x/XImage.java (XImageProducer): remove @Override - annotation to allow compilation on javac < 1.5 + * gnu/java/awt/peer/x/XImage.java (XImageProducer): remove @Override + annotation to allow compilation on javac < 1.6 and ecj < 3.4. 2008-09-01 Mario Torre diff --git a/tools/gnu/classpath/tools/javah/ClassWrapper.java b/tools/gnu/classpath/tools/javah/ClassWrapper.java index 2172628a6..43f31a2fd 100644 --- a/tools/gnu/classpath/tools/javah/ClassWrapper.java +++ b/tools/gnu/classpath/tools/javah/ClassWrapper.java @@ -217,7 +217,18 @@ public class ClassWrapper MethodNode m = (MethodNode) i.next(); String desc = MethodHelper.getBridgeTarget(m); if (desc != null) - bridgeTargets.add(m.name + desc); + { + String sum = m.name + desc; + boolean newTarget = bridgeTargets.add(sum); + if (newTarget) + { + // Bridge target that is new in this class. + String cname = this.name; + int index = cname.lastIndexOf('/'); + cname = cname.substring(index + 1); + methodNameMap.put(sum, cname + "$" + m.name); + } + } } } @@ -247,18 +258,7 @@ public class ClassWrapper String nameToUse; String sum = m.name + m.desc; if (bridgeTargets.contains(sum)) - { - if (methodNameMap.containsKey(sum)) - nameToUse = (String) methodNameMap.get(sum); - else - { - // Bridge target that is new in this class. - String cname = this.name; - int index = cname.lastIndexOf('/'); - cname = cname.substring(index + 1); - nameToUse = cname + "$" + m.name; - } - } + nameToUse = (String) methodNameMap.get(sum); else nameToUse = Keywords.getCxxName(m.name); methodNameMap.put(sum, nameToUse); -- cgit v1.2.1