mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-20 04:38:58 +08:00
verify.cc (pop64): Removed.
* verify.cc (pop64): Removed. (verify_instructions_0) <op_pop2>: Inline code. Don't throw exception if top-of-stack is narrow. (initialize_stack): Check to ensure that <init> is not static and <clinit> is. From-SVN: r65453
This commit is contained in:
parent
06790e5fd5
commit
bc9150d335
@ -1,3 +1,11 @@
|
||||
2003-04-10 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* verify.cc (pop64): Removed.
|
||||
(verify_instructions_0) <op_pop2>: Inline code. Don't throw
|
||||
exception if top-of-stack is narrow.
|
||||
(initialize_stack): Check to ensure that <init> is not static and
|
||||
<clinit> is.
|
||||
|
||||
2003-04-07 Aaron M. Renn (arenn@urbanophile.com)
|
||||
|
||||
* java/io/ObjectStreamException
|
||||
|
@ -1202,14 +1202,6 @@ private:
|
||||
return r;
|
||||
}
|
||||
|
||||
type pop64 ()
|
||||
{
|
||||
type r = pop_raw ();
|
||||
if (! r.iswide ())
|
||||
verify_fail ("wide pop of narrow type");
|
||||
return r;
|
||||
}
|
||||
|
||||
type pop_type (type match)
|
||||
{
|
||||
match.promote ();
|
||||
@ -2160,21 +2152,31 @@ private:
|
||||
bool initialize_stack ()
|
||||
{
|
||||
int var = 0;
|
||||
bool is_init = false;
|
||||
bool is_init = _Jv_equalUtf8Consts (current_method->self->name,
|
||||
gcj::init_name);
|
||||
bool is_clinit = _Jv_equalUtf8Consts (current_method->self->name,
|
||||
gcj::clinit_name);
|
||||
|
||||
using namespace java::lang::reflect;
|
||||
if (! Modifier::isStatic (current_method->self->accflags))
|
||||
{
|
||||
type kurr (current_class);
|
||||
if (_Jv_equalUtf8Consts (current_method->self->name, gcj::init_name))
|
||||
if (is_init)
|
||||
{
|
||||
kurr.set_uninitialized (type::SELF, this);
|
||||
is_init = true;
|
||||
}
|
||||
else if (is_clinit)
|
||||
verify_fail ("<clinit> method must be static");
|
||||
set_variable (0, kurr);
|
||||
current_state->set_this_type (kurr);
|
||||
++var;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_init)
|
||||
verify_fail ("<init> method must be non-static");
|
||||
}
|
||||
|
||||
// We have to handle wide arguments specially here.
|
||||
int arg_count = _Jv_count_arguments (current_method->self->signature);
|
||||
@ -2525,7 +2527,11 @@ private:
|
||||
pop32 ();
|
||||
break;
|
||||
case op_pop2:
|
||||
pop64 ();
|
||||
{
|
||||
type t = pop_raw ();
|
||||
if (! t.iswide ())
|
||||
pop32 ();
|
||||
}
|
||||
break;
|
||||
case op_dup:
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user