diff --git a/src/hotspot/share/memory/oopFactory.cpp b/src/hotspot/share/memory/oopFactory.cpp index e0b94a8caf8f4..d5e958ef29a2b 100644 --- a/src/hotspot/share/memory/oopFactory.cpp +++ b/src/hotspot/share/memory/oopFactory.cpp @@ -104,13 +104,9 @@ typeArrayOop oopFactory::new_typeArray_nozero(BasicType type, int length, TRAPS) return klass->allocate_common(length, false, THREAD); } - objArrayOop oopFactory::new_objArray(Klass* klass, int length, TRAPS) { - if (klass->is_array_klass()) { - return ArrayKlass::cast(klass)->allocate_arrayArray(1, length, THREAD); - } else { - return InstanceKlass::cast(klass)->allocate_objArray(1, length, THREAD); - } + ArrayKlass* ak = klass->array_klass(CHECK_NULL); + return ObjArrayKlass::cast(ak)->allocate_instance(length, THREAD); } objArrayHandle oopFactory::new_objArray_handle(Klass* klass, int length, TRAPS) { diff --git a/src/hotspot/share/oops/arrayKlass.cpp b/src/hotspot/share/oops/arrayKlass.cpp index 32a86c7ab244d..5e5dbf0ec5d98 100644 --- a/src/hotspot/share/oops/arrayKlass.cpp +++ b/src/hotspot/share/oops/arrayKlass.cpp @@ -187,16 +187,6 @@ GrowableArray* ArrayKlass::compute_secondary_supers(int num_extra_slots, return nullptr; } -objArrayOop ArrayKlass::allocate_arrayArray(int n, int length, TRAPS) { - check_array_allocation_length(length, arrayOopDesc::max_array_length(T_ARRAY), CHECK_NULL); - size_t size = objArrayOopDesc::object_size(length); - ArrayKlass* ak = array_klass(n + dimension(), CHECK_NULL); - objArrayOop o = (objArrayOop)Universe::heap()->array_allocate(ak, size, length, - /* do_zero */ true, CHECK_NULL); - // initialization to null not necessary, area already cleared - return o; -} - // JVMTI support jint ArrayKlass::jvmti_class_status() const { diff --git a/src/hotspot/share/oops/arrayKlass.hpp b/src/hotspot/share/oops/arrayKlass.hpp index 5bfe46573d3f5..3ec1660948292 100644 --- a/src/hotspot/share/oops/arrayKlass.hpp +++ b/src/hotspot/share/oops/arrayKlass.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -87,7 +87,6 @@ class ArrayKlass: public Klass { // Sizes points to the first dimension of the array, subsequent dimensions // are always in higher memory. The callers of these set that up. virtual oop multi_allocate(int rank, jint* sizes, TRAPS); - objArrayOop allocate_arrayArray(int n, int length, TRAPS); // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp index f5e5628c99a08..98837c5289d98 100644 --- a/src/hotspot/share/oops/instanceKlass.cpp +++ b/src/hotspot/share/oops/instanceKlass.cpp @@ -1561,15 +1561,6 @@ bool InstanceKlass::is_same_or_direct_interface(Klass *k) const { return false; } -objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) { - check_array_allocation_length(length, arrayOopDesc::max_array_length(T_OBJECT), CHECK_NULL); - size_t size = objArrayOopDesc::object_size(length); - ArrayKlass* ak = array_klass(n, CHECK_NULL); - objArrayOop o = (objArrayOop)Universe::heap()->array_allocate(ak, size, length, - /* do_zero */ true, CHECK_NULL); - return o; -} - instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) { if (TraceFinalizerRegistration) { tty->print("Registered "); diff --git a/src/hotspot/share/oops/instanceKlass.hpp b/src/hotspot/share/oops/instanceKlass.hpp index c2d5e9cc09818..aa9221179152e 100644 --- a/src/hotspot/share/oops/instanceKlass.hpp +++ b/src/hotspot/share/oops/instanceKlass.hpp @@ -812,7 +812,6 @@ class InstanceKlass: public Klass { // additional member function to return a handle instanceHandle allocate_instance_handle(TRAPS); - objArrayOop allocate_objArray(int n, int length, TRAPS); // Helper function static instanceOop register_finalizer(instanceOop i, TRAPS); diff --git a/src/hotspot/share/oops/objArrayKlass.hpp b/src/hotspot/share/oops/objArrayKlass.hpp index 6db6630cff467..1a4f7f657d2e3 100644 --- a/src/hotspot/share/oops/objArrayKlass.hpp +++ b/src/hotspot/share/oops/objArrayKlass.hpp @@ -64,7 +64,9 @@ class ObjArrayKlass : public ArrayKlass { // Instance variables Klass* element_klass() const { return _element_klass; } void set_element_klass(Klass* k) { _element_klass = k; } - Klass** element_klass_addr() { return &_element_klass; } + + // Compiler/Interpreter offset + static ByteSize element_klass_offset() { return byte_offset_of(ObjArrayKlass, _element_klass); } Klass* bottom_klass() const { return _bottom_klass; } void set_bottom_klass(Klass* k) { _bottom_klass = k; } @@ -73,9 +75,6 @@ class ObjArrayKlass : public ArrayKlass { ModuleEntry* module() const; PackageEntry* package() const; - // Compiler/Interpreter offset - static ByteSize element_klass_offset() { return byte_offset_of(ObjArrayKlass, _element_klass); } - // Dispatched operation bool can_be_primary_super_slow() const; GrowableArray* compute_secondary_supers(int num_extra_slots,