template <typename T> class Array: public MetaspaceObj { friendclass ArchiveBuilder; friendclass MetadataFactory; friendclass VMStructs; friendclass JVMCIVMStructs; friendclass MethodHandleCompiler; // special case friendclass WhiteBox; protected: int _length; // the number of array elements
T _data[1]; // the array memory
void initialize(int length) {
_length = length;
}
private:
NONCOPYABLE(Array);
inlinevoid* operatornew(size_t size, ClassLoaderData* loader_data, int length, TRAPS) throw();
// WhiteBox API helper. // Can't distinguish between array of length 0 and length 1, // will always return 0 in those cases. staticint bytes_to_length(size_t bytes) {
assert(is_aligned(bytes, BytesPerWord), "Must be, for now");
if (sizeof(Array<T>) >= bytes) { return0;
}
size_t left = bytes - sizeof(Array<T>);
assert(is_aligned(left, sizeof(T)), "Must be");
size_t elements = left / sizeof(T);
assert(elements <= (size_t)INT_MAX, "number of elements " SIZE_FORMAT "doesn't fit into an int.", elements);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.