diff options
author | Tom Tromey <tromey@redhat.com> | 2001-12-09 00:14:00 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-12-09 00:14:00 +0000 |
commit | 3297bb4667ebba9490c4e692fb8ce64b1a0bcef3 (patch) | |
tree | 7bb00a4069982ad41cef767feee33ef11cb54588 /libjava/verify.cc | |
parent | ecbcf7b3198489daee27a8dd913314a69e947c11 (diff) | |
download | gcc-3297bb4667ebba9490c4e692fb8ce64b1a0bcef3.zip gcc-3297bb4667ebba9490c4e692fb8ce64b1a0bcef3.tar.gz gcc-3297bb4667ebba9490c4e692fb8ce64b1a0bcef3.tar.bz2 |
verify.cc (_Jv_BytecodeVerifier::is_assignable_from_slow): Handle case of array whose component type is not prepared.
* verify.cc (_Jv_BytecodeVerifier::is_assignable_from_slow):
Handle case of array whose component type is not prepared.
From-SVN: r47799
Diffstat (limited to 'libjava/verify.cc')
-rw-r--r-- | libjava/verify.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libjava/verify.cc b/libjava/verify.cc index b0206d1..74499ed 100644 --- a/libjava/verify.cc +++ b/libjava/verify.cc @@ -237,12 +237,9 @@ private: if (target->isPrimitive () || source->isPrimitive ()) return false; - // _Jv_IsAssignableFrom can handle a target which is an - // interface even if it hasn't been prepared. - if ((target->state > JV_STATE_LINKED || target->isInterface ()) - && source->state > JV_STATE_LINKED) - return _Jv_IsAssignableFrom (target, source); - + // Check array case first because we can have an array whose + // component type is not prepared; _Jv_IsAssignableFrom + // doesn't handle this correctly. if (target->isArray ()) { if (! source->isArray ()) @@ -250,6 +247,11 @@ private: target = target->getComponentType (); source = source->getComponentType (); } + // _Jv_IsAssignableFrom can handle a target which is an + // interface even if it hasn't been prepared. + else if ((target->state > JV_STATE_LINKED || target->isInterface ()) + && source->state > JV_STATE_LINKED) + return _Jv_IsAssignableFrom (target, source); else if (target->isInterface ()) { for (int i = 0; i < source->interface_count; ++i) |