aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/class.c
diff options
context:
space:
mode:
authorAndrew Haley <aph@cygnus.com>1999-02-04 08:15:41 +0000
committerAndrew Haley <aph@gcc.gnu.org>1999-02-04 08:15:41 +0000
commit954d8a5d442e7274136ae4486483912e4c7eae78 (patch)
tree047b21361148e144e97d5503e3d53d7997be2ec1 /gcc/java/class.c
parent7a19950eda0f37f205219e5a9c61477051c7f681 (diff)
downloadgcc-954d8a5d442e7274136ae4486483912e4c7eae78.zip
gcc-954d8a5d442e7274136ae4486483912e4c7eae78.tar.gz
gcc-954d8a5d442e7274136ae4486483912e4c7eae78.tar.bz2
class.c (build_utf8_ref): Output signatures using '.' as a separator, rather than '/'.
1999-02-04 Andrew Haley <aph@cygnus.com> * class.c (build_utf8_ref): Output signatures using '.' as a separator, rather than '/'. (make_class_data): Likewise. From-SVN: r25022
Diffstat (limited to 'gcc/java/class.c')
-rw-r--r--gcc/java/class.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 8b51559..69fef55 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -557,10 +557,21 @@ build_utf8_ref (name)
PUSH_FIELD (ctype, field, "data", str_type);
FINISH_RECORD (ctype);
START_RECORD_CONSTRUCTOR (cinit, ctype);
- name_hash = hashUtf8String (name_ptr, name_len) & 0xFFFF;
- PUSH_FIELD_VALUE (cinit, "hash", build_int_2 (name_hash, 0));
- PUSH_FIELD_VALUE (cinit, "length", build_int_2 (name_len, 0));
- string = build_string (name_len, name_ptr);
+ {
+ int i;
+ /* Rewrite .class file internal form to canonical Java form. */
+#ifdef __GNUC__
+ char buffer[name_len];
+#else
+ char *buffer = (char *)alloca (name_len);
+#endif
+ for (i = 0; i < name_len; i++)
+ buffer[i] = (name_ptr[i] == '/' ? '.' : name_ptr[i]);
+ name_hash = hashUtf8String (buffer, name_len) & 0xFFFF;
+ PUSH_FIELD_VALUE (cinit, "hash", build_int_2 (name_hash, 0));
+ PUSH_FIELD_VALUE (cinit, "length", build_int_2 (name_len, 0));
+ string = build_string (name_len, buffer);
+ }
TREE_TYPE (string) = str_type;
PUSH_FIELD_VALUE (cinit, "data", string);
FINISH_RECORD_CONSTRUCTOR (cinit);
@@ -1120,13 +1131,7 @@ make_class_data (type)
START_RECORD_CONSTRUCTOR (cons, class_type_node);
PUSH_SUPER_VALUE (cons, temp);
PUSH_FIELD_VALUE (cons, "next", null_pointer_node);
-#if 0
- /* Need to fix _Jv_FindClassFromSignature. */
PUSH_FIELD_VALUE (cons, "name", build_utf8_ref (DECL_NAME (type_decl)));
-#else
- PUSH_FIELD_VALUE (cons, "name",
- build_utf8_ref (build_internal_class_name (type)));
-#endif
PUSH_FIELD_VALUE (cons, "accflags",
build_int_2 (get_access_flags_from_decl (type_decl), 0));