diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2008-09-02 22:00:23 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2008-09-02 22:00:23 +0000 |
commit | 38a8042079b187f53de9139939c8885e96c6212e (patch) | |
tree | 163b046d63677357dcf0ede8e3d2cdb64ee2de85 | |
parent | b606d2e809c065a4727b027ed862c50af8de9c29 (diff) | |
download | classpath-38a8042079b187f53de9139939c8885e96c6212e.tar.gz |
2008-09-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
* tools/gnu/classpath/tools/javah/ClassWrapper.java:
(makeVtable()): Populate methodNameMap.
(printMethods(CniPrintStream)): Always use pre-populated
methodNameMap for bridge targets.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | tools/gnu/classpath/tools/javah/ClassWrapper.java | 26 |
2 files changed, 22 insertions, 15 deletions
@@ -1,7 +1,14 @@ +2008-09-02 Andrew John Hughes <gnu_andrew@member.fsf.org> + + * 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 <neugens@aicas.com> - * 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 <neugens@aicas.com> 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); |