8216157: Enable inlining of java_lang_Class::is_primitive

Reviewed-by: coleenp, eosterlund, jiangli
This commit is contained in:
Claes Redestad 2019-01-04 16:23:56 +01:00
parent bc2275c28e
commit bf63ee682e
10 changed files with 24 additions and 19 deletions

View file

@ -23,6 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "ci/ciConstant.hpp" #include "ci/ciConstant.hpp"
#include "ci/ciField.hpp" #include "ci/ciField.hpp"
#include "ci/ciInstance.hpp" #include "ci/ciInstance.hpp"

View file

@ -26,7 +26,7 @@
#include "ci/ciInstance.hpp" #include "ci/ciInstance.hpp"
#include "ci/ciMethodType.hpp" #include "ci/ciMethodType.hpp"
#include "ci/ciUtilities.inline.hpp" #include "ci/ciUtilities.inline.hpp"
#include "classfile/javaClasses.hpp" #include "classfile/javaClasses.inline.hpp"
ciType* ciMethodType::class_to_citype(oop klass_oop) const { ciType* ciMethodType::class_to_citype(oop klass_oop) const {
if (java_lang_Class::is_primitive(klass_oop)) { if (java_lang_Class::is_primitive(klass_oop)) {

View file

@ -1462,23 +1462,6 @@ void java_lang_Class::release_set_array_klass(oop java_class, Klass* klass) {
} }
bool java_lang_Class::is_primitive(oop java_class) {
// should assert:
//assert(java_lang_Class::is_instance(java_class), "must be a Class object");
bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL);
#ifdef ASSERT
if (is_primitive) {
Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
assert(k == NULL || is_java_primitive(ArrayKlass::cast(k)->element_type()),
"Should be either the T_VOID primitive or a java primitive");
}
#endif
return is_primitive;
}
BasicType java_lang_Class::primitive_type(oop java_class) { BasicType java_lang_Class::primitive_type(oop java_class) {
assert(java_lang_Class::is_primitive(java_class), "just checking"); assert(java_lang_Class::is_primitive(java_class), "just checking");
Klass* ak = ((Klass*)java_class->metadata_field(_array_klass_offset)); Klass* ak = ((Klass*)java_class->metadata_field(_array_klass_offset));

View file

@ -174,6 +174,22 @@ inline bool java_lang_Class::is_instance(oop obj) {
return obj != NULL && obj->klass() == SystemDictionary::Class_klass(); return obj != NULL && obj->klass() == SystemDictionary::Class_klass();
} }
inline bool java_lang_Class::is_primitive(oop java_class) {
// should assert:
//assert(java_lang_Class::is_instance(java_class), "must be a Class object");
bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL);
#ifdef ASSERT
if (is_primitive) {
Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
assert(k == NULL || is_java_primitive(ArrayKlass::cast(k)->element_type()),
"Should be either the T_VOID primitive or a java primitive");
}
#endif
return is_primitive;
}
inline bool java_lang_invoke_DirectMethodHandle::is_instance(oop obj) { inline bool java_lang_invoke_DirectMethodHandle::is_instance(oop obj) {
return obj != NULL && is_subclass(obj->klass()); return obj != NULL && is_subclass(obj->klass());
} }

View file

@ -37,6 +37,7 @@
<xsl:call-template name="sourceHeader"/> <xsl:call-template name="sourceHeader"/>
<xsl:text> <xsl:text>
# include "precompiled.hpp" # include "precompiled.hpp"
# include "classfile/javaClasses.inline.hpp"
# include "memory/resourceArea.hpp" # include "memory/resourceArea.hpp"
# include "utilities/macros.hpp" # include "utilities/macros.hpp"
#if INCLUDE_JVMTI #if INCLUDE_JVMTI

View file

@ -23,6 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "classfile/systemDictionary.hpp" #include "classfile/systemDictionary.hpp"
#include "code/nmethod.hpp" #include "code/nmethod.hpp"
#include "code/pcDesc.hpp" #include "code/pcDesc.hpp"

View file

@ -26,6 +26,7 @@
#include "aot/aotLoader.hpp" #include "aot/aotLoader.hpp"
#include "classfile/classLoaderDataGraph.hpp" #include "classfile/classLoaderDataGraph.hpp"
#include "classfile/classFileStream.hpp" #include "classfile/classFileStream.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "classfile/metadataOnStackMark.hpp" #include "classfile/metadataOnStackMark.hpp"
#include "classfile/systemDictionary.hpp" #include "classfile/systemDictionary.hpp"
#include "classfile/verifier.hpp" #include "classfile/verifier.hpp"

View file

@ -23,6 +23,7 @@
*/ */
#include "precompiled.hpp" #include "precompiled.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "jvmtifiles/jvmtiEnv.hpp" #include "jvmtifiles/jvmtiEnv.hpp"
#include "logging/log.hpp" #include "logging/log.hpp"
#include "logging/logConfiguration.hpp" #include "logging/logConfiguration.hpp"

View file

@ -24,7 +24,7 @@
#include "precompiled.hpp" #include "precompiled.hpp"
#include "jvm.h" #include "jvm.h"
#include "classfile/javaClasses.hpp" #include "classfile/javaClasses.inline.hpp"
#include "classfile/moduleEntry.hpp" #include "classfile/moduleEntry.hpp"
#include "classfile/packageEntry.hpp" #include "classfile/packageEntry.hpp"
#include "classfile/stringTable.hpp" #include "classfile/stringTable.hpp"

View file

@ -26,6 +26,7 @@
#include "jvm.h" #include "jvm.h"
#include "classfile/classLoaderData.inline.hpp" #include "classfile/classLoaderData.inline.hpp"
#include "classfile/classLoaderDataGraph.hpp" #include "classfile/classLoaderDataGraph.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "classfile/symbolTable.hpp" #include "classfile/symbolTable.hpp"
#include "classfile/systemDictionary.hpp" #include "classfile/systemDictionary.hpp"
#include "classfile/vmSymbols.hpp" #include "classfile/vmSymbols.hpp"