aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natClass.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r--libjava/java/lang/natClass.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index 3284992..93e8210 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -622,7 +622,7 @@ java::lang::Class::isAssignableFrom (jclass klass)
inline jboolean
java::lang::Class::isInstance (jobject obj)
{
- if (! obj || isPrimitive ())
+ if (__builtin_expect (! obj || isPrimitive (), false))
return false;
_Jv_InitClass (this);
return _Jv_IsAssignableFrom (this, JV_CLASS (obj));
@@ -923,7 +923,7 @@ _Jv_IsAssignableFrom (jclass target, jclass source)
{
_Jv_IDispatchTable *cl_idt = source->idt;
_Jv_IDispatchTable *if_idt = target->idt;
- if (if_idt == NULL)
+ if (__builtin_expect ((if_idt == NULL), false))
return false; // No class implementing TARGET has been loaded.
jshort cl_iindex = cl_idt->cls.iindex;
if (cl_iindex <= if_idt->iface.ioffsets[0])
@@ -941,13 +941,16 @@ _Jv_IsAssignableFrom (jclass target, jclass source)
jboolean
_Jv_IsInstanceOf(jobject obj, jclass cl)
{
- return (obj ? _Jv_IsAssignableFrom (cl, JV_CLASS (obj)) : false);
+ if (__builtin_expect (!obj, false))
+ return false;
+ return (_Jv_IsAssignableFrom (cl, JV_CLASS (obj)));
}
void *
_Jv_CheckCast (jclass c, jobject obj)
{
- if (obj != NULL && ! _Jv_IsAssignableFrom(c, JV_CLASS (obj)))
+ if (__builtin_expect
+ (obj != NULL && ! _Jv_IsAssignableFrom(c, JV_CLASS (obj)), false))
JvThrow (new java::lang::ClassCastException);
return obj;
}
@@ -960,7 +963,8 @@ _Jv_CheckArrayStore (jobject arr, jobject obj)
JvAssert (arr != NULL);
jclass elt_class = (JV_CLASS (arr))->getComponentType();
jclass obj_class = JV_CLASS (obj);
- if (! _Jv_IsAssignableFrom (elt_class, obj_class))
+ if (__builtin_expect
+ (! _Jv_IsAssignableFrom (elt_class, obj_class), false))
JvThrow (new java::lang::ArrayStoreException);
}
}