gjavah.c (print_name): In JNI case, correctly quote string.
* gjavah.c (print_name): In JNI case, correctly quote string. (print_method_info): Don't handle overrides in JNI mode. From-SVN: r32124
This commit is contained in:
parent
9fc336c7e6
commit
c45c5e092d
|
@ -1,3 +1,8 @@
|
|||
2000-02-23 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* gjavah.c (print_name): In JNI case, correctly quote string.
|
||||
(print_method_info): Don't handle overrides in JNI mode.
|
||||
|
||||
2000-02-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
|
||||
|
|
|
@ -235,17 +235,6 @@ java_double_finite (d)
|
|||
return (u.l & D_NAN_MASK) != D_NAN_MASK;
|
||||
}
|
||||
|
||||
static void
|
||||
DEFUN(print_name, (stream, jcf, name_index),
|
||||
FILE* stream AND JCF* jcf AND int name_index)
|
||||
{
|
||||
if (JPOOL_TAG (jcf, name_index) != CONSTANT_Utf8)
|
||||
fprintf (stream, "<not a UTF8 constant>");
|
||||
else
|
||||
jcf_print_utf8 (stream, JPOOL_UTF_DATA (jcf, name_index),
|
||||
JPOOL_UTF_LENGTH (jcf, name_index));
|
||||
}
|
||||
|
||||
/* Print a character, appropriately mangled for JNI. */
|
||||
|
||||
static void
|
||||
|
@ -278,6 +267,40 @@ jni_print_char (stream, ch)
|
|||
}
|
||||
}
|
||||
|
||||
/* Print a name from the class data. If the index does not point to a
|
||||
string, an error results. */
|
||||
|
||||
static void
|
||||
DEFUN(print_name, (stream, jcf, name_index),
|
||||
FILE* stream AND JCF* jcf AND int name_index)
|
||||
{
|
||||
if (JPOOL_TAG (jcf, name_index) != CONSTANT_Utf8)
|
||||
{
|
||||
fprintf (stream, "<not a UTF8 constant>");
|
||||
found_error = 1;
|
||||
}
|
||||
else if (! flag_jni)
|
||||
jcf_print_utf8 (stream, JPOOL_UTF_DATA (jcf, name_index),
|
||||
JPOOL_UTF_LENGTH (jcf, name_index));
|
||||
else
|
||||
{
|
||||
/* For JNI we must correctly quote each character. */
|
||||
const unsigned char *str = JPOOL_UTF_DATA (jcf, name_index);
|
||||
int length = JPOOL_UTF_LENGTH (jcf, name_index);
|
||||
const unsigned char *limit = str + length;
|
||||
while (str < limit)
|
||||
{
|
||||
int ch = UTF8_GET (str, limit);
|
||||
if (ch < 0)
|
||||
{
|
||||
fprintf (stream, "\\<invalid>");
|
||||
return;
|
||||
}
|
||||
jni_print_char (stream, ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Print base name of class. The base name is everything after the
|
||||
final separator. */
|
||||
|
||||
|
@ -648,20 +671,24 @@ DEFUN(print_method_info, (stream, jcf, name_index, sig_index, flags),
|
|||
if (! stream)
|
||||
return;
|
||||
|
||||
/* We can't generate a method whose name is a C++ reserved word. We
|
||||
can't just ignore the function, because that will cause incorrect
|
||||
code to be generated if the function is virtual (not only for
|
||||
calls to this function for for other functions after it in the
|
||||
vtbl). So we give it a dummy name instead. */
|
||||
override = cxx_keyword_subst (str, length);
|
||||
if (override)
|
||||
/* We don't worry about overrides in JNI mode. */
|
||||
if (! flag_jni)
|
||||
{
|
||||
/* If the method is static or final, we can safely skip it. If
|
||||
we don't skip it then we'll have problems since the mangling
|
||||
will be wrong. FIXME. */
|
||||
if (METHOD_IS_FINAL (jcf->access_flags, flags)
|
||||
|| (flags & ACC_STATIC))
|
||||
return;
|
||||
/* We can't generate a method whose name is a C++ reserved word.
|
||||
We can't just ignore the function, because that will cause
|
||||
incorrect code to be generated if the function is virtual
|
||||
(not only for calls to this function for for other functions
|
||||
after it in the vtbl). So we give it a dummy name instead. */
|
||||
override = cxx_keyword_subst (str, length);
|
||||
if (override)
|
||||
{
|
||||
/* If the method is static or final, we can safely skip it.
|
||||
If we don't skip it then we'll have problems since the
|
||||
mangling will be wrong. FIXME. */
|
||||
if (METHOD_IS_FINAL (jcf->access_flags, flags)
|
||||
|| (flags & ACC_STATIC))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (! stubs && ! flag_jni)
|
||||
|
|
Loading…
Reference in New Issue