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 THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), err_msg("%d", length));
980 }
981 if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
982 report_java_out_of_memory("Requested array size exceeds VM limit");
983 JvmtiExport::post_array_size_exhausted();
984 THROW_OOP_0(Universe::out_of_memory_error_array_size());
985 }
986 int size = objArrayOopDesc::object_size(length);
987 Klass* ak = array_klass(n, CHECK_NULL);
988 objArrayOop o =
989 (objArrayOop)CollectedHeap::array_allocate(ak, size, length, CHECK_NULL);
990 return o;
991 }
992
993 instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) {
994 if (TraceFinalizerRegistration) {
995 tty->print("Registered ");
996 i->print_value_on(tty);
997 tty->print_cr(" (" INTPTR_FORMAT ") as finalizable", p2i(i));
998 }
999 instanceHandle h_i(THREAD, i);
1000 // Pass the handle as argument, JavaCalls::call expects oop as jobjects
|