# HG changeset patch # User stefank # Date 1393493810 -3600 # Node ID 76b5882559081fdb7460ac84f5e12a331d7da581 # Parent 27188ae8bbbb4a680b5b79ba9e07fcb323aef3af 8035746: Add missing Klass::oop_is_instanceClassLoader() function Reviewed-by: mgerdin, coleenp diff -r 27188ae8bbbb -r 76b588255908 src/share/vm/oops/klass.cpp --- a/src/share/vm/oops/klass.cpp Thu Feb 27 10:34:55 2014 +0100 +++ b/src/share/vm/oops/klass.cpp Thu Feb 27 10:36:50 2014 +0100 @@ -699,3 +699,21 @@ } #endif + +/////////////// Unit tests /////////////// + +#ifndef PRODUCT + +class TestKlass { + public: + static void test_oop_is_instanceClassLoader() { + assert(SystemDictionary::ClassLoader_klass()->oop_is_instanceClassLoader(), "assert"); + assert(!SystemDictionary::String_klass()->oop_is_instanceClassLoader(), "assert"); + } +}; + +void TestKlass_test() { + TestKlass::test_oop_is_instanceClassLoader(); +} + +#endif diff -r 27188ae8bbbb -r 76b588255908 src/share/vm/oops/klass.hpp --- a/src/share/vm/oops/klass.hpp Thu Feb 27 10:34:55 2014 +0100 +++ b/src/share/vm/oops/klass.hpp Thu Feb 27 10:36:50 2014 +0100 @@ -499,6 +499,7 @@ virtual bool oop_is_objArray_slow() const { return false; } virtual bool oop_is_typeArray_slow() const { return false; } public: + virtual bool oop_is_instanceClassLoader() const { return false; } virtual bool oop_is_instanceMirror() const { return false; } virtual bool oop_is_instanceRef() const { return false; } diff -r 27188ae8bbbb -r 76b588255908 src/share/vm/oops/oop.hpp --- a/src/share/vm/oops/oop.hpp Thu Feb 27 10:34:55 2014 +0100 +++ b/src/share/vm/oops/oop.hpp Thu Feb 27 10:36:50 2014 +0100 @@ -109,12 +109,13 @@ int size_given_klass(Klass* klass); // type test operations (inlined in oop.inline.h) - bool is_instance() const; - bool is_instanceMirror() const; - bool is_instanceRef() const; - bool is_array() const; - bool is_objArray() const; - bool is_typeArray() const; + bool is_instance() const; + bool is_instanceMirror() const; + bool is_instanceClassLoader() const; + bool is_instanceRef() const; + bool is_array() const; + bool is_objArray() const; + bool is_typeArray() const; private: // field addresses in oop diff -r 27188ae8bbbb -r 76b588255908 src/share/vm/oops/oop.inline.hpp --- a/src/share/vm/oops/oop.inline.hpp Thu Feb 27 10:34:55 2014 +0100 +++ b/src/share/vm/oops/oop.inline.hpp Thu Feb 27 10:36:50 2014 +0100 @@ -148,12 +148,13 @@ inline bool oopDesc::is_a(Klass* k) const { return klass()->is_subtype_of(k); } -inline bool oopDesc::is_instance() const { return klass()->oop_is_instance(); } -inline bool oopDesc::is_instanceMirror() const { return klass()->oop_is_instanceMirror(); } -inline bool oopDesc::is_instanceRef() const { return klass()->oop_is_instanceRef(); } -inline bool oopDesc::is_array() const { return klass()->oop_is_array(); } -inline bool oopDesc::is_objArray() const { return klass()->oop_is_objArray(); } -inline bool oopDesc::is_typeArray() const { return klass()->oop_is_typeArray(); } +inline bool oopDesc::is_instance() const { return klass()->oop_is_instance(); } +inline bool oopDesc::is_instanceClassLoader() const { return klass()->oop_is_instanceClassLoader(); } +inline bool oopDesc::is_instanceMirror() const { return klass()->oop_is_instanceMirror(); } +inline bool oopDesc::is_instanceRef() const { return klass()->oop_is_instanceRef(); } +inline bool oopDesc::is_array() const { return klass()->oop_is_array(); } +inline bool oopDesc::is_objArray() const { return klass()->oop_is_objArray(); } +inline bool oopDesc::is_typeArray() const { return klass()->oop_is_typeArray(); } inline void* oopDesc::field_base(int offset) const { return (void*)&((char*)this)[offset]; } diff -r 27188ae8bbbb -r 76b588255908 src/share/vm/prims/jni.cpp --- a/src/share/vm/prims/jni.cpp Thu Feb 27 10:34:55 2014 +0100 +++ b/src/share/vm/prims/jni.cpp Thu Feb 27 10:36:50 2014 +0100 @@ -5082,6 +5082,7 @@ void TestMetachunk_test(); void TestVirtualSpaceNode_test(); void TestNewSize_test(); +void TestKlass_test(); #if INCLUDE_ALL_GCS void TestOldFreeSpaceCalculation_test(); void TestG1BiasedArray_test(); @@ -5106,6 +5107,7 @@ run_unit_test(AltHashing::test_alt_hash()); run_unit_test(test_loggc_filename()); run_unit_test(TestNewSize_test()); + run_unit_test(TestKlass_test()); #if INCLUDE_VM_STRUCTS run_unit_test(VMStructs::test()); #endif