Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion make/lib/Awt2dLibraries.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,8 @@ else
# noexcept-type required for GCC 7 builds. Not required for GCC 8+.
# expansion-to-defined required for GCC 9 builds. Not required for GCC 10+.
HARFBUZZ_DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
maybe-uninitialized class-memaccess unused-result extra noexcept-type expansion-to-defined
maybe-uninitialized class-memaccess unused-result extra use-after-free noexcept-type \
expansion-to-defined
HARFBUZZ_DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
tautological-constant-out-of-range-compare int-to-pointer-cast \
undef missing-field-initializers deprecated-declarations c++11-narrowing range-loop-analysis
Expand Down
24 changes: 17 additions & 7 deletions src/hotspot/share/oops/array.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2022, 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
Expand Down Expand Up @@ -94,30 +94,40 @@ class Array: public MetaspaceObj {
Array(int length, T init) : _length(length) {
assert(length >= 0, "illegal length");
for (int i = 0; i < length; i++) {
_data[i] = init;
data()[i] = init;
}
}

public:

// standard operations
int length() const { return _length; }
T* data() { return _data; }

T* data() {
return reinterpret_cast<T*>(
reinterpret_cast<char*>(this) + base_offset_in_bytes());
}

const T* data() const {
return reinterpret_cast<const T*>(
reinterpret_cast<const char*>(this) + base_offset_in_bytes());
}

bool is_empty() const { return length() == 0; }

int index_of(const T& x) const {
int i = length();
while (i-- > 0 && _data[i] != x) ;
while (i-- > 0 && data()[i] != x) ;

return i;
}

// sort the array.
bool contains(const T& x) const { return index_of(x) >= 0; }

T at(int i) const { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); return _data[i]; }
void at_put(const int i, const T& x) { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); _data[i] = x; }
T* adr_at(const int i) { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); return &_data[i]; }
T at(int i) const { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); return data()[i]; }
void at_put(const int i, const T& x) { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); data()[i] = x; }
T* adr_at(const int i) { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); return &data()[i]; }
int find(const T& x) { return index_of(x); }

T at_acquire(const int which);
Expand Down
11 changes: 11 additions & 0 deletions src/hotspot/share/utilities/globalDefinitions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,17 @@ const char* type2name_tab[T_CONFLICT+1] = {
"*narrowklass*",
"*conflict*"
};
const char* type2name(BasicType t) {
if (t < ARRAY_SIZE(type2name_tab)) {
return type2name_tab[t];
} else if (t == T_ILLEGAL) {
return "*illegal*";
} else {
fatal("invalid type %d", t);
return "invalid type";
}
}



BasicType name2type(const char* name) {
Expand Down
5 changes: 3 additions & 2 deletions src/hotspot/share/utilities/globalDefinitions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -681,10 +681,11 @@ inline BasicType char2type(char c) {
extern char type2char_tab[T_CONFLICT+1]; // Map a BasicType to a jchar
inline char type2char(BasicType t) { return (uint)t < T_CONFLICT+1 ? type2char_tab[t] : 0; }
extern int type2size[T_CONFLICT+1]; // Map BasicType to result stack elements
extern const char* type2name_tab[T_CONFLICT+1]; // Map a BasicType to a jchar
inline const char* type2name(BasicType t) { return (uint)t < T_CONFLICT+1 ? type2name_tab[t] : NULL; }
extern const char* type2name_tab[T_CONFLICT+1]; // Map a BasicType to a char*
extern BasicType name2type(const char* name);

const char* type2name(BasicType t);

// Auxiliary math routines
// least common multiple
extern size_t lcm(size_t a, size_t b);
Expand Down
11 changes: 7 additions & 4 deletions src/java.base/unix/native/libjli/java_md_common.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2022, 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
Expand Down Expand Up @@ -125,10 +125,13 @@ ProgramExists(char *name)
static char *
Resolve(char *indir, char *cmd)
{
char name[PATH_MAX + 2], *real;
char name[PATH_MAX + 1], *real;
int snprintf_result;

if ((JLI_StrLen(indir) + JLI_StrLen(cmd) + 1) > PATH_MAX) return 0;
JLI_Snprintf(name, sizeof(name), "%s%c%s", indir, FILE_SEPARATOR, cmd);
snprintf_result = JLI_Snprintf(name, sizeof(name), "%s%c%s", indir, FILE_SEPARATOR, cmd);
if ((snprintf_result < 0) || (snprintf_result >= (int)sizeof(name))) {
return NULL;
}
if (!ProgramExists(name)) return 0;
real = JLI_MemAlloc(PATH_MAX + 2);
if (!realpath(name, real))
Expand Down