mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-04 03:39:30 +08:00
verify.cc (type::to_array): New method.
* verify.cc (type::to_array): New method. (_Jv_BytecodeVerifier::verify_instructions_0) [op_anewarray]: Construct new array type. From-SVN: r47165
This commit is contained in:
parent
755407600f
commit
d68e5f555d
@ -1,5 +1,9 @@
|
||||
2001-11-18 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* verify.cc (type::to_array): New method.
|
||||
(_Jv_BytecodeVerifier::verify_instructions_0) [op_anewarray]:
|
||||
Construct new array type.
|
||||
|
||||
* verify.cc (_Jv_BytecodeVerifier::branch_prepass) [op_sipush]:
|
||||
Skip a short, not a byte.
|
||||
[op_newarray]: Skip a byte, not a short.
|
||||
|
@ -491,6 +491,23 @@ private:
|
||||
return type (k);
|
||||
}
|
||||
|
||||
// Return the array type corresponding to an initialized
|
||||
// reference. We could expand this to work for other kinds of
|
||||
// types, but currently we don't need to.
|
||||
type to_array ()
|
||||
{
|
||||
// Resolving isn't ideal, because it might force us to load
|
||||
// another class, but it's easy. FIXME?
|
||||
if (key == unresolved_reference_type)
|
||||
resolve ();
|
||||
|
||||
if (key == reference_type)
|
||||
return type (_Jv_GetArrayClass (data.klass,
|
||||
data.klass->getClassLoader ()));
|
||||
else
|
||||
verify_fail ("internal error in type::to_array()");
|
||||
}
|
||||
|
||||
bool isreference () const
|
||||
{
|
||||
return key >= reference_type;
|
||||
@ -2426,7 +2443,7 @@ private:
|
||||
break;
|
||||
case op_anewarray:
|
||||
pop_type (int_type);
|
||||
push_type (check_class_constant (get_ushort ()));
|
||||
push_type (check_class_constant (get_ushort ()).to_array ());
|
||||
break;
|
||||
case op_arraylength:
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user