Interpreter tweaks
Increase the amount of inlining and hot function hints in the interpreter
to encourage the hot Execute function to be faster.
Performance is 3x slower than Dalvik+JIT on FibonacciFast and similar
microbenchmarks.
Change-Id: I2b1a0c7545f86036b9b1b5ccac881d06292356d8
diff --git a/src/mirror/class-inl.h b/src/mirror/class-inl.h
index 62740be..6819fb2 100644
--- a/src/mirror/class-inl.h
+++ b/src/mirror/class-inl.h
@@ -189,7 +189,7 @@
// src's super should be java_lang_Object, since it is an array.
Class* java_lang_Object = src->GetSuperClass();
DCHECK(java_lang_Object != NULL) << PrettyClass(src);
- DCHECK(java_lang_Object->GetSuperClass() == NULL) << PrettyClass(src);
+ DCHECK(java_lang_Object->GetSuperClass() == NULL) << PrettyClass(src);
return this == java_lang_Object;
}
return IsArrayAssignableFromArray(src);
diff --git a/src/mirror/class.h b/src/mirror/class.h
index dfbe815..0661b42 100644
--- a/src/mirror/class.h
+++ b/src/mirror/class.h
@@ -429,8 +429,7 @@
// downcast would be necessary. Similarly for interfaces, a class that implements (or an interface
// that extends) another can be assigned to its parent, but not vice-versa. All Classes may assign
// to themselves. Classes for primitive types may not assign to each other.
- bool IsAssignableFrom(const Class* src) const
- SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
+ inline bool IsAssignableFrom(const Class* src) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
DCHECK(src != NULL);
if (this == src) {
// Can always assign to things of the same type.