verify.cc (type::compatible): Check initialization status first.

* verify.cc (type::compatible): Check initialization status
	first.
	* interpret.cc (run) [insn_invokespecial, invokespecial_resolved]:
	Don't use NULLCHECK.

From-SVN: r59494
This commit is contained in:
Tom Tromey 2002-11-26 06:51:14 +00:00 committed by Tom Tromey
parent 32f0ffb380
commit b0fbe966b1
3 changed files with 20 additions and 8 deletions

View file

@ -2795,7 +2795,10 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
sp -= rmeth->stack_item_count;
NULLCHECK (sp[0].o);
// We don't use NULLCHECK here because we can't rely on that
// working for <init>. So instead we do an explicit test.
if (! sp[0].o)
throw new java::lang::NullPointerException;
fun = (void (*)()) rmeth->method->ncode;
@ -2813,7 +2816,10 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
{
rmeth = (_Jv_ResolvedMethod *) AVAL ();
sp -= rmeth->stack_item_count;
NULLCHECK (sp[0].o);
// We don't use NULLCHECK here because we can't rely on that
// working for <init>. So instead we do an explicit test.
if (! sp[0].o)
throw new java::lang::NullPointerException;
fun = (void (*)()) rmeth->method->ncode;
}
goto perform_invoke;