diff options
author | Andrew Haley <aph@cygnus.com> | 1999-02-04 08:15:41 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 1999-02-04 08:15:41 +0000 |
commit | 954d8a5d442e7274136ae4486483912e4c7eae78 (patch) | |
tree | 047b21361148e144e97d5503e3d53d7997be2ec1 /gcc/java/class.c | |
parent | 7a19950eda0f37f205219e5a9c61477051c7f681 (diff) | |
download | gcc-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.c | 25 |
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)); |