OSDN Git Service

Fixes for "null instanceof" and class initialization
authorBrian Carlstrom <bdc@google.com>
Tue, 27 Sep 2011 05:29:18 +0000 (22:29 -0700)
committerBrian Carlstrom <bdc@google.com>
Tue, 27 Sep 2011 08:24:39 +0000 (01:24 -0700)
commit5d40f182181488eb39ccd19ffd306bb1fb9740c9
treef76c0593d7be5975543411a3d85134e846774ba5
parent1ff230d113d25fbcd2986773799ac1ef504a6af0
Fixes for "null instanceof" and class initialization

First issue was that the codegen seemed to expect r0 to contain 0 for
a false result in the null object case. This is a quick fix to make
that true. Given that the code is doing the work of a null check and
pulling out the object's class, the code should probably just pass the
class to the helper function, making this a case of IsAssignableFrom,
not instanceof.

Second issues were related to missing EnsureInitialized calls in two
different code paths, one coming from reflection, one coming from
managed code. New Class::AllocObject assert should help keep us out of
trouble in the future in this area, although perhaps Heap::AllocObject
should have a check as well.

Change-Id: Ib7975b6457481c1ac85135d38f42c6061e6443a0
13 files changed:
Android.mk
src/check_jni.cc
src/compiler/codegen/arm/Thumb2/Gen.cc
src/java_lang_Class.cc
src/java_lang_reflect_Constructor.cc
src/jni_internal.cc
src/object.cc
src/object.h
src/object_test.cc
src/runtime.cc
src/thread.cc
src/thread.h
test/IntMath/IntMath.java