summaryrefslogtreecommitdiff
path: root/sources/scalac/backend/jvm
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-02-27 23:59:05 +0000
committerpaltherr <paltherr@epfl.ch>2004-02-27 23:59:05 +0000
commit12bd290e160247877e03780de47fcd09e3b8f2bb (patch)
treee7e943b62d7c765470b602d3ef2665795d7a351d /sources/scalac/backend/jvm
parent01599fa37b24e623d1bc6836a8f65548bd5fdcea (diff)
downloadscala-12bd290e160247877e03780de47fcd09e3b8f2bb.tar.gz
scala-12bd290e160247877e03780de47fcd09e3b8f2bb.tar.bz2
scala-12bd290e160247877e03780de47fcd09e3b8f2bb.zip
- Added method Primitives.getJavaSignature
- Changed GenJVM.javaName to use Primitives.getJavaSignature Added - caching to GenJVM.javaName
Diffstat (limited to 'sources/scalac/backend/jvm')
-rw-r--r--sources/scalac/backend/jvm/GenJVM.java25
1 files changed, 9 insertions, 16 deletions
diff --git a/sources/scalac/backend/jvm/GenJVM.java b/sources/scalac/backend/jvm/GenJVM.java
index 7a723504a3..fac68d6ef4 100644
--- a/sources/scalac/backend/jvm/GenJVM.java
+++ b/sources/scalac/backend/jvm/GenJVM.java
@@ -1412,29 +1412,22 @@ class GenJVM {
/// Names
//////////////////////////////////////////////////////////////////////
+ protected HashMap nameMap/*<Symbol,String>*/ = new HashMap();
+
/**
* Return a Java-compatible version of the name of the given
* symbol. The returned name is mangled and includes the names of
* the owners.
*/
protected String javaName(Symbol sym) {
+ Object value = nameMap.get(sym);
+ if (value != null) return (String)value;
assert sym.isClass() || sym.isModule() : Debug.show(sym);
- if (sym == defs.ANY_CLASS || sym == defs.ANYREF_CLASS)
- return JAVA_LANG_OBJECT;
- else {
- StringBuffer buf = new StringBuffer(sym.name.toString());
- if ((sym.isModule() || sym.isModuleClass()) && !sym.isJava())
- buf.append('$');
- for (sym = sym.owner(); !sym.isPackage(); sym = sym.owner()) {
- buf.insert(0, '$');
- buf.insert(0, sym.name);
- }
- if (!sym.isRoot()) {
- buf.insert(0, '.');
- buf.insert(0, sym.fullName());
- }
- return buf.toString();
- }
+ String signature = prims.getJavaSignature(sym);
+ if ((sym.isModule() || sym.isModuleClass()) && !sym.isJava())
+ signature = signature + '$';
+ nameMap.put(sym, signature);
+ return signature;
}
/**