diff options
author | Tom Tromey <tromey@redhat.com> | 2002-11-26 06:51:14 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-11-26 06:51:14 +0000 |
commit | b0fbe966b10e08de78928397f8a08e20df7a60fd (patch) | |
tree | 3523ae56e241e44fb26f03de32973be665940818 /libjava/interpret.cc | |
parent | 32f0ffb38040ceae60ee324077080d932cee1529 (diff) | |
download | gcc-b0fbe966b10e08de78928397f8a08e20df7a60fd.tar.gz |
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
Diffstat (limited to 'libjava/interpret.cc')
-rw-r--r-- | libjava/interpret.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libjava/interpret.cc b/libjava/interpret.cc index d3f919bac13..bc324b13ba9 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -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; |