diff options
author | paltherr <paltherr@epfl.ch> | 2004-02-27 23:59:05 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-02-27 23:59:05 +0000 |
commit | 12bd290e160247877e03780de47fcd09e3b8f2bb (patch) | |
tree | e7e943b62d7c765470b602d3ef2665795d7a351d /sources/scalac/backend/jvm | |
parent | 01599fa37b24e623d1bc6836a8f65548bd5fdcea (diff) | |
download | scala-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.java | 25 |
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; } /** |