aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/verify-glue.c
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@gcc.gnu.org>2005-03-07 21:10:49 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2005-03-07 21:10:49 +0000
commita2da2c9a68c574b4598768ff414d8b19ccc34f3c (patch)
tree9d0e7f2e3d8eea9278d7553dc439c5ea0969d3da /gcc/java/verify-glue.c
parentc80d391c3e2fba4f444d759d146e5ef6e5326613 (diff)
downloadgcc-a2da2c9a68c574b4598768ff414d8b19ccc34f3c.zip
gcc-a2da2c9a68c574b4598768ff414d8b19ccc34f3c.tar.gz
gcc-a2da2c9a68c574b4598768ff414d8b19ccc34f3c.tar.bz2
[multiple changes]
2005-03-04 Bryce McKinlay <mckinlay@redhat.com> * verify-glue.c (vfy_is_assignable_from): Perform static check using can_widen_reference_to if the C++ ABI is in use. (vfy_get_interface_count, vfy_get_interface): Remove unused functions. * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type, type_isresolved, init_state, set_pc, state_get_pc, _Jv_BytecodeVerifier): Clean up unused and disabled functions. (verify_fail): Report the current PC from the verifier context. (free_state): Remove #if 0 block to enable this function. (free_verifier_context): Call free_state on state_list iterator values before freeing them. * expr.c (pop_type_0): Pop correct type for error message when stack contains a multi-word type. 2005-03-04 Ranjit Mathew <rmathew@hotmail.com> * expr.c (build_java_array_length_access): Remove !flag_new_verifier for known NULL array length access. From-SVN: r96044
Diffstat (limited to 'gcc/java/verify-glue.c')
-rw-r--r--gcc/java/verify-glue.c37
1 files changed, 8 insertions, 29 deletions
diff --git a/gcc/java/verify-glue.c b/gcc/java/verify-glue.c
index 5d480e8..b1664ba 100644
--- a/gcc/java/verify-glue.c
+++ b/gcc/java/verify-glue.c
@@ -231,17 +231,18 @@ vfy_get_class_name (vfy_jclass klass)
bool
vfy_is_assignable_from (vfy_jclass target, vfy_jclass source)
{
- /* At compile time, for the BC-ABI we assume that reference types are always
- compatible. However, a type assertion table entry is emitted so that the
- runtime can detect binary-incompatible changes. */
-
- /* FIXME: implement real test for old ABI. */
-
/* Any class is always assignable to itself, or java.lang.Object. */
if (source == target || target == object_type_node)
return true;
- /* Otherwise, a type assertion is required. */
+ /* For the C++ ABI, perform this test statically. */
+ if (! flag_indirect_dispatch)
+ return can_widen_reference_to (source, target);
+
+ /* For the BC-ABI, we assume at compile time that reference types are always
+ compatible. However, a type assertion table entry is emitted so that the
+ runtime can detect binary-incompatible changes. */
+
add_type_assertion (current_class, JV_ASSERT_TYPES_COMPATIBLE, source,
target);
return true;
@@ -257,28 +258,6 @@ vfy_get_primitive_char (vfy_jclass klass)
return (IDENTIFIER_POINTER (sig))[0];
}
-int
-vfy_get_interface_count (vfy_jclass klass ATTRIBUTE_UNUSED)
-{
- /* FIXME: Need to merge from mainline to get this. */
- #if 0
- return BINFO_N_BASE_BINFOS (klass);
- #endif
- return -1;
-}
-
-vfy_jclass
-vfy_get_interface (vfy_jclass klass ATTRIBUTE_UNUSED, int index ATTRIBUTE_UNUSED)
-{
- /* FIXME: Need to merge from mainline to get this. */
- #if 0
- vfy_jclass k;
- k = BINFO_BASE_BINFO (klass, index);
- return k;
- #endif
- return NULL;
-}
-
bool
vfy_is_array (vfy_jclass klass)
{