summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2008-09-02 22:00:23 +0000
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2008-09-02 22:00:23 +0000
commit38a8042079b187f53de9139939c8885e96c6212e (patch)
tree163b046d63677357dcf0ede8e3d2cdb64ee2de85
parentb606d2e809c065a4727b027ed862c50af8de9c29 (diff)
downloadclasspath-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--ChangeLog11
-rw-r--r--tools/gnu/classpath/tools/javah/ClassWrapper.java26
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 <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);