958 if (transitive_interfaces()->at(i) == k) {
959 return true;
960 }
961 }
962 return false;
963 }
964
965 bool InstanceKlass::is_same_or_direct_interface(Klass *k) const {
966 // Verify direct super interface
967 if (this == k) return true;
968 assert(k->is_interface(), "should be an interface class");
969 for (int i = 0; i < local_interfaces()->length(); i++) {
970 if (local_interfaces()->at(i) == k) {
971 return true;
972 }
973 }
974 return false;
975 }
976
977 objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
978 if (length < 0) THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
979 if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
980 report_java_out_of_memory("Requested array size exceeds VM limit");
981 JvmtiExport::post_array_size_exhausted();
982 THROW_OOP_0(Universe::out_of_memory_error_array_size());
983 }
984 int size = objArrayOopDesc::object_size(length);
985 Klass* ak = array_klass(n, CHECK_NULL);
986 objArrayOop o =
987 (objArrayOop)CollectedHeap::array_allocate(ak, size, length, CHECK_NULL);
988 return o;
989 }
990
991 instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) {
992 if (TraceFinalizerRegistration) {
993 tty->print("Registered ");
994 i->print_value_on(tty);
995 tty->print_cr(" (" INTPTR_FORMAT ") as finalizable", p2i(i));
996 }
997 instanceHandle h_i(THREAD, i);
998 // Pass the handle as argument, JavaCalls::call expects oop as jobjects
|
958 if (transitive_interfaces()->at(i) == k) {
959 return true;
960 }
961 }
962 return false;
963 }
964
965 bool InstanceKlass::is_same_or_direct_interface(Klass *k) const {
966 // Verify direct super interface
967 if (this == k) return true;
968 assert(k->is_interface(), "should be an interface class");
969 for (int i = 0; i < local_interfaces()->length(); i++) {
970 if (local_interfaces()->at(i) == k) {
971 return true;
972 }
973 }
974 return false;
975 }
976
977 objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
978 if (length < 0) {
979 ResourceMark rm(THREAD);
980 stringStream ss;
981 ss.print("%d", length);
982 THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), ss.as_string());
983 }
984 if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
985 report_java_out_of_memory("Requested array size exceeds VM limit");
986 JvmtiExport::post_array_size_exhausted();
987 THROW_OOP_0(Universe::out_of_memory_error_array_size());
988 }
989 int size = objArrayOopDesc::object_size(length);
990 Klass* ak = array_klass(n, CHECK_NULL);
991 objArrayOop o =
992 (objArrayOop)CollectedHeap::array_allocate(ak, size, length, CHECK_NULL);
993 return o;
994 }
995
996 instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) {
997 if (TraceFinalizerRegistration) {
998 tty->print("Registered ");
999 i->print_value_on(tty);
1000 tty->print_cr(" (" INTPTR_FORMAT ") as finalizable", p2i(i));
1001 }
1002 instanceHandle h_i(THREAD, i);
1003 // Pass the handle as argument, JavaCalls::call expects oop as jobjects
|