diff --git a/src/hotspot/share/utilities/bitMap.cpp b/src/hotspot/share/utilities/bitMap.cpp index 050ead1e34c..66f5d305e2b 100644 --- a/src/hotspot/share/utilities/bitMap.cpp +++ b/src/hotspot/share/utilities/bitMap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -42,7 +42,7 @@ static bm_word_t* pseudo_reallocate(const BitMapWithAllocator& derived, bm_word_ assert(new_size_in_words > 0, "precondition"); bm_word_t* map = derived.allocate(new_size_in_words); - if (old_map != NULL) { + if (old_map != nullptr) { Copy::disjoint_words((HeapWord*)old_map, (HeapWord*) map, MIN2(old_size_in_words, new_size_in_words)); } @@ -54,7 +54,7 @@ static bm_word_t* pseudo_reallocate(const BitMapWithAllocator& derived, bm_word_ template <class BitMapWithAllocator> void GrowableBitMap<BitMapWithAllocator>::initialize(idx_t size_in_bits, bool clear) { - assert(map() == NULL, "precondition"); + assert(map() == nullptr, "precondition"); assert(size() == 0, "precondition"); resize(size_in_bits, clear); @@ -80,7 +80,7 @@ void GrowableBitMap<BitMapWithAllocator>::resize(idx_t new_size_in_bits, bool cl if (new_size_in_words == 0) { derived->free(old_map, old_size_in_words); - update(NULL, 0); + update(nullptr, 0); return; } diff --git a/src/hotspot/share/utilities/chunkedList.hpp b/src/hotspot/share/utilities/chunkedList.hpp index 1a899ee2bfb..81898ac53b2 100644 --- a/src/hotspot/share/utilities/chunkedList.hpp +++ b/src/hotspot/share/utilities/chunkedList.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, 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 @@ -44,7 +44,7 @@ template <class T, MEMFLAGS F> class ChunkedList : public CHeapObj<F> { } public: - ChunkedList<T, F>() : _top(_values), _next_used(NULL), _next_free(NULL) {} + ChunkedList<T, F>() : _top(_values), _next_used(nullptr), _next_free(nullptr) {} bool is_full() const { return _top == end(); diff --git a/src/hotspot/share/utilities/concurrentHashTable.hpp b/src/hotspot/share/utilities/concurrentHashTable.hpp index 2a6af1fe4b4..0336f06916b 100644 --- a/src/hotspot/share/utilities/concurrentHashTable.hpp +++ b/src/hotspot/share/utilities/concurrentHashTable.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2023, 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 @@ -67,7 +67,7 @@ class ConcurrentHashTable : public CHeapObj<F> { Node * volatile _next; VALUE _value; public: - Node(const VALUE& value, Node* next = NULL) + Node(const VALUE& value, Node* next = nullptr) : _next(next), _value(value) { assert((((uintptr_t)this) & ((uintptr_t)0x3)) == 0, "Must 16 bit aligned."); @@ -80,7 +80,7 @@ class ConcurrentHashTable : public CHeapObj<F> { VALUE* value() { return &_value; } // Creates a node. - static Node* create_node(void* context, const VALUE& value, Node* next = NULL) { + static Node* create_node(void* context, const VALUE& value, Node* next = nullptr) { return new (CONFIG::allocate_node(context, sizeof(Node), value)) Node(value, next); } // Destroys a node. @@ -138,7 +138,7 @@ class ConcurrentHashTable : public CHeapObj<F> { public: // A bucket is only one pointer with the embedded state. - Bucket() : _first(NULL) {}; + Bucket() : _first(nullptr) {}; // Get the first pointer unmasked. Node* first() const; @@ -312,7 +312,7 @@ class ConcurrentHashTable : public CHeapObj<F> { // Finds a node. template <typename LOOKUP_FUNC> Node* get_node(const Bucket* const bucket, LOOKUP_FUNC& lookup_f, - bool* have_dead, size_t* loops = NULL) const; + bool* have_dead, size_t* loops = nullptr) const; // Method for shrinking. bool internal_shrink_prolog(Thread* thread, size_t log2_size); @@ -333,7 +333,7 @@ class ConcurrentHashTable : public CHeapObj<F> { // Get a value. template <typename LOOKUP_FUNC> VALUE* internal_get(Thread* thread, LOOKUP_FUNC& lookup_f, - bool* grow_hint = NULL); + bool* grow_hint = nullptr); // Insert and get current value. template <typename LOOKUP_FUNC, typename FOUND_FUNC> @@ -421,7 +421,7 @@ class ConcurrentHashTable : public CHeapObj<F> { // This means no paused bucket resize operation is going to resume // on this table. - bool is_safepoint_safe() { return _resize_lock_owner == NULL; } + bool is_safepoint_safe() { return _resize_lock_owner == nullptr; } // Re-size operations. bool shrink(Thread* thread, size_t size_limit_log2 = 0); @@ -440,13 +440,13 @@ class ConcurrentHashTable : public CHeapObj<F> { // called. template <typename LOOKUP_FUNC, typename FOUND_FUNC> bool get(Thread* thread, LOOKUP_FUNC& lookup_f, FOUND_FUNC& foundf, - bool* grow_hint = NULL); + bool* grow_hint = nullptr); // Returns true true if the item was inserted, duplicates are found with // LOOKUP_FUNC. template <typename LOOKUP_FUNC> bool insert(Thread* thread, LOOKUP_FUNC& lookup_f, const VALUE& value, - bool* grow_hint = NULL, bool* clean_hint = NULL) { + bool* grow_hint = nullptr, bool* clean_hint = nullptr) { struct NOP { void operator()(...) const {} } nop; @@ -457,7 +457,7 @@ class ConcurrentHashTable : public CHeapObj<F> { // LOOKUP_FUNC then FOUND_FUNC is called. template <typename LOOKUP_FUNC, typename FOUND_FUNC> bool insert_get(Thread* thread, LOOKUP_FUNC& lookup_f, VALUE& value, FOUND_FUNC& foundf, - bool* grow_hint = NULL, bool* clean_hint = NULL) { + bool* grow_hint = nullptr, bool* clean_hint = nullptr) { return internal_insert_get(thread, lookup_f, value, foundf, grow_hint, clean_hint); } @@ -534,7 +534,7 @@ class ConcurrentHashTable : public CHeapObj<F> { // The VALUEs are safe as long as you never save the VALUEs outside the // scope, e.g. after ~MultiGetHandle(). template <typename LOOKUP_FUNC> - VALUE* get(LOOKUP_FUNC& lookup_f, bool* grow_hint = NULL); + VALUE* get(LOOKUP_FUNC& lookup_f, bool* grow_hint = nullptr); }; private: diff --git a/src/hotspot/share/utilities/concurrentHashTable.inline.hpp b/src/hotspot/share/utilities/concurrentHashTable.inline.hpp index e0ca3b60add..884295fc754 100644 --- a/src/hotspot/share/utilities/concurrentHashTable.inline.hpp +++ b/src/hotspot/share/utilities/concurrentHashTable.inline.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2023, 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 @@ -135,7 +135,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: { assert(is_locked(), "Must be locked."); Node* const volatile * ret = first_ptr(); - while (clear_state(*ret) != NULL) { + while (clear_state(*ret) != nullptr) { ret = clear_state(*ret)->next_ptr(); } release_assign_node_ptr(ret, node); @@ -222,8 +222,8 @@ inline ConcurrentHashTable<CONFIG, F>:: _cs_context(GlobalCounter::critical_section_begin(_thread)) { // This version is published now. - if (Atomic::load_acquire(&_cht->_invisible_epoch) != NULL) { - Atomic::release_store_fence(&_cht->_invisible_epoch, (Thread*)NULL); + if (Atomic::load_acquire(&_cht->_invisible_epoch) != nullptr) { + Atomic::release_store_fence(&_cht->_invisible_epoch, (Thread*)nullptr); } } @@ -252,16 +252,16 @@ inline bool ConcurrentHashTable<CONFIG, F>:: { // Instantiated for pointer type (true), so we can use prefetch. // When visiting all Nodes doing this prefetch give around 30%. - Node* pref = prefetch_bucket != NULL ? prefetch_bucket->first() : NULL; - for (Node* next = bucket->first(); next != NULL ; next = next->next()) { - if (pref != NULL) { + Node* pref = prefetch_bucket != nullptr ? prefetch_bucket->first() : nullptr; + for (Node* next = bucket->first(); next != nullptr ; next = next->next()) { + if (pref != nullptr) { Prefetch::read(*pref->value(), 0); pref = pref->next(); } // Read next() Node* once. May be racing with a thread moving the next // pointers. Node* next_pref = next->next(); - if (next_pref != NULL) { + if (next_pref != nullptr) { Prefetch::read(*next_pref->value(), 0); } if (eval_f(next->value())) { @@ -278,7 +278,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: EVALUATE_FUNC& eval_f, Bucket* preb) { - for (Node* next = bucket->first(); next != NULL ; next = next->next()) { + for (Node* next = bucket->first(); next != nullptr ; next = next->next()) { if (eval_f(next->value())) { return true; } @@ -297,7 +297,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: if (Atomic::load_acquire(&_invisible_epoch) == thread) { return; } - assert(_invisible_epoch == NULL, "Two thread doing bulk operations"); + assert(_invisible_epoch == nullptr, "Two thread doing bulk operations"); // We set this/next version that we are synchronizing for to not published. // A reader will zero this flag if it reads this/next version. Atomic::release_store(&_invisible_epoch, thread); @@ -309,7 +309,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: try_resize_lock(Thread* locker) { if (_resize_lock->try_lock()) { - if (_resize_lock_owner != NULL) { + if (_resize_lock_owner != nullptr) { assert(locker != _resize_lock_owner, "Already own lock"); // We got mutex but internal state is locked. _resize_lock->unlock(); @@ -335,7 +335,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: _resize_lock->lock_without_safepoint_check(); // If holder of lock dropped mutex for safepoint mutex might be unlocked, // and _resize_lock_owner will contain the owner. - if (_resize_lock_owner != NULL) { + if (_resize_lock_owner != nullptr) { assert(locker != _resize_lock_owner, "Already own lock"); // We got mutex but internal state is locked. _resize_lock->unlock(); @@ -354,7 +354,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: { _invisible_epoch = 0; assert(locker == _resize_lock_owner, "Not unlocked by locker."); - _resize_lock_owner = NULL; + _resize_lock_owner = nullptr; _resize_lock->unlock(); } @@ -366,7 +366,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: for (size_t node_it = 0; node_it < _table->_size; node_it++) { Bucket* bucket = _table->get_buckets() + node_it; Node* node = bucket->first(); - while (node != NULL) { + while (node != nullptr) { Node* free_node = node; node = node->next(); Node::destroy_node(_context, free_node); @@ -401,7 +401,7 @@ ConcurrentHashTable<CONFIG, F>:: // All must see this. GlobalCounter::write_synchronize(); // _new_table not read any more. - _new_table = NULL; + _new_table = nullptr; DEBUG_ONLY(_new_table = (InternalTable*)POISON_PTR;) return old_table; } @@ -411,7 +411,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: internal_grow_range(Thread* thread, size_t start, size_t stop) { assert(stop <= _table->_size, "Outside backing array"); - assert(_new_table != NULL, "Grow not proper setup before start"); + assert(_new_table != nullptr, "Grow not proper setup before start"); // The state is also copied here. Hence all buckets in new table will be // locked. I call the siblings odd/even, where even have high bit 0 and odd // have high bit 1. @@ -456,7 +456,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: Node* const volatile * rem_n_prev = bucket->first_ptr(); Node* rem_n = bucket->first(); bool have_dead = false; - while (rem_n != NULL) { + while (rem_n != nullptr) { if (lookup_f.equals(rem_n->value(), &have_dead)) { bucket->release_assign_node_ptr(rem_n_prev, rem_n->next()); break; @@ -468,7 +468,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: bucket->unlock(); - if (rem_n == NULL) { + if (rem_n == nullptr) { return false; } // Publish the deletion. @@ -487,7 +487,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: { // Here we have resize lock so table is SMR safe, and there is no new // table. Can do this in parallel if we want. - assert((is_mt && _resize_lock_owner != NULL) || + assert((is_mt && _resize_lock_owner != nullptr) || (!is_mt && _resize_lock_owner == thread), "Re-size lock not held"); Node* ndel_stack[StackBufferSize]; InternalTable* table = get_table(); @@ -502,7 +502,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: for (size_t bucket_it = start_idx; bucket_it < stop_idx; bucket_it++) { Bucket* bucket = table->get_bucket(bucket_it); Bucket* prefetch_bucket = (bucket_it+1) < stop_idx ? - table->get_bucket(bucket_it+1) : NULL; + table->get_bucket(bucket_it+1) : nullptr; if (!HaveDeletables<std::is_pointer<VALUE>::value, EVALUATE_FUNC>:: have_deletable(bucket, eval_f, prefetch_bucket)) { @@ -545,7 +545,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: Node* ndel[StackBufferSize]; Node* const volatile * rem_n_prev = bucket->first_ptr(); Node* rem_n = bucket->first(); - while (rem_n != NULL) { + while (rem_n != nullptr) { bool is_dead = false; lookup_f.equals(rem_n->value(), &is_dead); if (is_dead) { @@ -625,7 +625,7 @@ ConcurrentHashTable<CONFIG, F>:: { size_t loop_count = 0; Node* node = bucket->first(); - while (node != NULL) { + while (node != nullptr) { bool is_dead = false; ++loop_count; if (lookup_f.equals(node->value(), &is_dead)) { @@ -636,7 +636,7 @@ ConcurrentHashTable<CONFIG, F>:: } node = node->next(); } - if (loops != NULL) { + if (loops != nullptr) { *loops = loop_count; } return node; @@ -648,16 +648,16 @@ inline bool ConcurrentHashTable<CONFIG, F>:: InternalTable* new_table, size_t even_index, size_t odd_index) { Node* aux = old_table->get_bucket(even_index)->first(); - if (aux == NULL) { + if (aux == nullptr) { // This is an empty bucket and in debug we poison first ptr in bucket. // Therefore we must make sure no readers are looking at this bucket. // If we don't do a write_synch here, caller must do it. return false; } - Node* delete_me = NULL; + Node* delete_me = nullptr; Node* const volatile * even = new_table->get_bucket(even_index)->first_ptr(); Node* const volatile * odd = new_table->get_bucket(odd_index)->first_ptr(); - while (aux != NULL) { + while (aux != nullptr) { bool dead_hash = false; size_t aux_hash = CONFIG::get_hash(*aux->value(), &dead_hash); Node* aux_next = aux->next(); @@ -692,9 +692,9 @@ inline bool ConcurrentHashTable<CONFIG, F>:: // chain. E.g. looking for even hash value but got moved to the odd bucket // chain. write_synchonize_on_visible_epoch(thread); - if (delete_me != NULL) { + if (delete_me != nullptr) { Node::destroy_node(_context, delete_me); - delete_me = NULL; + delete_me = nullptr; } } return true; @@ -792,7 +792,7 @@ template <typename CONFIG, MEMFLAGS F> inline void ConcurrentHashTable<CONFIG, F>:: internal_reset(size_t log2_size) { - assert(_table != NULL, "table failed"); + assert(_table != nullptr, "table failed"); assert(_log2_size_limit >= log2_size, "bad ergo"); delete _table; @@ -869,14 +869,14 @@ inline typename CONFIG::Value* ConcurrentHashTable<CONFIG, F>:: { bool clean = false; size_t loops = 0; - VALUE* ret = NULL; + VALUE* ret = nullptr; const Bucket* bucket = get_bucket(lookup_f.get_hash()); Node* node = get_node(bucket, lookup_f, &clean, &loops); - if (node != NULL) { + if (node != nullptr) { ret = node->value(); } - if (grow_hint != NULL) { + if (grow_hint != nullptr) { *grow_hint = loops > _grow_hint; } @@ -895,7 +895,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: size_t loops = 0; size_t i = 0; uintx hash = lookup_f.get_hash(); - Node* new_node = Node::create_node(_context, value, NULL); + Node* new_node = Node::create_node(_context, value, nullptr); while (true) { { @@ -903,12 +903,12 @@ inline bool ConcurrentHashTable<CONFIG, F>:: Bucket* bucket = get_bucket(hash); Node* first_at_start = bucket->first(); Node* old = get_node(bucket, lookup_f, &clean, &loops); - if (old == NULL) { + if (old == nullptr) { new_node->set_next(first_at_start); if (bucket->cas_first(new_node, first_at_start)) { foundf(new_node->value()); JFR_ONLY(safe_stats_add();) - new_node = NULL; + new_node = nullptr; ret = true; break; /* leave critical section */ } @@ -928,7 +928,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: } } - if (new_node != NULL) { + if (new_node != nullptr) { // CAS failed and a duplicate was inserted, we must free this node. Node::destroy_node(_context, new_node); } else if (i == 0 && clean) { @@ -939,11 +939,11 @@ inline bool ConcurrentHashTable<CONFIG, F>:: clean = false; } - if (grow_hint != NULL) { + if (grow_hint != nullptr) { *grow_hint = loops > _grow_hint; } - if (clean_hint != NULL) { + if (clean_hint != nullptr) { *clean_hint = clean; } @@ -956,7 +956,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: visit_nodes(Bucket* bucket, FUNC& visitor_f) { Node* current_node = bucket->first(); - while (current_node != NULL) { + while (current_node != nullptr) { Prefetch::read(current_node->next(), 0); if (!visitor_f(current_node->value())) { return false; @@ -1017,9 +1017,9 @@ inline size_t ConcurrentHashTable<CONFIG, F>:: template <typename CONFIG, MEMFLAGS F> inline ConcurrentHashTable<CONFIG, F>:: ConcurrentHashTable(size_t log2size, size_t log2size_limit, size_t grow_hint, bool enable_statistics, void* context) - : _context(context), _new_table(NULL), _log2_size_limit(log2size_limit), + : _context(context), _new_table(nullptr), _log2_size_limit(log2size_limit), _log2_start_size(log2size), _grow_hint(grow_hint), - _size_limit_reached(false), _resize_lock_owner(NULL), + _size_limit_reached(false), _resize_lock_owner(nullptr), _invisible_epoch(0) { if (enable_statistics) { @@ -1093,7 +1093,7 @@ inline bool ConcurrentHashTable<CONFIG, F>:: bool ret = false; ScopedCS cs(thread, this); VALUE* val = internal_get(thread, lookup_f, grow_hint); - if (val != NULL) { + if (val != nullptr) { found_f(val); ret = true; } @@ -1163,7 +1163,7 @@ inline void ConcurrentHashTable<CONFIG, F>:: // If there is a paused resize we also need to visit the already resized items. table = get_new_table(); - if (table == NULL) { + if (table == nullptr) { return; } DEBUG_ONLY(if (table == POISON_PTR) { return; }) @@ -1238,7 +1238,7 @@ inline TableStatistics ConcurrentHashTable<CONFIG, F>:: continue; } Node* current_node = bucket->first(); - while (current_node != NULL) { + while (current_node != nullptr) { ++count; literal_bytes += vs_f(current_node->value()); current_node = current_node->next(); @@ -1292,11 +1292,11 @@ inline bool ConcurrentHashTable<CONFIG, F>:: if (!try_resize_lock(thread)) { return false; } - assert(_new_table == NULL || _new_table == POISON_PTR, "Must be NULL"); + assert(_new_table == nullptr || _new_table == POISON_PTR, "Must be nullptr"); for (size_t bucket_it = 0; bucket_it < _table->_size; bucket_it++) { Bucket* bucket = _table->get_bucket(bucket_it); assert(!bucket->have_redirect() && !bucket->is_locked(), "Table must be uncontended"); - while (bucket->first() != NULL) { + while (bucket->first() != nullptr) { Node* move_node = bucket->first(); bool ok = bucket->cas_first(move_node->next(), move_node); assert(ok, "Uncontended cas must work"); diff --git a/src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp b/src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp index f7f06269860..78ca8b64447 100644 --- a/src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp +++ b/src/hotspot/share/utilities/concurrentHashTableTasks.inline.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2023, 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 @@ -169,7 +169,7 @@ class ConcurrentHashTable<CONFIG, F>::BulkDeleteTask : template <typename EVALUATE_FUNC, typename DELETE_FUNC> bool do_task(Thread* thread, EVALUATE_FUNC& eval_f, DELETE_FUNC& del_f) { size_t start, stop; - assert(BucketsOperation::_cht->_resize_lock_owner != NULL, + assert(BucketsOperation::_cht->_resize_lock_owner != nullptr, "Should be locked"); if (!this->claim(&start, &stop)) { return false; @@ -177,7 +177,7 @@ class ConcurrentHashTable<CONFIG, F>::BulkDeleteTask : BucketsOperation::_cht->do_bulk_delete_locked_for(thread, start, stop, eval_f, del_f, BucketsOperation::_is_mt); - assert(BucketsOperation::_cht->_resize_lock_owner != NULL, + assert(BucketsOperation::_cht->_resize_lock_owner != nullptr, "Should be locked"); return true; } @@ -210,13 +210,13 @@ class ConcurrentHashTable<CONFIG, F>::GrowTask : // Re-sizes a portion of the table. Returns true if there is more work. bool do_task(Thread* thread) { size_t start, stop; - assert(BucketsOperation::_cht->_resize_lock_owner != NULL, + assert(BucketsOperation::_cht->_resize_lock_owner != nullptr, "Should be locked"); if (!this->claim(&start, &stop)) { return false; } BucketsOperation::_cht->internal_grow_range(thread, start, stop); - assert(BucketsOperation::_cht->_resize_lock_owner != NULL, + assert(BucketsOperation::_cht->_resize_lock_owner != nullptr, "Should be locked"); return true; } diff --git a/src/hotspot/share/utilities/copy.cpp b/src/hotspot/share/utilities/copy.cpp index db513438749..6ac703ed49a 100644 --- a/src/hotspot/share/utilities/copy.cpp +++ b/src/hotspot/share/utilities/copy.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2023, 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 @@ -67,8 +67,8 @@ public: */ template<bool swap> static void conjoint_swap_if_needed(const void* src, void* dst, size_t byte_count, size_t elem_size) { - assert(src != NULL, "address must not be NULL"); - assert(dst != NULL, "address must not be NULL"); + assert(src != nullptr, "address must not be nullptr"); + assert(dst != nullptr, "address must not be nullptr"); assert(elem_size == 2 || elem_size == 4 || elem_size == 8, "incorrect element size: " SIZE_FORMAT, elem_size); assert(is_aligned(byte_count, elem_size), diff --git a/src/hotspot/share/utilities/debug.cpp b/src/hotspot/share/utilities/debug.cpp index 724f5857530..d33387c2ad8 100644 --- a/src/hotspot/share/utilities/debug.cpp +++ b/src/hotspot/share/utilities/debug.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -73,7 +73,7 @@ static char g_dummy; char* g_assert_poison = &g_dummy; static intx g_asserting_thread = 0; -static void* g_assertion_context = NULL; +static void* g_assertion_context = nullptr; #endif // CAN_SHOW_REGISTERS_ON_ASSERT // Set to suppress secondary error reporting. @@ -110,7 +110,7 @@ struct Crasher { Crasher() { // Using getenv - no other mechanism would work yet. const char* s = ::getenv("HOTSPOT_FATAL_ERROR_DURING_DYNAMIC_INITIALIZATION"); - if (s != NULL && ::strcmp(s, "1") == 0) { + if (s != nullptr && ::strcmp(s, "1") == 0) { fatal("HOTSPOT_FATAL_ERROR_DURING_DYNAMIC_INITIALIZATION"); } } @@ -135,7 +135,7 @@ void warning(const char* format, ...) { #define is_token_break(ch) (isspace(ch) || (ch) == ',') -static const char* last_file_name = NULL; +static const char* last_file_name = nullptr; static int last_line_no = -1; // assert/guarantee/... may happen very early during VM initialization. @@ -149,7 +149,7 @@ bool error_is_suppressed(const char* file_name, int line_no) { int file_name_len = (int)strlen(file_name); char separator = os::file_separator()[0]; const char* base_name = strrchr(file_name, separator); - if (base_name == NULL) + if (base_name == nullptr) base_name = file_name; // scan the SuppressErrorAt option @@ -185,7 +185,7 @@ bool error_is_suppressed(const char* file_name, int line_no) { const char* foundp; bool match = false; while (!match - && (foundp = strchr(look, sfile[0])) != NULL + && (foundp = strchr(look, sfile[0])) != nullptr && foundp <= look_max) { match = true; for (int i = 1; i < sfile_len; i++) { @@ -245,7 +245,7 @@ void report_vm_error(const char* file, int line, const char* error_msg) static void print_error_for_unit_test(const char* message, const char* detail_fmt, va_list detail_args) { if (ExecutingUnitTests) { char detail_msg[256]; - if (detail_fmt != NULL) { + if (detail_fmt != nullptr) { // Special handling for the sake of gtest death tests which expect the assert // message to be printed in one short line to stderr (see TEST_VM_ASSERT_MSG) and // cannot be tweaked to accept our normal assert message. @@ -254,7 +254,7 @@ static void print_error_for_unit_test(const char* message, const char* detail_fm jio_vsnprintf(detail_msg, sizeof(detail_msg), detail_fmt, detail_args_copy); // the VM assert tests look for "assert failed: " - if (message == NULL) { + if (message == nullptr) { fprintf(stderr, "assert failed: %s", detail_msg); } else { if (strlen(detail_msg) > 0) { @@ -274,9 +274,9 @@ void report_vm_error(const char* file, int line, const char* error_msg, const ch if (Debugging || error_is_suppressed(file, line)) return; va_list detail_args; va_start(detail_args, detail_fmt); - void* context = NULL; + void* context = nullptr; #ifdef CAN_SHOW_REGISTERS_ON_ASSERT - if (g_assertion_context != NULL && os::current_thread_id() == g_asserting_thread) { + if (g_assertion_context != nullptr && os::current_thread_id() == g_asserting_thread) { context = g_assertion_context; } #endif // CAN_SHOW_REGISTERS_ON_ASSERT @@ -296,9 +296,9 @@ void report_fatal(VMErrorType error_type, const char* file, int line, const char if (Debugging || error_is_suppressed(file, line)) return; va_list detail_args; va_start(detail_args, detail_fmt); - void* context = NULL; + void* context = nullptr; #ifdef CAN_SHOW_REGISTERS_ON_ASSERT - if (g_assertion_context != NULL && os::current_thread_id() == g_asserting_thread) { + if (g_assertion_context != nullptr && os::current_thread_id() == g_asserting_thread) { context = g_assertion_context; } #endif // CAN_SHOW_REGISTERS_ON_ASSERT @@ -306,7 +306,7 @@ void report_fatal(VMErrorType error_type, const char* file, int line, const char print_error_for_unit_test("fatal error", detail_fmt, detail_args); VMError::report_and_die(error_type, "fatal error", detail_fmt, detail_args, - Thread::current_or_null(), NULL, NULL, context, + Thread::current_or_null(), nullptr, nullptr, context, file, line, 0); va_end(detail_args); } @@ -317,7 +317,7 @@ void report_vm_out_of_memory(const char* file, int line, size_t size, va_list detail_args; va_start(detail_args, detail_fmt); - print_error_for_unit_test(NULL, detail_fmt, detail_args); + print_error_for_unit_test(nullptr, detail_fmt, detail_args); VMError::report_and_die(Thread::current_or_null(), file, line, size, vm_err_type, detail_fmt, detail_args); va_end(detail_args); @@ -421,8 +421,8 @@ extern "C" JNIEXPORT void nm(intptr_t p) { // Actually we look through all CodeBlobs (the nm name has been kept for backwards compatibility) Command c("nm"); CodeBlob* cb = CodeCache::find_blob((address)p); - if (cb == NULL) { - tty->print_cr("NULL"); + if (cb == nullptr) { + tty->print_cr("null"); } else { cb->print(); } @@ -432,9 +432,9 @@ extern "C" JNIEXPORT void nm(intptr_t p) { extern "C" JNIEXPORT void disnm(intptr_t p) { Command c("disnm"); CodeBlob* cb = CodeCache::find_blob((address) p); - if (cb != NULL) { + if (cb != nullptr) { nmethod* nm = cb->as_nmethod_or_null(); - if (nm != NULL) { + if (nm != nullptr) { nm->print(); } else { cb->print(); @@ -449,7 +449,7 @@ extern "C" JNIEXPORT void printnm(intptr_t p) { os::snprintf_checked(buffer, sizeof(buffer), "printnm: " INTPTR_FORMAT, p); Command c(buffer); CodeBlob* cb = CodeCache::find_blob((address) p); - if (cb != NULL && cb->is_nmethod()) { + if (cb != nullptr && cb->is_nmethod()) { nmethod* nm = (nmethod*)cb; nm->print_nmethod(true); } else { @@ -484,8 +484,8 @@ extern "C" JNIEXPORT void verify() { extern "C" JNIEXPORT void pp(void* p) { Command c("pp"); FlagSetting fl(DisplayVMOutput, true); - if (p == NULL) { - tty->print_cr("NULL"); + if (p == nullptr) { + tty->print_cr("null"); return; } if (Universe::heap()->is_in(p)) { @@ -516,7 +516,7 @@ extern "C" JNIEXPORT void pp(void* p) { extern "C" JNIEXPORT void findpc(intptr_t x); extern "C" JNIEXPORT void ps() { // print stack - if (Thread::current_or_null() == NULL) return; + if (Thread::current_or_null() == nullptr) return; Command c("ps"); // Prints the stack of the current Java thread @@ -583,7 +583,7 @@ extern "C" JNIEXPORT void psd() { extern "C" JNIEXPORT void pss() { // print all stacks - if (Thread::current_or_null() == NULL) return; + if (Thread::current_or_null() == nullptr) return; Command c("pss"); Threads::print(true, PRODUCT_ONLY(false) NOT_PRODUCT(true)); } @@ -620,7 +620,7 @@ extern "C" JNIEXPORT void events() { extern "C" JNIEXPORT Method* findm(intptr_t pc) { Command c("findm"); nmethod* nm = CodeCache::find_nmethod((address)pc); - return (nm == NULL) ? (Method*)NULL : nm->method(); + return (nm == nullptr) ? (Method*)nullptr : nm->method(); } @@ -761,7 +761,7 @@ extern "C" JNIEXPORT void pns(void* sp, void* fp, void* pc) { // print native st extern "C" JNIEXPORT void pns2() { // print native stack Command c("pns2"); static char buf[O_BUFLEN]; - if (os::platform_print_native_stack(tty, NULL, buf, sizeof(buf))) { + if (os::platform_print_native_stack(tty, nullptr, buf, sizeof(buf))) { // We have printed the native stack in platform-specific code, // so nothing else to do in this case. } else { @@ -775,7 +775,7 @@ extern "C" JNIEXPORT void pns2() { // print native stack // Returns true iff the address p is readable and *(intptr_t*)p != errvalue extern "C" bool dbg_is_safe(const void* p, intptr_t errvalue) { - return p != NULL && SafeFetchN((intptr_t*)const_cast<void*>(p), errvalue) != errvalue; + return p != nullptr && SafeFetchN((intptr_t*)const_cast<void*>(p), errvalue) != errvalue; } extern "C" bool dbg_is_good_oop(oopDesc* o) { diff --git a/src/hotspot/share/utilities/decoder.cpp b/src/hotspot/share/utilities/decoder.cpp index a37a7231d22..8e4641a92fa 100644 --- a/src/hotspot/share/utilities/decoder.cpp +++ b/src/hotspot/share/utilities/decoder.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2017, 2020 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -38,21 +38,21 @@ #include "decoder_elf.hpp" #endif -AbstractDecoder* Decoder::_shared_decoder = NULL; -AbstractDecoder* Decoder::_error_handler_decoder = NULL; +AbstractDecoder* Decoder::_shared_decoder = nullptr; +AbstractDecoder* Decoder::_error_handler_decoder = nullptr; NullDecoder Decoder::_do_nothing_decoder; AbstractDecoder* Decoder::get_shared_instance() { assert(shared_decoder_lock()->owned_by_self(), "Require DecoderLock to enter"); - if (_shared_decoder == NULL) { + if (_shared_decoder == nullptr) { _shared_decoder = create_decoder(); } return _shared_decoder; } AbstractDecoder* Decoder::get_error_handler_instance() { - if (_error_handler_decoder == NULL) { + if (_error_handler_decoder == nullptr) { _error_handler_decoder = create_decoder(); } return _error_handler_decoder; @@ -69,8 +69,8 @@ AbstractDecoder* Decoder::create_decoder() { decoder = new (std::nothrow)ElfDecoder(); #endif - if (decoder == NULL || decoder->has_error()) { - if (decoder != NULL) { + if (decoder == nullptr || decoder->has_error()) { + if (decoder != nullptr) { delete decoder; } decoder = &_do_nothing_decoder; @@ -79,7 +79,7 @@ AbstractDecoder* Decoder::create_decoder() { } Mutex* Decoder::shared_decoder_lock() { - assert(SharedDecoder_lock != NULL, "Just check"); + assert(SharedDecoder_lock != nullptr, "Just check"); return SharedDecoder_lock; } diff --git a/src/hotspot/share/utilities/decoder.hpp b/src/hotspot/share/utilities/decoder.hpp index 78e612301eb..cd40408dd3f 100644 --- a/src/hotspot/share/utilities/decoder.hpp +++ b/src/hotspot/share/utilities/decoder.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -57,7 +57,7 @@ public: // demangling that was done systematically in the 'modulepath' variant // is now optional. virtual bool decode(address pc, char* buf, int buflen, int* offset, - const char* modulepath = NULL, bool demangle = true) = 0; + const char* modulepath = nullptr, bool demangle = true) = 0; virtual bool decode(address pc, char* buf, int buflen, int* offset, const void* base) = 0; // demangle a C++ symbol @@ -106,15 +106,15 @@ public: class Decoder : AllStatic { public: - static bool decode(address pc, char* buf, int buflen, int* offset, const char* modulepath = NULL, bool demangle = true); + static bool decode(address pc, char* buf, int buflen, int* offset, const char* modulepath = nullptr, bool demangle = true); static bool decode(address pc, char* buf, int buflen, int* offset, bool demangle) { - return decode(pc, buf, buflen, offset, (const char*) NULL, demangle); + return decode(pc, buf, buflen, offset, (const char*) nullptr, demangle); } static bool decode(address pc, char* buf, int buflen, int* offset, const void* base); static bool demangle(const char* symbol, char* buf, int buflen); // Attempts to retrieve source file name and line number associated with a pc. - // If filename != NULL, points to a buffer of size filename_len which will receive the + // If filename != nullptr, points to a buffer of size filename_len which will receive the // file name. File name will be silently truncated if output buffer is too small. // If is_pc_after_call is true, then pc is treated as pointing to the next instruction // after a call. The source information for the call instruction is fetched in that case. diff --git a/src/hotspot/share/utilities/decoder_elf.cpp b/src/hotspot/share/utilities/decoder_elf.cpp index f448236b63f..d983673b5b2 100644 --- a/src/hotspot/share/utilities/decoder_elf.cpp +++ b/src/hotspot/share/utilities/decoder_elf.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2023, 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 @@ -30,18 +30,18 @@ #include "runtime/os.hpp" ElfDecoder::~ElfDecoder() { - if (_opened_elf_files != NULL) { + if (_opened_elf_files != nullptr) { delete _opened_elf_files; - _opened_elf_files = NULL; + _opened_elf_files = nullptr; } } bool ElfDecoder::decode(address addr, char *buf, int buflen, int* offset, const char* filepath, bool demangle_name) { assert(filepath, "null file path"); - assert(buf != NULL && buflen > 0, "Invalid buffer"); + assert(buf != nullptr && buflen > 0, "Invalid buffer"); if (has_error()) return false; ElfFile* file = get_elf_file(filepath); - if (file == NULL) { + if (file == nullptr) { return false; } @@ -81,7 +81,7 @@ bool ElfDecoder::get_source_info(address pc, char* filename, size_t filename_len const uint32_t unsigned_offset_in_library = (uint32_t)offset_in_library; ElfFile* file = get_elf_file(filepath); - if (file == NULL) { + if (file == nullptr) { return false; } DWARF_LOG_INFO("##### Find filename and line number for offset " INT32_FORMAT_X_0 " in library %s #####", @@ -106,7 +106,7 @@ ElfFile* ElfDecoder::get_elf_file(const char* filepath) { ElfFile* file; file = _opened_elf_files; - while (file != NULL) { + while (file != nullptr) { if (file->same_elf_file(filepath)) { return file; } @@ -114,8 +114,8 @@ ElfFile* ElfDecoder::get_elf_file(const char* filepath) { } file = new (std::nothrow)ElfFile(filepath); - if (file != NULL) { - if (_opened_elf_files != NULL) { + if (file != nullptr) { + if (_opened_elf_files != nullptr) { file->set_next(_opened_elf_files); } _opened_elf_files = file; diff --git a/src/hotspot/share/utilities/decoder_elf.hpp b/src/hotspot/share/utilities/decoder_elf.hpp index 7324da0667f..2f38f3d3c39 100644 --- a/src/hotspot/share/utilities/decoder_elf.hpp +++ b/src/hotspot/share/utilities/decoder_elf.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2023, 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 @@ -34,7 +34,7 @@ class ElfDecoder : public AbstractDecoder { public: ElfDecoder() { - _opened_elf_files = NULL; + _opened_elf_files = nullptr; _decoder_status = no_error; } virtual ~ElfDecoder(); diff --git a/src/hotspot/share/utilities/defaultStream.hpp b/src/hotspot/share/utilities/defaultStream.hpp index 7b96c6b0ce0..061b656ab78 100644 --- a/src/hotspot/share/utilities/defaultStream.hpp +++ b/src/hotspot/share/utilities/defaultStream.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, 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 @@ -49,7 +49,7 @@ class defaultStream : public xmlTextStream { // must defer time stamp due to the fact that os::init() hasn't // yet been called and os::elapsed_counter() may not be valid defaultStream() { - _log_file = NULL; + _log_file = nullptr; _inited = false; _writer = -1; _last_writer = -1; diff --git a/src/hotspot/share/utilities/elfFile.cpp b/src/hotspot/share/utilities/elfFile.cpp index aaf78aca49f..487a19afe3b 100644 --- a/src/hotspot/share/utilities/elfFile.cpp +++ b/src/hotspot/share/utilities/elfFile.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -46,12 +46,12 @@ const char* ElfFile::USR_LIB_DEBUG_DIRECTORY = "/usr/lib/debug"; // For test only, disable elf section cache and force to read from file directly. bool ElfFile::_do_not_cache_elf_section = false; -ElfSection::ElfSection(FILE* fd, const Elf_Shdr& hdr) : _section_data(NULL) { +ElfSection::ElfSection(FILE* fd, const Elf_Shdr& hdr) : _section_data(nullptr) { _stat = load_section(fd, hdr); } ElfSection::~ElfSection() { - if (_section_data != NULL) { + if (_section_data != nullptr) { os::free(_section_data); } } @@ -67,7 +67,7 @@ NullDecoder::decoder_status ElfSection::load_section(FILE* const fd, const Elf_S _section_data = os::malloc(shdr.sh_size, mtInternal); // No enough memory for caching. It is okay, we can try to read from // file instead. - if (_section_data == NULL) return NullDecoder::no_error; + if (_section_data == nullptr) return NullDecoder::no_error; MarkedFileReader mfd(fd); if (mfd.has_mark() && @@ -76,19 +76,19 @@ NullDecoder::decoder_status ElfSection::load_section(FILE* const fd, const Elf_S return NullDecoder::no_error; } else { os::free(_section_data); - _section_data = NULL; + _section_data = nullptr; return NullDecoder::file_invalid; } } bool FileReader::read(void* buf, size_t size) { - assert(buf != NULL, "no buffer"); + assert(buf != nullptr, "no buffer"); assert(size > 0, "no space"); return fread(buf, size, 1, _fd) == 1; } size_t FileReader::read_buffer(void* buf, size_t size) { - assert(buf != NULL, "no buffer"); + assert(buf != nullptr, "no buffer"); assert(size > 0, "no space"); return fread(buf, 1, size, _fd); } @@ -107,8 +107,8 @@ MarkedFileReader::~MarkedFileReader() { } ElfFile::ElfFile(const char* filepath) : - _next(NULL), _filepath(os::strdup(filepath)), _file(NULL), - _symbol_tables(NULL), _string_tables(NULL), _shdr_string_table(NULL), _funcDesc_table(NULL), + _next(nullptr), _filepath(os::strdup(filepath)), _file(nullptr), + _symbol_tables(nullptr), _string_tables(nullptr), _shdr_string_table(nullptr), _funcDesc_table(nullptr), _status(NullDecoder::no_error), _dwarf_file(nullptr) { memset(&_elfHdr, 0, sizeof(_elfHdr)); if (_filepath == nullptr) { @@ -121,7 +121,7 @@ ElfFile::ElfFile(const char* filepath) : ElfFile::~ElfFile() { cleanup_tables(); - if (_file != NULL) { + if (_file != nullptr) { fclose(_file); } @@ -165,7 +165,7 @@ NullDecoder::decoder_status ElfFile::parse_elf(const char* filepath) { assert(filepath, "null file path"); _file = os::fopen(filepath, "r"); - if (_file != NULL) { + if (_file != nullptr) { return load_tables(); } else { return NullDecoder::file_not_found; @@ -211,11 +211,11 @@ NullDecoder::decoder_status ElfFile::load_tables() { if (shdr.sh_type == SHT_STRTAB) { // string tables ElfStringTable* table = new (std::nothrow) ElfStringTable(fd(), shdr, index); - if (table == NULL) { + if (table == nullptr) { return NullDecoder::out_of_memory; } if (index == _elfHdr.e_shstrndx) { - assert(_shdr_string_table == NULL, "Only set once"); + assert(_shdr_string_table == nullptr, "Only set once"); _shdr_string_table = table; } else { add_string_table(table); @@ -223,7 +223,7 @@ NullDecoder::decoder_status ElfFile::load_tables() { } else if (shdr.sh_type == SHT_SYMTAB || shdr.sh_type == SHT_DYNSYM) { // symbol tables ElfSymbolTable* table = new (std::nothrow) ElfSymbolTable(fd(), shdr); - if (table == NULL) { + if (table == nullptr) { return NullDecoder::out_of_memory; } add_symbol_table(table); @@ -247,7 +247,7 @@ NullDecoder::decoder_status ElfFile::load_tables() { } _funcDesc_table = new (std::nothrow) ElfFuncDescTable(_file, shdr, sect_index); - if (_funcDesc_table == NULL) { + if (_funcDesc_table == nullptr) { return NullDecoder::out_of_memory; } #endif @@ -256,14 +256,14 @@ NullDecoder::decoder_status ElfFile::load_tables() { #if defined(PPC64) && !defined(ABI_ELFv2) int ElfFile::section_by_name(const char* name, Elf_Shdr& hdr) { - assert(name != NULL, "No section name"); + assert(name != nullptr, "No section name"); size_t len = strlen(name) + 1; char* buf = (char*)os::malloc(len, mtInternal); - if (buf == NULL) { + if (buf == nullptr) { return -1; } - assert(_shdr_string_table != NULL, "Section header string table should be loaded"); + assert(_shdr_string_table != nullptr, "Section header string table should be loaded"); ElfStringTable* const table = _shdr_string_table; MarkedFileReader mfd(fd()); if (!mfd.has_mark() || !mfd.set_position(_elfHdr.e_shoff)) return -1; @@ -299,7 +299,7 @@ bool ElfFile::decode(address addr, char* buf, int buflen, int* offset) { bool found_symbol = false; ElfSymbolTable* symbol_table = _symbol_tables; - while (symbol_table != NULL) { + while (symbol_table != nullptr) { if (symbol_table->lookup(addr, &string_table_index, &pos_in_string_table, &off, _funcDesc_table)) { found_symbol = true; break; @@ -312,7 +312,7 @@ bool ElfFile::decode(address addr, char* buf, int buflen, int* offset) { ElfStringTable* string_table = get_string_table(string_table_index); - if (string_table == NULL) { + if (string_table == nullptr) { _status = NullDecoder::file_invalid; return false; } @@ -322,7 +322,7 @@ bool ElfFile::decode(address addr, char* buf, int buflen, int* offset) { } void ElfFile::add_symbol_table(ElfSymbolTable* table) { - if (_symbol_tables == NULL) { + if (_symbol_tables == nullptr) { _symbol_tables = table; } else { table->set_next(_symbol_tables); @@ -331,7 +331,7 @@ void ElfFile::add_symbol_table(ElfSymbolTable* table) { } void ElfFile::add_string_table(ElfStringTable* table) { - if (_string_tables == NULL) { + if (_string_tables == nullptr) { _string_tables = table; } else { table->set_next(_string_tables); @@ -341,11 +341,11 @@ void ElfFile::add_string_table(ElfStringTable* table) { ElfStringTable* ElfFile::get_string_table(int index) { ElfStringTable* p = _string_tables; - while (p != NULL) { + while (p != nullptr) { if (p->index() == index) return p; p = p->next(); } - return NULL; + return nullptr; } // Use unified logging to report errors rather than assert() throughout this method as this code is already part of the error reporting diff --git a/src/hotspot/share/utilities/elfFile.hpp b/src/hotspot/share/utilities/elfFile.hpp index 980de4aca49..9d5780a5016 100644 --- a/src/hotspot/share/utilities/elfFile.hpp +++ b/src/hotspot/share/utilities/elfFile.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -183,8 +183,8 @@ class ElfFile: public CHeapObj<mtInternal> { bool decode(address addr, char* buf, int buflen, int* offset); bool same_elf_file(const char* filepath) const { - assert(filepath != NULL, "null file path"); - return (_filepath != NULL && !strcmp(filepath, _filepath)); + assert(filepath != nullptr, "null file path"); + return (_filepath != nullptr && !strcmp(filepath, _filepath)); } NullDecoder::decoder_status get_status() const { diff --git a/src/hotspot/share/utilities/elfFuncDescTable.cpp b/src/hotspot/share/utilities/elfFuncDescTable.cpp index 5ce2d38a7c4..28ffd754b14 100644 --- a/src/hotspot/share/utilities/elfFuncDescTable.cpp +++ b/src/hotspot/share/utilities/elfFuncDescTable.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2013 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -48,17 +48,17 @@ ElfFuncDescTable::~ElfFuncDescTable() { address ElfFuncDescTable::lookup(Elf_Word index) { if (NullDecoder::is_error(_status)) { - return NULL; + return nullptr; } address* func_descs = cached_func_descs(); const Elf_Shdr* shdr = _section.section_header(); if (!(shdr->sh_size > 0 && shdr->sh_addr <= index && index <= shdr->sh_addr + shdr->sh_size)) { // don't put the whole decoder in error mode if we just tried a wrong index - return NULL; + return nullptr; } - if (func_descs != NULL) { + if (func_descs != nullptr) { return func_descs[(index - shdr->sh_addr) / sizeof(address)]; } else { MarkedFileReader mfd(_file); @@ -67,7 +67,7 @@ address ElfFuncDescTable::lookup(Elf_Word index) { !mfd.set_position(shdr->sh_offset + index - shdr->sh_addr) || !mfd.read((void*)&addr, sizeof(addr))) { _status = NullDecoder::file_invalid; - return NULL; + return nullptr; } return addr; } diff --git a/src/hotspot/share/utilities/elfFuncDescTable.hpp b/src/hotspot/share/utilities/elfFuncDescTable.hpp index 6af6bdd9eab..77af92d1818 100644 --- a/src/hotspot/share/utilities/elfFuncDescTable.hpp +++ b/src/hotspot/share/utilities/elfFuncDescTable.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2013 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -132,7 +132,7 @@ public: ElfFuncDescTable(FILE* file, Elf_Shdr shdr, int index); ~ElfFuncDescTable(); - // return the function address for the function descriptor at 'index' or NULL on error + // return the function address for the function descriptor at 'index' or nullptr on error address lookup(Elf_Word index); int get_index() const { return _index; }; diff --git a/src/hotspot/share/utilities/elfStringTable.cpp b/src/hotspot/share/utilities/elfStringTable.cpp index 29aba5f7a60..b071bbaac73 100644 --- a/src/hotspot/share/utilities/elfStringTable.cpp +++ b/src/hotspot/share/utilities/elfStringTable.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -34,12 +34,12 @@ // We will try to load whole string table into memory if we can. // Otherwise, fallback to more expensive file operation. ElfStringTable::ElfStringTable(FILE* const file, Elf_Shdr& shdr, int index) : - _next(NULL), _index(index), _section(file, shdr), _fd(file) { + _next(nullptr), _index(index), _section(file, shdr), _fd(file) { _status = _section.status(); } ElfStringTable::~ElfStringTable() { - if (_next != NULL) { + if (_next != nullptr) { delete _next; } } @@ -55,7 +55,7 @@ bool ElfStringTable::string_at(size_t pos, char* buf, int buflen) { } const char* data = (const char*)_section.section_data(); - if (data != NULL) { + if (data != nullptr) { jio_snprintf(buf, buflen, "%s", data + pos); return true; } else { // no cache data, read from file instead diff --git a/src/hotspot/share/utilities/elfSymbolTable.cpp b/src/hotspot/share/utilities/elfSymbolTable.cpp index d43203ab35a..868457418eb 100644 --- a/src/hotspot/share/utilities/elfSymbolTable.cpp +++ b/src/hotspot/share/utilities/elfSymbolTable.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -31,8 +31,8 @@ #include "utilities/elfSymbolTable.hpp" ElfSymbolTable::ElfSymbolTable(FILE* const file, Elf_Shdr& shdr) : - _next(NULL), _fd(file), _section(file, shdr) { - assert(file != NULL, "null file handle"); + _next(nullptr), _fd(file), _section(file, shdr) { + assert(file != nullptr, "null file handle"); _status = _section.status(); if (_section.section_header()->sh_size % sizeof(Elf_Sym) != 0) { @@ -41,7 +41,7 @@ ElfSymbolTable::ElfSymbolTable(FILE* const file, Elf_Shdr& shdr) : } ElfSymbolTable::~ElfSymbolTable() { - if (_next != NULL) { + if (_next != nullptr) { delete _next; } } @@ -51,7 +51,7 @@ bool ElfSymbolTable::compare(const Elf_Sym* sym, address addr, int* stringtableI Elf_Word st_size = sym->st_size; const Elf_Shdr* shdr = _section.section_header(); address sym_addr; - if (funcDescTable != NULL && funcDescTable->get_index() == sym->st_shndx) { + if (funcDescTable != nullptr && funcDescTable->get_index() == sym->st_shndx) { // We need to go another step through the function descriptor table (currently PPC64 only) sym_addr = funcDescTable->lookup(sym->st_value); } else { @@ -80,7 +80,7 @@ bool ElfSymbolTable::lookup(address addr, int* stringtableIndex, int* posIndex, int count = _section.section_header()->sh_size / sym_size; Elf_Sym* symbols = (Elf_Sym*)_section.section_data(); - if (symbols != NULL) { + if (symbols != nullptr) { for (int index = 0; index < count; index ++) { if (compare(&symbols[index], addr, stringtableIndex, posIndex, offset, funcDescTable)) { return true; diff --git a/src/hotspot/share/utilities/events.cpp b/src/hotspot/share/utilities/events.cpp index 4e66b36dfef..4f7c0231863 100644 --- a/src/hotspot/share/utilities/events.cpp +++ b/src/hotspot/share/utilities/events.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -33,15 +33,15 @@ #include "utilities/events.hpp" -EventLog* Events::_logs = NULL; -StringEventLog* Events::_messages = NULL; -StringEventLog* Events::_vm_operations = NULL; -ExceptionsEventLog* Events::_exceptions = NULL; -StringEventLog* Events::_redefinitions = NULL; -UnloadingEventLog* Events::_class_unloading = NULL; -StringEventLog* Events::_class_loading = NULL; -StringEventLog* Events::_deopt_messages = NULL; -StringEventLog* Events::_dll_messages = NULL; +EventLog* Events::_logs = nullptr; +StringEventLog* Events::_messages = nullptr; +StringEventLog* Events::_vm_operations = nullptr; +ExceptionsEventLog* Events::_exceptions = nullptr; +StringEventLog* Events::_redefinitions = nullptr; +UnloadingEventLog* Events::_class_unloading = nullptr; +StringEventLog* Events::_class_loading = nullptr; +StringEventLog* Events::_deopt_messages = nullptr; +StringEventLog* Events::_dll_messages = nullptr; EventLog::EventLog() { // This normally done during bootstrap when we're only single @@ -56,7 +56,7 @@ EventLog::EventLog() { // the buffer. void Events::print_all(outputStream* out, int max) { EventLog* log = _logs; - while (log != NULL) { + while (log != nullptr) { log->print_log_on(out, max); log = log->next(); } @@ -66,7 +66,7 @@ void Events::print_all(outputStream* out, int max) { void Events::print_one(outputStream* out, const char* log_name, int max) { EventLog* log = _logs; int num_printed = 0; - while (log != NULL) { + while (log != nullptr) { if (log->matches_name_or_handle(log_name)) { log->print_log_on(out, max); num_printed ++; @@ -78,7 +78,7 @@ void Events::print_one(outputStream* out, const char* log_name, int max) { out->print_cr("The name \"%s\" did not match any known event log. " "Valid event log names are:", log_name); EventLog* log = _logs; - while (log != NULL) { + while (log != nullptr) { log->print_names(out); out->cr(); log = log->next(); @@ -118,13 +118,13 @@ EventMarkBase::EventMarkBase(EventLogFunction log_function) : void EventMarkBase::log_start(const char* format, va_list argp) { // Save a copy of begin message and log it. _buffer.printv(format, argp); - _log_function(NULL, "%s", _buffer.buffer()); + _log_function(nullptr, "%s", _buffer.buffer()); } void EventMarkBase::log_end() { // Append " done" to the begin message and log it _buffer.append(" done"); - _log_function(NULL, "%s", _buffer.buffer()); + _log_function(nullptr, "%s", _buffer.buffer()); } void UnloadingEventLog::log(Thread* thread, InstanceKlass* ik) { diff --git a/src/hotspot/share/utilities/events.hpp b/src/hotspot/share/utilities/events.hpp index 8b6e7150606..4494c4e4fcb 100644 --- a/src/hotspot/share/utilities/events.hpp +++ b/src/hotspot/share/utilities/events.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -148,7 +148,7 @@ template <class T> class EventLogBase : public EventLog { void print(outputStream* out, EventRecord<T>& e) { out->print("Event: %.3f ", e.timestamp); - if (e.thread != NULL) { + if (e.thread != nullptr) { out->print("Thread " PTR_FORMAT " ", p2i(e.thread)); } print(out, e.data); @@ -277,7 +277,7 @@ class Events : AllStatic { }; inline void Events::log(Thread* thread, const char* format, ...) { - if (LogEvents && _messages != NULL) { + if (LogEvents && _messages != nullptr) { va_list ap; va_start(ap, format); _messages->logv(thread, format, ap); @@ -286,7 +286,7 @@ inline void Events::log(Thread* thread, const char* format, ...) { } inline void Events::log_vm_operation(Thread* thread, const char* format, ...) { - if (LogEvents && _vm_operations != NULL) { + if (LogEvents && _vm_operations != nullptr) { va_list ap; va_start(ap, format); _vm_operations->logv(thread, format, ap); @@ -295,7 +295,7 @@ inline void Events::log_vm_operation(Thread* thread, const char* format, ...) { } inline void Events::log_exception(Thread* thread, const char* format, ...) { - if (LogEvents && _exceptions != NULL) { + if (LogEvents && _exceptions != nullptr) { va_list ap; va_start(ap, format); _exceptions->logv(thread, format, ap); @@ -304,13 +304,13 @@ inline void Events::log_exception(Thread* thread, const char* format, ...) { } inline void Events::log_exception(Thread* thread, Handle h_exception, const char* message, const char* file, int line) { - if (LogEvents && _exceptions != NULL) { + if (LogEvents && _exceptions != nullptr) { _exceptions->log(thread, h_exception, message, file, line); } } inline void Events::log_redefinition(Thread* thread, const char* format, ...) { - if (LogEvents && _redefinitions != NULL) { + if (LogEvents && _redefinitions != nullptr) { va_list ap; va_start(ap, format); _redefinitions->logv(thread, format, ap); @@ -319,13 +319,13 @@ inline void Events::log_redefinition(Thread* thread, const char* format, ...) { } inline void Events::log_class_unloading(Thread* thread, InstanceKlass* ik) { - if (LogEvents && _class_unloading != NULL) { + if (LogEvents && _class_unloading != nullptr) { _class_unloading->log(thread, ik); } } inline void Events::log_class_loading(Thread* thread, const char* format, ...) { - if (LogEvents && _class_loading != NULL) { + if (LogEvents && _class_loading != nullptr) { va_list ap; va_start(ap, format); _class_loading->logv(thread, format, ap); @@ -334,7 +334,7 @@ inline void Events::log_class_loading(Thread* thread, const char* format, ...) { } inline void Events::log_deopt_message(Thread* thread, const char* format, ...) { - if (LogEvents && _deopt_messages != NULL) { + if (LogEvents && _deopt_messages != nullptr) { va_list ap; va_start(ap, format); _deopt_messages->logv(thread, format, ap); @@ -343,7 +343,7 @@ inline void Events::log_deopt_message(Thread* thread, const char* format, ...) { } inline void Events::log_dll_message(Thread* thread, const char* format, ...) { - if (LogEvents && _dll_messages != NULL) { + if (LogEvents && _dll_messages != nullptr) { va_list ap; va_start(ap, format); _dll_messages->logv(thread, format, ap); @@ -359,7 +359,7 @@ inline void EventLogBase<T>::print_log_on(outputStream* out, int max) { bool _locked; MaybeLocker(Mutex* mutex) : _mutex(mutex), _proceed(false), _locked(false) { - if (Thread::current_or_null() == NULL) { + if (Thread::current_or_null() == nullptr) { _proceed = true; } else if (VMError::is_error_reported()) { if (_mutex->try_lock_without_rank_check()) { diff --git a/src/hotspot/share/utilities/exceptions.cpp b/src/hotspot/share/utilities/exceptions.cpp index 7aa331f32ae..bd39c582ca2 100644 --- a/src/hotspot/share/utilities/exceptions.cpp +++ b/src/hotspot/share/utilities/exceptions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -53,7 +53,7 @@ void check_ThreadShadow() { void ThreadShadow::set_pending_exception(oop exception, const char* file, int line) { - assert(exception != NULL && oopDesc::is_oop(exception), "invalid exception oop"); + assert(exception != nullptr && oopDesc::is_oop(exception), "invalid exception oop"); _pending_exception = exception; _exception_file = file; _exception_line = line; @@ -61,14 +61,14 @@ void ThreadShadow::set_pending_exception(oop exception, const char* file, int li void ThreadShadow::clear_pending_exception() { LogTarget(Debug, exceptions) lt; - if (_pending_exception != NULL && lt.is_enabled()) { + if (_pending_exception != nullptr && lt.is_enabled()) { ResourceMark rm; LogStream ls(lt); ls.print("Thread::clear_pending_exception: cleared exception:"); _pending_exception->print_on(&ls); } - _pending_exception = NULL; - _exception_file = NULL; + _pending_exception = nullptr; + _exception_file = nullptr; _exception_line = 0; } @@ -114,7 +114,7 @@ bool Exceptions::special_exception(JavaThread* thread, const char* file, int lin bool Exceptions::special_exception(JavaThread* thread, const char* file, int line, Symbol* h_name, const char* message) { // bootstrapping check if (!Universe::is_fully_initialized()) { - if (h_name == NULL) { + if (h_name == nullptr) { // at least an informative message. vm_exit_during_initialization("Exception", message); } else { @@ -135,14 +135,14 @@ bool Exceptions::special_exception(JavaThread* thread, const char* file, int lin // This method should only be called from generated code, // therefore the exception oop should be in the oopmap. void Exceptions::_throw_oop(JavaThread* thread, const char* file, int line, oop exception) { - assert(exception != NULL, "exception should not be NULL"); + assert(exception != nullptr, "exception should not be nullptr"); Handle h_exception(thread, exception); _throw(thread, file, line, h_exception); } void Exceptions::_throw(JavaThread* thread, const char* file, int line, Handle h_exception, const char* message) { ResourceMark rm(thread); - assert(h_exception() != NULL, "exception should not be NULL"); + assert(h_exception() != nullptr, "exception should not be nullptr"); // tracing (do this up front - so it works during boot strapping) // Note, the print_value_string() argument is not called unless logging is enabled! @@ -189,7 +189,7 @@ void Exceptions::_throw_msg(JavaThread* thread, const char* file, int line, Symb // Check for special boot-strapping/compiler-thread handling if (special_exception(thread, file, line, name, message)) return; // Create and throw exception - Handle h_cause(thread, NULL); + Handle h_cause(thread, nullptr); Handle h_exception = new_exception(thread, name, message, h_cause, h_loader, h_protection_domain); _throw(thread, file, line, h_exception, message); } @@ -209,15 +209,15 @@ void Exceptions::_throw_cause(JavaThread* thread, const char* file, int line, Sy if (special_exception(thread, file, line, h_cause)) return; // Create and throw exception Handle h_exception = new_exception(thread, name, h_cause, h_loader, h_protection_domain); - _throw(thread, file, line, h_exception, NULL); + _throw(thread, file, line, h_exception, nullptr); } void Exceptions::_throw_args(JavaThread* thread, const char* file, int line, Symbol* name, Symbol* signature, JavaCallArguments *args) { // Check for special boot-strapping/compiler-thread handling - if (special_exception(thread, file, line, name, NULL)) return; + if (special_exception(thread, file, line, name, nullptr)) return; // Create and throw exception - Handle h_loader(thread, NULL); - Handle h_prot(thread, NULL); + Handle h_loader(thread, nullptr); + Handle h_prot(thread, nullptr); Handle exception = new_exception(thread, name, signature, args, h_loader, h_prot); _throw(thread, file, line, exception); } @@ -226,13 +226,13 @@ void Exceptions::_throw_args(JavaThread* thread, const char* file, int line, Sym // Methods for default parameters. // NOTE: These must be here (and not in the header file) because of include circularities. void Exceptions::_throw_msg_cause(JavaThread* thread, const char* file, int line, Symbol* name, const char* message, Handle h_cause) { - _throw_msg_cause(thread, file, line, name, message, h_cause, Handle(thread, NULL), Handle(thread, NULL)); + _throw_msg_cause(thread, file, line, name, message, h_cause, Handle(thread, nullptr), Handle(thread, nullptr)); } void Exceptions::_throw_msg(JavaThread* thread, const char* file, int line, Symbol* name, const char* message) { - _throw_msg(thread, file, line, name, message, Handle(thread, NULL), Handle(thread, NULL)); + _throw_msg(thread, file, line, name, message, Handle(thread, nullptr), Handle(thread, nullptr)); } void Exceptions::_throw_cause(JavaThread* thread, const char* file, int line, Symbol* name, Handle h_cause) { - _throw_cause(thread, file, line, name, h_cause, Handle(thread, NULL), Handle(thread, NULL)); + _throw_cause(thread, file, line, name, h_cause, Handle(thread, nullptr), Handle(thread, nullptr)); } @@ -281,7 +281,7 @@ Handle Exceptions::new_exception(JavaThread* thread, Symbol* name, Klass* klass = SystemDictionary::resolve_or_fail(name, h_loader, h_protection_domain, true, thread); if (!thread->has_pending_exception()) { - assert(klass != NULL, "klass must exist"); + assert(klass != nullptr, "klass must exist"); h_exception = JavaCalls::construct_new_instance(InstanceKlass::cast(klass), signature, args, @@ -335,7 +335,7 @@ Handle Exceptions::new_exception(JavaThread* thread, Symbol* name, Handle h_loader, Handle h_protection_domain, ExceptionMsgToUtf8Mode to_utf8_safe) { JavaCallArguments args; - Symbol* signature = NULL; + Symbol* signature = nullptr; if (h_cause.is_null()) { signature = vmSymbols::void_method_signature(); } else { @@ -352,8 +352,8 @@ Handle Exceptions::new_exception(JavaThread* thread, Symbol* name, Handle h_loader, Handle h_protection_domain, ExceptionMsgToUtf8Mode to_utf8_safe) { JavaCallArguments args; - Symbol* signature = NULL; - if (message == NULL) { + Symbol* signature = nullptr; + if (message == nullptr) { signature = vmSymbols::void_method_signature(); } else { // There should be no pending exception. The caller is responsible for not calling @@ -401,9 +401,9 @@ Handle Exceptions::new_exception(JavaThread* thread, Symbol* name, const char* message, ExceptionMsgToUtf8Mode to_utf8_safe) { - Handle h_loader(thread, NULL); - Handle h_prot(thread, NULL); - Handle h_cause(thread, NULL); + Handle h_loader(thread, nullptr); + Handle h_prot(thread, nullptr); + Handle h_cause(thread, nullptr); return Exceptions::new_exception(thread, name, message, h_cause, h_loader, h_prot, to_utf8_safe); } @@ -420,7 +420,7 @@ void Exceptions::wrap_dynamic_exception(bool is_indy, JavaThread* THREAD) { bool log_condy = log_is_enabled(Debug, methodhandles, condy) && !is_indy; LogStreamHandle(Debug, methodhandles, indy) lsh_indy; LogStreamHandle(Debug, methodhandles, condy) lsh_condy; - LogStream* ls = NULL; + LogStream* ls = nullptr; if (log_indy) { ls = &lsh_indy; } else if (log_condy) { @@ -433,7 +433,7 @@ void Exceptions::wrap_dynamic_exception(bool is_indy, JavaThread* THREAD) { if (exception->is_a(vmClasses::Error_klass())) { // Pass through an Error, including BootstrapMethodError, any other form // of linkage error, or say OutOfMemoryError - if (ls != NULL) { + if (ls != nullptr) { ls->print_cr("bootstrap method invocation wraps BSME around " PTR_FORMAT, p2i(exception)); exception->print_on(ls); } @@ -441,7 +441,7 @@ void Exceptions::wrap_dynamic_exception(bool is_indy, JavaThread* THREAD) { } // Otherwise wrap the exception in a BootstrapMethodError - if (ls != NULL) { + if (ls != nullptr) { ls->print_cr("%s throws BSME for " PTR_FORMAT, is_indy ? "invokedynamic" : "dynamic constant", p2i(exception)); exception->print_on(ls); } @@ -532,11 +532,11 @@ ExceptionMark::~ExceptionMark() { // caller frees value_string if necessary void Exceptions::debug_check_abort(const char *value_string, const char* message) { - if (AbortVMOnException != NULL && value_string != NULL && + if (AbortVMOnException != nullptr && value_string != nullptr && strstr(value_string, AbortVMOnException)) { - if (AbortVMOnExceptionMessage == NULL || (message != NULL && + if (AbortVMOnExceptionMessage == nullptr || (message != nullptr && strstr(message, AbortVMOnExceptionMessage))) { - if (message == NULL) { + if (message == nullptr) { fatal("Saw %s, aborting", value_string); } else { fatal("Saw %s: %s, aborting", value_string, message); @@ -546,16 +546,16 @@ void Exceptions::debug_check_abort(const char *value_string, const char* message } void Exceptions::debug_check_abort(Handle exception, const char* message) { - if (AbortVMOnException != NULL) { + if (AbortVMOnException != nullptr) { debug_check_abort_helper(exception, message); } } void Exceptions::debug_check_abort_helper(Handle exception, const char* message) { ResourceMark rm; - if (message == NULL && exception->is_a(vmClasses::Throwable_klass())) { + if (message == nullptr && exception->is_a(vmClasses::Throwable_klass())) { oop msg = java_lang_Throwable::message(exception()); - if (msg != NULL) { + if (msg != nullptr) { message = java_lang_String::as_utf8_string(msg); } } @@ -566,7 +566,7 @@ void Exceptions::debug_check_abort_helper(Handle exception, const char* message) void Exceptions::log_exception(Handle exception, const char* message) { ResourceMark rm; Symbol* detail_message = java_lang_Throwable::detail_message(exception()); - if (detail_message != NULL) { + if (detail_message != nullptr) { log_info(exceptions)("Exception <%s: %s>\n thrown in %s", exception->print_value_string(), detail_message->as_C_string(), diff --git a/src/hotspot/share/utilities/exceptions.hpp b/src/hotspot/share/utilities/exceptions.hpp index 703f07b2ec1..a6921a19a65 100644 --- a/src/hotspot/share/utilities/exceptions.hpp +++ b/src/hotspot/share/utilities/exceptions.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -78,7 +78,7 @@ class ThreadShadow: public CHeapObj<mtThread> { public: oop pending_exception() const { return _pending_exception; } - bool has_pending_exception() const { return _pending_exception != NULL; } + bool has_pending_exception() const { return _pending_exception != nullptr; } const char* exception_file() const { return _exception_file; } int exception_line() const { return _exception_line; } @@ -94,8 +94,8 @@ class ThreadShadow: public CHeapObj<mtThread> { // use CLEAR_PENDING_NONASYNC_EXCEPTION to clear probable nonasync exception. void clear_pending_nonasync_exception(); - ThreadShadow() : _pending_exception(NULL), - _exception_file(NULL), _exception_line(0) {} + ThreadShadow() : _pending_exception(nullptr), + _exception_file(nullptr), _exception_line(0) {} }; @@ -124,7 +124,7 @@ class Exceptions { } ExceptionMsgToUtf8Mode; // Throw exceptions: w/o message, w/ message & with formatted message. static void _throw_oop(JavaThread* thread, const char* file, int line, oop exception); - static void _throw(JavaThread* thread, const char* file, int line, Handle exception, const char* msg = NULL); + static void _throw(JavaThread* thread, const char* file, int line, Handle exception, const char* msg = nullptr); static void _throw_msg(JavaThread* thread, const char* file, int line, Symbol* name, const char* message); static void _throw_msg(JavaThread* thread, const char* file, int line, Symbol* name, const char* message, @@ -184,9 +184,9 @@ class Exceptions { static void print_exception_counts_on_error(outputStream* st); // for AbortVMOnException flag - static void debug_check_abort(Handle exception, const char* message = NULL); - static void debug_check_abort_helper(Handle exception, const char* message = NULL); - static void debug_check_abort(const char *value_string, const char* message = NULL); + static void debug_check_abort(Handle exception, const char* message = nullptr); + static void debug_check_abort_helper(Handle exception, const char* message = nullptr); + static void debug_check_abort(const char *value_string, const char* message = nullptr); // for logging exceptions static void log_exception(Handle exception, const char* message); @@ -225,7 +225,7 @@ class Exceptions { #define CHECK_(result) THREAD); if (HAS_PENDING_EXCEPTION) return result; (void)(0 #define CHECK_0 CHECK_(0) #define CHECK_NH CHECK_(Handle()) -#define CHECK_NULL CHECK_(NULL) +#define CHECK_NULL CHECK_(nullptr) #define CHECK_false CHECK_(false) #define CHECK_JNI_ERR CHECK_(JNI_ERR) @@ -234,7 +234,7 @@ class Exceptions { #define CHECK_AND_CLEAR_(result) THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_EXCEPTION; return result; } (void)(0 #define CHECK_AND_CLEAR_0 CHECK_AND_CLEAR_(0) #define CHECK_AND_CLEAR_NH CHECK_AND_CLEAR_(Handle()) -#define CHECK_AND_CLEAR_NULL CHECK_AND_CLEAR_(NULL) +#define CHECK_AND_CLEAR_NULL CHECK_AND_CLEAR_(nullptr) #define CHECK_AND_CLEAR_false CHECK_AND_CLEAR_(false) // CAUTION: These macros clears all exceptions except probable async exceptions j.l.InternalError. @@ -244,7 +244,7 @@ class Exceptions { #define CHECK_AND_CLEAR_NONASYNC_(result) THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_NONASYNC_EXCEPTION; return result; } (void)(0 #define CHECK_AND_CLEAR_NONASYNC_0 CHECK_AND_CLEAR_NONASYNC_(0) #define CHECK_AND_CLEAR_NONASYNC_NH CHECK_AND_CLEAR_NONASYNC_(Handle()) -#define CHECK_AND_CLEAR_NONASYNC_NULL CHECK_AND_CLEAR_NONASYNC_(NULL) +#define CHECK_AND_CLEAR_NONASYNC_NULL CHECK_AND_CLEAR_NONASYNC_(nullptr) #define CHECK_AND_CLEAR_NONASYNC_false CHECK_AND_CLEAR_NONASYNC_(false) // The THROW... macros should be used to throw an exception. They require a THREAD variable to be @@ -260,7 +260,7 @@ class Exceptions { { Exceptions::_throw(THREAD_AND_LOCATION, e); return; } #define THROW(name) \ - { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, NULL); return; } + { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, nullptr); return; } #define THROW_MSG(name, message) \ { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, message); return; } @@ -281,7 +281,7 @@ class Exceptions { { Exceptions::_throw(THREAD_AND_LOCATION, e); return result; } #define THROW_(name, result) \ - { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, NULL); return result; } + { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, nullptr); return result; } #define THROW_MSG_(name, message, result) \ { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, message); return result; } @@ -306,10 +306,10 @@ class Exceptions { #define THROW_WRAPPED_0(name, oop_to_wrap) THROW_WRAPPED_(name, oop_to_wrap, 0) #define THROW_ARG_0(name, signature, arg) THROW_ARG_(name, signature, arg, 0) #define THROW_MSG_CAUSE_0(name, message, cause) THROW_MSG_CAUSE_(name, message, cause, 0) -#define THROW_MSG_CAUSE_NULL(name, message, cause) THROW_MSG_CAUSE_(name, message, cause, NULL) +#define THROW_MSG_CAUSE_NULL(name, message, cause) THROW_MSG_CAUSE_(name, message, cause, nullptr) -#define THROW_NULL(name) THROW_(name, NULL) -#define THROW_MSG_NULL(name, message) THROW_MSG_(name, message, NULL) +#define THROW_NULL(name) THROW_(name, nullptr) +#define THROW_MSG_NULL(name, message) THROW_MSG_(name, message, nullptr) // The CATCH macro checks that no exception has been thrown by a function; it is used at // call sites about which is statically known that the callee cannot throw an exception diff --git a/src/hotspot/share/utilities/filterQueue.hpp b/src/hotspot/share/utilities/filterQueue.hpp index 8470d4b8f02..0564af9e835 100644 --- a/src/hotspot/share/utilities/filterQueue.hpp +++ b/src/hotspot/share/utilities/filterQueue.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2023, 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 @@ -37,7 +37,7 @@ class FilterQueue { private: class Node : public CHeapObj<mtInternal> { public: - Node(const E& e): _next(NULL), _data(e) { } + Node(const E& e): _next(nullptr), _data(e) { } Node* _next; E _data; }; @@ -50,10 +50,10 @@ class FilterQueue { static bool match_all(E d) { return true; } public: - FilterQueue() : _first(NULL) { } + FilterQueue() : _first(nullptr) { } bool is_empty() { - return load_first() == NULL; + return load_first() == nullptr; } // Adds an item to the queue in a MT safe way, re-entrant. diff --git a/src/hotspot/share/utilities/filterQueue.inline.hpp b/src/hotspot/share/utilities/filterQueue.inline.hpp index e5e93c78834..7bb14ca2b03 100644 --- a/src/hotspot/share/utilities/filterQueue.inline.hpp +++ b/src/hotspot/share/utilities/filterQueue.inline.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2023, 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 @@ -49,7 +49,7 @@ template <class E> template <typename MATCH_FUNC> bool FilterQueue<E>::contains(MATCH_FUNC& match_func) { Node* cur = load_first(); - if (cur == NULL) { + if (cur == nullptr) { return false; } do { @@ -57,7 +57,7 @@ bool FilterQueue<E>::contains(MATCH_FUNC& match_func) { return true; } cur = cur->_next; - } while (cur != NULL); + } while (cur != nullptr); return false; } @@ -67,12 +67,12 @@ template <typename MATCH_FUNC> E FilterQueue<E>::pop(MATCH_FUNC& match_func) { Node* first = load_first(); Node* cur = first; - Node* prev = NULL; - Node* match = NULL; - Node* match_prev = NULL; + Node* prev = nullptr; + Node* match = nullptr; + Node* match_prev = nullptr; - if (cur == NULL) { - return (E)NULL; + if (cur == nullptr) { + return (E)nullptr; } SpinYield yield(SpinYield::default_spin_limit * 10); // Very unlikely with multiple failed CAS. do { @@ -83,13 +83,13 @@ E FilterQueue<E>::pop(MATCH_FUNC& match_func) { } prev = cur; cur = cur->_next; - } while (cur != NULL); + } while (cur != nullptr); - if (match == NULL) { - return (E)NULL; + if (match == nullptr) { + return (E)nullptr; } - if (match_prev == NULL) { + if (match_prev == nullptr) { // Working on first if (Atomic::cmpxchg(&_first, match, match->_next) == match) { E ret = match->_data; @@ -100,9 +100,9 @@ E FilterQueue<E>::pop(MATCH_FUNC& match_func) { // Failed, we need to restart to know the Node prior to the match. first = load_first(); cur = first; - prev = NULL; - match = NULL; - match_prev = NULL; + prev = nullptr; + match = nullptr; + match_prev = nullptr; } else { match_prev->_next = match->_next; E ret = match->_data; @@ -118,20 +118,20 @@ template <typename MATCH_FUNC> E FilterQueue<E>::peek(MATCH_FUNC& match_func) { Node* first = load_first(); Node* cur = first; - Node* match = NULL; + Node* match = nullptr; - if (cur == NULL) { - return (E)NULL; + if (cur == nullptr) { + return (E)nullptr; } do { if (match_func(cur->_data)) { match = cur; } cur = cur->_next; - } while (cur != NULL); + } while (cur != nullptr); - if (match == NULL) { - return (E)NULL; + if (match == nullptr) { + return (E)nullptr; } return (E)match->_data; diff --git a/src/hotspot/share/utilities/globalDefinitions.cpp b/src/hotspot/share/utilities/globalDefinitions.cpp index a0df0a503dd..0c8a28a6111 100644 --- a/src/hotspot/share/utilities/globalDefinitions.cpp +++ b/src/hotspot/share/utilities/globalDefinitions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -218,7 +218,7 @@ char type2char_tab[T_CONFLICT+1] = { // Map BasicType to Java type name const char* type2name_tab[T_CONFLICT+1] = { - NULL, NULL, NULL, NULL, + nullptr, nullptr, nullptr, nullptr, "boolean", "char", "float", @@ -252,7 +252,7 @@ const char* type2name(BasicType t) { BasicType name2type(const char* name) { for (int i = T_BOOLEAN; i <= T_VOID; i++) { BasicType t = (BasicType)i; - if (type2name_tab[t] != NULL && 0 == strcmp(type2name_tab[t], name)) + if (type2name_tab[t] != nullptr && 0 == strcmp(type2name_tab[t], name)) return t; } return T_ILLEGAL; diff --git a/src/hotspot/share/utilities/growableArray.hpp b/src/hotspot/share/utilities/growableArray.hpp index 8895ebbc620..68374c516dd 100644 --- a/src/hotspot/share/utilities/growableArray.hpp +++ b/src/hotspot/share/utilities/growableArray.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -505,7 +505,7 @@ void GrowableArrayWithAllocator<E, Derived>::expand_to(int new_capacity) { for ( ; i < this->_len; i++) ::new ((void*)&newData[i]) E(this->_data[i]); for ( ; i < this->_capacity; i++) ::new ((void*)&newData[i]) E(); for (i = 0; i < old_capacity; i++) this->_data[i].~E(); - if (this->_data != NULL) { + if (this->_data != nullptr) { static_cast<Derived*>(this)->deallocate(this->_data); } this->_data = newData; @@ -785,7 +785,7 @@ class GrowableArrayCHeap : public GrowableArrayWithAllocator<E, GrowableArrayCHe static E* allocate(int max, MEMFLAGS flags) { if (max == 0) { - return NULL; + return nullptr; } return (E*)GrowableArrayCHeapAllocator::allocate(max, sizeof(E), flags); @@ -842,7 +842,7 @@ class GrowableArrayIterator : public StackObj { } public: - GrowableArrayIterator() : _array(NULL), _position(0) { } + GrowableArrayIterator() : _array(nullptr), _position(0) { } GrowableArrayIterator<E>& operator++() { ++_position; return *this; } E operator*() { return _array->at(_position); } diff --git a/src/hotspot/share/utilities/hashtable.cpp b/src/hotspot/share/utilities/hashtable.cpp index 0630aa276c4..6b0a081c9e7 100644 --- a/src/hotspot/share/utilities/hashtable.cpp +++ b/src/hotspot/share/utilities/hashtable.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, 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 @@ -67,14 +67,14 @@ template <MEMFLAGS F> inline void BasicHashtable<F>::free_entry(BasicHashtableEn template <MEMFLAGS F> void BasicHashtable<F>::free_buckets() { FREE_C_HEAP_ARRAY(HashtableBucket, _buckets); - _buckets = NULL; + _buckets = nullptr; } // Default overload, for types that are uninteresting. template<typename T> static size_t literal_size(T) { return 0; } static size_t literal_size(oop obj) { - if (obj == NULL) { + if (obj == nullptr) { return 0; } @@ -121,7 +121,7 @@ template <MEMFLAGS F> bool BasicHashtable<F>::resize(int new_size) { // Allocate new buckets HashtableBucket<F>* buckets_new = NEW_C_HEAP_ARRAY2_RETURN_NULL(HashtableBucket<F>, new_size, F, CURRENT_PC); - if (buckets_new == NULL) { + if (buckets_new == nullptr) { return false; } @@ -136,7 +136,7 @@ template <MEMFLAGS F> bool BasicHashtable<F>::resize(int new_size) { // Move entries from the old table to a new table for (int index_old = 0; index_old < table_size_old; index_old++) { - for (BasicHashtableEntry<F>* p = _buckets[index_old].get_entry(); p != NULL; ) { + for (BasicHashtableEntry<F>* p = _buckets[index_old].get_entry(); p != nullptr; ) { BasicHashtableEntry<F>* next = p->next(); int index_new = hash_to_index(p->hash()); @@ -175,9 +175,9 @@ template <class T, MEMFLAGS F> TableStatistics Hashtable<T, F>::statistics_calcu for (int i = 0; i < this->table_size(); ++i) { int count = 0; for (HashtableEntry<T, F>* e = this->bucket(i); - e != NULL; e = e->next()) { + e != nullptr; e = e->next()) { count++; - T l = (literal_load_barrier != NULL) ? literal_load_barrier(e) : e->literal(); + T l = (literal_load_barrier != nullptr) ? literal_load_barrier(e) : e->literal(); literal_bytes += literal_size(l); } summary.add((double)count); @@ -202,7 +202,7 @@ template <class T, MEMFLAGS F> void Hashtable<T, F>::print() { for (int i = 0; i < BasicHashtable<F>::table_size(); i++) { HashtableEntry<T, F>* entry = bucket(i); - while(entry != NULL) { + while(entry != nullptr) { tty->print("%d : ", i); print_literal(entry->literal()); tty->cr(); @@ -218,7 +218,7 @@ template <class T> void BasicHashtable<F>::verify_table(const char* table_name) int max_bucket_number = 0; for (int index = 0; index < table_size(); index++) { int bucket_count = 0; - for (T* probe = (T*)bucket(index); probe != NULL; probe = probe->next()) { + for (T* probe = (T*)bucket(index); probe != nullptr; probe = probe->next()) { probe->verify(); bucket_count++; } @@ -237,7 +237,7 @@ template <class T> void BasicHashtable<F>::verify_table(const char* table_name) if (_number_of_entries > 0 && log_is_enabled(Debug, hashtables)) { for (int index = 0; index < table_size(); index++) { int bucket_count = 0; - for (T* probe = (T*)bucket(index); probe != NULL; probe = probe->next()) { + for (T* probe = (T*)bucket(index); probe != nullptr; probe = probe->next()) { log_debug(hashtables)("bucket %d hash " INTPTR_FORMAT, index, (intptr_t)probe->hash()); bucket_count++; } diff --git a/src/hotspot/share/utilities/hashtable.hpp b/src/hotspot/share/utilities/hashtable.hpp index a2c1a45b831..54d4162cd13 100644 --- a/src/hotspot/share/utilities/hashtable.hpp +++ b/src/hotspot/share/utilities/hashtable.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, 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 @@ -97,7 +97,7 @@ private: public: // Accessing - void clear() { _entry = NULL; } + void clear() { _entry = nullptr; } // The following methods use order access methods to avoid race // conditions in multiprocessor systems. @@ -154,7 +154,7 @@ protected: // Used when moving the entry to another table or deleting entry. // Clean up links. void unlink_entry(BasicHashtableEntry<F>* entry) { - entry->set_next(NULL); + entry->set_next(nullptr); --_number_of_entries; } @@ -202,8 +202,8 @@ public: return this->hash_to_index(compute_hash(name)); } - TableStatistics statistics_calculate(T (*literal_load_barrier)(HashtableEntry<T, F>*) = NULL); - void print_table_statistics(outputStream* st, const char *table_name, T (*literal_load_barrier)(HashtableEntry<T, F>*) = NULL); + TableStatistics statistics_calculate(T (*literal_load_barrier)(HashtableEntry<T, F>*) = nullptr); + void print_table_statistics(outputStream* st, const char *table_name, T (*literal_load_barrier)(HashtableEntry<T, F>*) = nullptr); protected: diff --git a/src/hotspot/share/utilities/hashtable.inline.hpp b/src/hotspot/share/utilities/hashtable.inline.hpp index 81650625c75..a4ae469f7fd 100644 --- a/src/hotspot/share/utilities/hashtable.inline.hpp +++ b/src/hotspot/share/utilities/hashtable.inline.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, 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 @@ -97,7 +97,7 @@ template <MEMFLAGS F> inline BasicHashtableEntry<F>* HashtableBucket<F>::get_ent template <MEMFLAGS F> inline void BasicHashtable<F>::set_entry(int index, BasicHashtableEntry<F>* entry) { _buckets[index].set_entry(entry); - if (entry != NULL) { + if (entry != nullptr) { JFR_ONLY(_stats_rate.add();) } else { JFR_ONLY(_stats_rate.remove();) diff --git a/src/hotspot/share/utilities/json.cpp b/src/hotspot/share/utilities/json.cpp index 9176664a229..fc0ac36bbb1 100644 --- a/src/hotspot/share/utilities/json.cpp +++ b/src/hotspot/share/utilities/json.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2023, 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 @@ -38,7 +38,7 @@ const char* strchrnul_(const char *s, int c) { const char* tmp = strchr(s, c); - return tmp == NULL ? s + strlen(s) : tmp; + return tmp == nullptr ? s + strlen(s) : tmp; } JSON::JSON(const char* text, bool silent, outputStream* st) @@ -48,10 +48,10 @@ JSON::JSON(const char* text, bool silent, outputStream* st) } void JSON::parse() { - assert(start != NULL, "Need something to parse"); - if (start == NULL) { + assert(start != nullptr, "Need something to parse"); + if (start == nullptr) { _valid = false; - error(INTERNAL_ERROR, "JSON parser was called with a string that was NULL."); + error(INTERNAL_ERROR, "JSON parser was called with a string that was null."); } else { _valid = parse_json_value(); } @@ -158,7 +158,7 @@ bool JSON::parse_json_object() { return false; } - if (!callback(JSON_OBJECT_BEGIN, NULL, level++)) { + if (!callback(JSON_OBJECT_BEGIN, nullptr, level++)) { return false; } @@ -207,7 +207,7 @@ bool JSON::parse_json_object() { } assert(c == '}', "array parsing ended without object end token ('}')"); - return callback(JSON_OBJECT_END, NULL, --level); + return callback(JSON_OBJECT_END, nullptr, --level); } // Should only be called when we actually have the start of an array @@ -222,7 +222,7 @@ bool JSON::parse_json_array() { return false; } - if (!callback(JSON_ARRAY_BEGIN, NULL, level++)) { + if (!callback(JSON_ARRAY_BEGIN, nullptr, level++)) { return false; } @@ -258,7 +258,7 @@ bool JSON::parse_json_array() { } assert(c == ']', "array parsing ended without array end token (']')"); - return callback(JSON_ARRAY_END, NULL, --level); + return callback(JSON_ARRAY_END, nullptr, --level); } bool JSON::parse_json_string(bool key) { @@ -271,7 +271,7 @@ bool JSON::parse_json_string(bool key) { } end = strchr(pos, '"'); // TODO: escapes - if (end == NULL) { + if (end == nullptr) { error(SYNTAX_ERROR, "String started here never ended. Expected \'\"\' before EOS."); return false; } @@ -384,7 +384,7 @@ bool JSON::parse_json_symbol(const char* name, JSON_TYPE symbol) { mark_pos(); return false; } - return callback(symbol, NULL, level); + return callback(symbol, nullptr, level); } void JSON::mark_pos() { @@ -476,7 +476,7 @@ bool JSON::expect_string(const char* expected_string, const char* error_msg, JSO u_char c, expected_char; size_t len; - assert(expected_string != NULL, "need non-null string"); + assert(expected_string != nullptr, "need non-null string"); len = strlen(expected_string); assert(len > 0, "need non-empty string"); diff --git a/src/hotspot/share/utilities/linkedlist.hpp b/src/hotspot/share/utilities/linkedlist.hpp index 6dc94fc6fbd..eeb8c6df44f 100644 --- a/src/hotspot/share/utilities/linkedlist.hpp +++ b/src/hotspot/share/utilities/linkedlist.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, 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 @@ -60,10 +60,10 @@ template <class E> class LinkedListNode : public AnyObj { } protected: - LinkedListNode() : _next(NULL) { } + LinkedListNode() : _next(nullptr) { } public: - LinkedListNode(const E& e): _data(e), _next(NULL) { } + LinkedListNode(const E& e): _data(e), _next(nullptr) { } inline void set_next(LinkedListNode<E>* node) { _next = node; } inline LinkedListNode<E> * next() const { return _next; } @@ -72,7 +72,7 @@ template <class E> class LinkedListNode : public AnyObj { const E* peek() const { return &_data; } bool equals(const E& t) const { - return equal<E>(_data, t, NULL); + return equal<E>(_data, t, nullptr); } }; @@ -85,17 +85,17 @@ template <class E> class LinkedList : public AnyObj { NONCOPYABLE(LinkedList<E>); public: - LinkedList() : _head(NULL) { } + LinkedList() : _head(nullptr) { } virtual ~LinkedList() {} inline void set_head(LinkedListNode<E>* h) { _head = h; } inline LinkedListNode<E>* head() const { return _head; } - inline bool is_empty() const { return head() == NULL; } + inline bool is_empty() const { return head() == nullptr; } inline size_t size() const { LinkedListNode<E>* p; size_t count = 0; - for (p = head(); p != NULL; count++, p = p->next()); + for (p = head(); p != nullptr; count++, p = p->next()); return count; } @@ -126,7 +126,7 @@ template <class E> class LinkedList : public AnyObj { LinkedListNode<E>* unlink_head() { LinkedListNode<E>* h = this->head(); - if (h != NULL) { + if (h != nullptr) { this->set_head(h->next()); } return h; @@ -143,7 +143,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, protected: Arena* _arena; public: - LinkedListImpl() : _arena(NULL) { } + LinkedListImpl() : _arena(nullptr) { } LinkedListImpl(Arena* a) : _arena(a) { } virtual ~LinkedListImpl() { @@ -152,8 +152,8 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, virtual void clear() { LinkedListNode<E>* p = this->head(); - this->set_head(NULL); - while (p != NULL) { + this->set_head(nullptr); + while (p != nullptr) { LinkedListNode<E>* to_delete = p; p = p->next(); delete_node(to_delete); @@ -163,7 +163,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, // Add an entry to the linked list virtual LinkedListNode<E>* add(const E& e) { LinkedListNode<E>* node = this->new_node(e); - if (node != NULL) { + if (node != nullptr) { this->add(node); } @@ -171,7 +171,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, } virtual void add(LinkedListNode<E>* node) { - assert(node != NULL, "NULL pointer"); + assert(node != nullptr, "nullptr pointer"); node->set_next(this->head()); this->set_head(node); } @@ -181,22 +181,22 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, virtual void move(LinkedList<E>* list) { assert(list->storage_type() == this->storage_type(), "Different storage type"); LinkedListNode<E>* node = this->head(); - while (node != NULL && node->next() != NULL) { + while (node != nullptr && node->next() != nullptr) { node = node->next(); } - if (node == NULL) { + if (node == nullptr) { this->set_head(list->head()); } else { node->set_next(list->head()); } // All entries are moved - list->set_head(NULL); + list->set_head(nullptr); } virtual bool add(const LinkedList<E>* list) { LinkedListNode<E>* node = list->head(); - while (node != NULL) { - if (this->add(*node->peek()) == NULL) { + while (node != nullptr) { + if (this->add(*node->peek()) == nullptr) { return false; } node = node->next(); @@ -207,7 +207,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, virtual LinkedListNode<E>* find_node(const E& e) { LinkedListNode<E>* p = this->head(); - while (p != NULL && !p->equals(e)) { + while (p != nullptr && !p->equals(e)) { p = p->next(); } return p; @@ -215,23 +215,23 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, E* find(const E& e) { LinkedListNode<E>* node = find_node(e); - return (node == NULL) ? NULL : node->data(); + return (node == nullptr) ? nullptr : node->data(); } // Add an entry in front of the reference entry LinkedListNode<E>* insert_before(const E& e, LinkedListNode<E>* ref_node) { LinkedListNode<E>* node = this->new_node(e); - if (node == NULL) return NULL; + if (node == nullptr) return nullptr; if (ref_node == this->head()) { node->set_next(ref_node); this->set_head(node); } else { LinkedListNode<E>* p = this->head(); - while (p != NULL && p->next() != ref_node) { + while (p != nullptr && p->next() != ref_node) { p = p->next(); } - assert(p != NULL, "ref_node not in the list"); + assert(p != nullptr, "ref_node not in the list"); node->set_next(ref_node); p->set_next(node); } @@ -241,7 +241,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, // Add an entry behind the reference entry LinkedListNode<E>* insert_after(const E& e, LinkedListNode<E>* ref_node) { LinkedListNode<E>* node = this->new_node(e); - if (node == NULL) return NULL; + if (node == nullptr) return nullptr; node->set_next(ref_node->next()); ref_node->set_next(node); return node; @@ -251,9 +251,9 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, // Return true if the entry is successfully removed virtual bool remove(const E& e) { LinkedListNode<E>* tmp = this->head(); - LinkedListNode<E>* prev = NULL; + LinkedListNode<E>* prev = nullptr; - while (tmp != NULL) { + while (tmp != nullptr) { if (tmp->equals(e)) { return remove_after(prev); } @@ -266,16 +266,16 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, // Remove the node after the reference entry virtual bool remove_after(LinkedListNode<E>* prev) { LinkedListNode<E>* to_delete; - if (prev == NULL) { + if (prev == nullptr) { to_delete = this->unlink_head(); } else { to_delete = prev->next(); - if (to_delete != NULL) { + if (to_delete != nullptr) { prev->set_next(to_delete->next()); } } - if (to_delete != NULL) { + if (to_delete != nullptr) { delete_node(to_delete); return true; } @@ -289,10 +289,10 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, delete_node(node); return true; } - while (p != NULL && p->next() != node) { + while (p != nullptr && p->next() != node) { p = p->next(); } - if (p != NULL) { + if (p != nullptr) { p->set_next(node->next()); delete_node(node); return true; @@ -302,20 +302,20 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, } virtual bool remove_before(LinkedListNode<E>* ref) { - assert(ref != NULL, "NULL pointer"); + assert(ref != nullptr, "null pointer"); LinkedListNode<E>* p = this->head(); - LinkedListNode<E>* to_delete = NULL; // to be deleted - LinkedListNode<E>* prev = NULL; // node before the node to be deleted - while (p != NULL && p != ref) { + LinkedListNode<E>* to_delete = nullptr; // to be deleted + LinkedListNode<E>* prev = nullptr; // node before the node to be deleted + while (p != nullptr && p != ref) { prev = to_delete; to_delete = p; p = p->next(); } - if (p == NULL || to_delete == NULL) return false; + if (p == nullptr || to_delete == nullptr) return false; assert(to_delete->next() == ref, "Wrong node to delete"); - assert(prev == NULL || prev->next() == to_delete, + assert(prev == nullptr || prev->next() == to_delete, "Sanity check"); - if (prev == NULL) { + if (prev == nullptr) { assert(to_delete == this->head(), "Must be head"); this->set_head(to_delete->next()); } else { @@ -331,7 +331,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, LinkedListNode<E>* new_node(const E& e) const { switch(T) { case AnyObj::ARENA: { - assert(_arena != NULL, "Arena not set"); + assert(_arena != nullptr, "Arena not set"); return new(_arena) LinkedListNode<E>(e); } case AnyObj::RESOURCE_AREA: @@ -350,7 +350,7 @@ template <class E, AnyObj::allocation_type T = AnyObj::C_HEAP, default: ShouldNotReachHere(); } - return NULL; + return nullptr; } // Delete linked list node object @@ -378,19 +378,19 @@ template <class E, int (*FUNC)(const E&, const E&), virtual void move(LinkedList<E>* list) { assert(list->storage_type() == this->storage_type(), "Different storage type"); LinkedListNode<E>* node; - while ((node = list->unlink_head()) != NULL) { + while ((node = list->unlink_head()) != nullptr) { this->add(node); } assert(list->is_empty(), "All entries are moved"); } virtual void add(LinkedListNode<E>* node) { - assert(node != NULL, "NULL pointer"); + assert(node != nullptr, "nullptr pointer"); LinkedListNode<E>* tmp = this->head(); - LinkedListNode<E>* prev = NULL; + LinkedListNode<E>* prev = nullptr; int cmp_val; - while (tmp != NULL) { + while (tmp != nullptr) { cmp_val = FUNC(*tmp->peek(), *node->peek()); if (cmp_val >= 0) { break; @@ -399,7 +399,7 @@ template <class E, int (*FUNC)(const E&, const E&), tmp = tmp->next(); } - if (prev != NULL) { + if (prev != nullptr) { node->set_next(prev->next()); prev->set_next(node); } else { @@ -415,16 +415,16 @@ template <class E, int (*FUNC)(const E&, const E&), virtual LinkedListNode<E>* find_node(const E& e) { LinkedListNode<E>* p = this->head(); - while (p != NULL) { + while (p != nullptr) { int comp_val = FUNC(*p->peek(), e); if (comp_val == 0) { return p; } else if (comp_val > 0) { - return NULL; + return nullptr; } p = p->next(); } - return NULL; + return nullptr; } }; @@ -436,17 +436,17 @@ template <class E> class LinkedListIterator : public StackObj { public: LinkedListIterator(LinkedListNode<E>* head) : _p(head) {} - bool is_empty() const { return _p == NULL; } + bool is_empty() const { return _p == nullptr; } E* next() { - if (_p == NULL) return NULL; + if (_p == nullptr) return nullptr; E* e = _p->data(); _p = _p->next(); return e; } const E* next() const { - if (_p == NULL) return NULL; + if (_p == nullptr) return nullptr; const E* e = _p->peek(); _p = _p->next(); return e; diff --git a/src/hotspot/share/utilities/lockFreeStack.hpp b/src/hotspot/share/utilities/lockFreeStack.hpp index ed916b27915..2ff86eca7af 100644 --- a/src/hotspot/share/utilities/lockFreeStack.hpp +++ b/src/hotspot/share/utilities/lockFreeStack.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2023, 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 @@ -72,11 +72,11 @@ class LockFreeStack { NONCOPYABLE(LockFreeStack); public: - LockFreeStack() : _top(NULL) {} + LockFreeStack() : _top(nullptr) {} ~LockFreeStack() { assert(empty(), "stack not empty"); } // Atomically removes the top object from this stack and returns a - // pointer to that object, or NULL if this stack is empty. Acts as a + // pointer to that object, or nullptr if this stack is empty. Acts as a // full memory barrier. Subject to ABA behavior; callers must ensure // usage is safe. T* pop() { @@ -84,43 +84,43 @@ public: T* old; do { old = result; - T* new_top = NULL; - if (result != NULL) { + T* new_top = nullptr; + if (result != nullptr) { new_top = next(*result); } // CAS even on empty pop, for consistent membar behavior. result = Atomic::cmpxchg(&_top, result, new_top); } while (result != old); - if (result != NULL) { - set_next(*result, NULL); + if (result != nullptr) { + set_next(*result, nullptr); } return result; } - // Atomically exchange the list of elements with NULL, returning the old + // Atomically exchange the list of elements with nullptr, returning the old // list of elements. Acts as a full memory barrier. // postcondition: empty() T* pop_all() { - return Atomic::xchg(&_top, (T*)NULL); + return Atomic::xchg(&_top, (T*)nullptr); } // Atomically adds value to the top of this stack. Acts as a full // memory barrier. void push(T& value) { - assert(next(value) == NULL, "precondition"); + assert(next(value) == nullptr, "precondition"); prepend_impl(&value, &value); } // Atomically adds the list of objects (designated by first and // last) before the objects already in this stack, in the same order // as in the list. Acts as a full memory barrier. - // precondition: next(last) == NULL. + // precondition: next(last) == nullptr. // postcondition: top() == &first, next(last) == old top(). void prepend(T& first, T& last) { - assert(next(last) == NULL, "precondition"); + assert(next(last) == nullptr, "precondition"); #ifdef ASSERT for (T* p = &first; p != &last; p = next(*p)) { - assert(p != NULL, "invalid prepend list"); + assert(p != nullptr, "invalid prepend list"); } #endif prepend_impl(&first, &last); @@ -134,16 +134,16 @@ public: T* last = &first; while (true) { T* step_to = next(*last); - if (step_to == NULL) break; + if (step_to == nullptr) break; last = step_to; } prepend_impl(&first, last); } // Return true if the stack is empty. - bool empty() const { return top() == NULL; } + bool empty() const { return top() == nullptr; } - // Return the most recently pushed element, or NULL if the stack is empty. + // Return the most recently pushed element, or nullptr if the stack is empty. // The returned element is not removed from the stack. T* top() const { return Atomic::load(&_top); } @@ -151,7 +151,7 @@ public: // pops while the length is being determined. size_t length() const { size_t result = 0; - for (const T* current = top(); current != NULL; current = next(*current)) { + for (const T* current = top(); current != nullptr; current = next(*current)) { ++result; } return result; diff --git a/src/hotspot/share/utilities/nativeCallStack.cpp b/src/hotspot/share/utilities/nativeCallStack.cpp index 8359959d085..0fb0303fb90 100644 --- a/src/hotspot/share/utilities/nativeCallStack.cpp +++ b/src/hotspot/share/utilities/nativeCallStack.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, 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 @@ -56,7 +56,7 @@ NativeCallStack::NativeCallStack(address* pc, int frameCount) { _stack[index] = pc[index]; } for (; index < NMT_TrackingStackDepth; index ++) { - _stack[index] = NULL; + _stack[index] = nullptr; } } @@ -64,7 +64,7 @@ NativeCallStack::NativeCallStack(address* pc, int frameCount) { int NativeCallStack::frames() const { int index; for (index = 0; index < NMT_TrackingStackDepth; index ++) { - if (_stack[index] == NULL) { + if (_stack[index] == nullptr) { break; } } @@ -87,7 +87,7 @@ void NativeCallStack::print_on(outputStream* out, int indent) const { } else { for (int frame = 0; frame < NMT_TrackingStackDepth; frame ++) { pc = get_frame(frame); - if (pc == NULL) break; + if (pc == nullptr) break; // Print indent for (int index = 0; index < indent; index ++) out->print(" "); if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) { diff --git a/src/hotspot/share/utilities/nativeCallStack.hpp b/src/hotspot/share/utilities/nativeCallStack.hpp index 9c6957e5ec9..07e30c163e0 100644 --- a/src/hotspot/share/utilities/nativeCallStack.hpp +++ b/src/hotspot/share/utilities/nativeCallStack.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, 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 @@ -94,7 +94,7 @@ public: // if it is an empty stack inline bool is_empty() const { DEBUG_ONLY(assert_not_fake();) - return _stack[0] == NULL; + return _stack[0] == nullptr; } // number of stack frames captured diff --git a/src/hotspot/share/utilities/numberSeq.cpp b/src/hotspot/share/utilities/numberSeq.cpp index 0098327c751..db2f8d92d73 100644 --- a/src/hotspot/share/utilities/numberSeq.cpp +++ b/src/hotspot/share/utilities/numberSeq.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2023, 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 @@ -116,7 +116,7 @@ NumberSeq::NumberSeq(double alpha) : bool NumberSeq::check_nums(NumberSeq *total, int n, NumberSeq **parts) { for (int i = 0; i < n; ++i) { - if (parts[i] != NULL && total->num() != parts[i]->num()) + if (parts[i] != nullptr && total->num() != parts[i]->num()) return false; } return true; diff --git a/src/hotspot/share/utilities/objectBitSet.inline.hpp b/src/hotspot/share/utilities/objectBitSet.inline.hpp index e7ddfee83a9..144f886cbd9 100644 --- a/src/hotspot/share/utilities/objectBitSet.inline.hpp +++ b/src/hotspot/share/utilities/objectBitSet.inline.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2023, 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 @@ -39,15 +39,15 @@ ObjectBitSet<F>::BitMapFragment::BitMapFragment(uintptr_t granule, BitMapFragmen template<MEMFLAGS F> ObjectBitSet<F>::ObjectBitSet() : _bitmap_fragments(32, 8*K), - _fragment_list(NULL), - _last_fragment_bits(NULL), + _fragment_list(nullptr), + _last_fragment_bits(nullptr), _last_fragment_granule(UINTPTR_MAX) { } template<MEMFLAGS F> ObjectBitSet<F>::~ObjectBitSet() { BitMapFragment* current = _fragment_list; - while (current != NULL) { + while (current != nullptr) { BitMapFragment* next = current->next(); delete current; current = next; @@ -67,10 +67,10 @@ inline CHeapBitMap* ObjectBitSet<F>::get_fragment_bits(uintptr_t addr) { if (granule == _last_fragment_granule) { return _last_fragment_bits; } - CHeapBitMap* bits = NULL; + CHeapBitMap* bits = nullptr; CHeapBitMap** found = _bitmap_fragments.get(granule); - if (found != NULL) { + if (found != nullptr) { bits = *found; } else { BitMapFragment* fragment = new BitMapFragment(granule, _fragment_list); diff --git a/src/hotspot/share/utilities/ostream.cpp b/src/hotspot/share/utilities/ostream.cpp index a8a7483ee3b..b9a37f7ca61 100644 --- a/src/hotspot/share/utilities/ostream.cpp +++ b/src/hotspot/share/utilities/ostream.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -47,7 +47,7 @@ outputStream::outputStream() { _position = 0; _precount = 0; _indentation = 0; - _scratch = NULL; + _scratch = nullptr; _scratch_len = 0; } @@ -55,7 +55,7 @@ outputStream::outputStream(bool has_time_stamps) { _position = 0; _precount = 0; _indentation = 0; - _scratch = NULL; + _scratch = nullptr; _scratch_len = 0; if (has_time_stamps) _stamp.update(); } @@ -246,7 +246,7 @@ void outputStream::date_stamp(bool guard, static const int buffer_length = 32; char buffer[buffer_length]; const char* iso8601_result = os::iso8601_time(buffer, buffer_length); - if (iso8601_result != NULL) { + if (iso8601_result != nullptr) { print_raw(buffer); } else { print_raw(error_time); @@ -390,7 +390,7 @@ void stringStream::write(const char* s, size_t len) { } void stringStream::zero_terminate() { - assert(_buffer != NULL && + assert(_buffer != nullptr && _written < _capacity, "sanity"); _buffer[_written] = '\0'; } @@ -463,7 +463,7 @@ static const char* make_log_name_internal(const char* log_name, const char* forc const char* nametail = log_name; // Compute buffer length size_t buffer_length; - if (force_directory != NULL) { + if (force_directory != nullptr) { buffer_length = strlen(force_directory) + strlen(os::file_separator()) + strlen(basename) + 1; } else { @@ -471,7 +471,7 @@ static const char* make_log_name_internal(const char* log_name, const char* forc } const char* pts = strstr(basename, "%p"); - int pid_pos = (pts == NULL) ? -1 : (pts - nametail); + int pid_pos = (pts == nullptr) ? -1 : (pts - nametail); if (pid_pos >= 0) { jio_snprintf(pid_text, sizeof(pid_text), "pid%u", pid); @@ -479,21 +479,21 @@ static const char* make_log_name_internal(const char* log_name, const char* forc } pts = strstr(basename, "%t"); - int tms_pos = (pts == NULL) ? -1 : (pts - nametail); + int tms_pos = (pts == nullptr) ? -1 : (pts - nametail); if (tms_pos >= 0) { buffer_length += strlen(tms); } // File name is too long. if (buffer_length > JVM_MAXPATHLEN) { - return NULL; + return nullptr; } // Create big enough buffer. char *buf = NEW_C_HEAP_ARRAY(char, buffer_length, mtInternal); strcpy(buf, ""); - if (force_directory != NULL) { + if (force_directory != nullptr) { strcat(buf, force_directory); strcat(buf, os::file_separator()); nametail = basename; // completely skip directory prefix @@ -501,8 +501,8 @@ static const char* make_log_name_internal(const char* log_name, const char* forc // who is first, %p or %t? int first = -1, second = -1; - const char *p1st = NULL; - const char *p2nd = NULL; + const char *p1st = nullptr; + const char *p2nd = nullptr; if (pid_pos >= 0 && tms_pos >= 0) { // contains both %p and %t @@ -560,7 +560,7 @@ const char* make_log_name(const char* log_name, const char* force_directory) { fileStream::fileStream(const char* file_name) { _file = os::fopen(file_name, "w"); - if (_file != NULL) { + if (_file != nullptr) { _need_close = true; } else { warning("Cannot open file %s due to %s\n", file_name, os::strerror(errno)); @@ -570,7 +570,7 @@ fileStream::fileStream(const char* file_name) { fileStream::fileStream(const char* file_name, const char* opentype) { _file = os::fopen(file_name, opentype); - if (_file != NULL) { + if (_file != nullptr) { _need_close = true; } else { warning("Cannot open file %s due to %s\n", file_name, os::strerror(errno)); @@ -579,7 +579,7 @@ fileStream::fileStream(const char* file_name, const char* opentype) { } void fileStream::write(const char* s, size_t len) { - if (_file != NULL) { + if (_file != nullptr) { // Make an unused local variable to avoid warning from gcc compiler. size_t count = fwrite(s, 1, len, _file); update_position(s, len); @@ -588,7 +588,7 @@ void fileStream::write(const char* s, size_t len) { long fileStream::fileSize() { long size = -1; - if (_file != NULL) { + if (_file != nullptr) { long pos = ::ftell(_file); if (pos < 0) return pos; if (::fseek(_file, 0, SEEK_END) == 0) { @@ -600,8 +600,8 @@ long fileStream::fileSize() { } char* fileStream::readln(char *data, int count ) { - char * ret = NULL; - if (_file != NULL) { + char * ret = nullptr; + if (_file != nullptr) { ret = ::fgets(data, count, _file); // Get rid of annoying \n char only if it is present. size_t len = ::strlen(data); @@ -613,14 +613,14 @@ char* fileStream::readln(char *data, int count ) { } fileStream::~fileStream() { - if (_file != NULL) { + if (_file != nullptr) { if (_need_close) fclose(_file); - _file = NULL; + _file = nullptr; } } void fileStream::flush() { - if (_file != NULL) { + if (_file != nullptr) { fflush(_file); } } @@ -636,7 +636,7 @@ void fdStream::write(const char* s, size_t len) { } } -defaultStream* defaultStream::instance = NULL; +defaultStream* defaultStream::instance = nullptr; int defaultStream::_output_fd = 1; int defaultStream::_error_fd = 2; FILE* defaultStream::_output_stream = stdout; @@ -658,14 +658,14 @@ bool defaultStream::has_log_file() { // For safer printing during fatal error handling, do not init logfile // if a VM error has been reported. if (!_inited && !VMError::is_error_reported()) init(); - return _log_file != NULL; + return _log_file != nullptr; } fileStream* defaultStream::open_file(const char* log_name) { - const char* try_name = make_log_name(log_name, NULL); - if (try_name == NULL) { + const char* try_name = make_log_name(log_name, nullptr); + if (try_name == nullptr) { warning("Cannot open file %s: file name is too long.\n", log_name); - return NULL; + return nullptr; } fileStream* file = new (mtInternal) fileStream(try_name); @@ -679,9 +679,9 @@ fileStream* defaultStream::open_file(const char* log_name) { // Note: This feature is for maintainer use only. No need for L10N. jio_printf("Warning: Cannot open log file: %s\n", log_name); try_name = make_log_name(log_name, os::get_temp_directory()); - if (try_name == NULL) { + if (try_name == nullptr) { warning("Cannot open file %s: file name is too long for directory %s.\n", log_name, os::get_temp_directory()); - return NULL; + return nullptr; } jio_printf("Warning: Forcing option -XX:LogFile=%s\n", try_name); @@ -693,20 +693,20 @@ fileStream* defaultStream::open_file(const char* log_name) { } delete file; - return NULL; + return nullptr; } void defaultStream::init_log() { // %%% Need a MutexLocker? - const char* log_name = LogFile != NULL ? LogFile : "hotspot_%p.log"; + const char* log_name = LogFile != nullptr ? LogFile : "hotspot_%p.log"; fileStream* file = open_file(log_name); - if (file != NULL) { + if (file != nullptr) { _log_file = file; _outer_xmlStream = new(mtInternal) xmlStream(file); start_log(); } else { - // and leave xtty as NULL + // and leave xtty as nullptr LogVMOutput = false; DisplayVMOutput = true; LogCompilation = false; @@ -748,27 +748,27 @@ void defaultStream::start_log() { Arguments::print_jvm_args_on(xs->text()); xs->tail("args"); } - if (Arguments::java_command() != NULL) { + if (Arguments::java_command() != nullptr) { xs->head("command"); xs->text()->print_cr("%s", Arguments::java_command()); xs->tail("command"); } - if (Arguments::sun_java_launcher() != NULL) { + if (Arguments::sun_java_launcher() != nullptr) { xs->head("launcher"); xs->text()->print_cr("%s", Arguments::sun_java_launcher()); xs->tail("launcher"); } - if (Arguments::system_properties() != NULL) { + if (Arguments::system_properties() != nullptr) { xs->head("properties"); // Print it as a java-style property list. // System properties don't generally contain newlines, so don't bother with unparsing. outputStream *text = xs->text(); - for (SystemProperty* p = Arguments::system_properties(); p != NULL; p = p->next()) { - assert(p->key() != NULL, "p->key() is NULL"); + for (SystemProperty* p = Arguments::system_properties(); p != nullptr; p = p->next()) { + assert(p->key() != nullptr, "p->key() is nullptr"); if (p->readable()) { // Print in two stages to avoid problems with long // keys/values. text->print_raw(p->key()); text->put('='); - assert(p->value() != NULL, "p->value() is NULL"); + assert(p->value() != nullptr, "p->value() is nullptr"); text->print_raw_cr(p->value()); } } @@ -795,10 +795,10 @@ void defaultStream::finish_log() { xs->flush(); fileStream* file = _log_file; - _log_file = NULL; + _log_file = nullptr; delete _outer_xmlStream; - _outer_xmlStream = NULL; + _outer_xmlStream = nullptr; file->flush(); delete file; @@ -818,8 +818,8 @@ void defaultStream::finish_log_on_error(char *buf, int buflen) { xs->flush(); fileStream* file = _log_file; - _log_file = NULL; - _outer_xmlStream = NULL; + _log_file = nullptr; + _outer_xmlStream = nullptr; if (file) { file->flush(); @@ -837,10 +837,10 @@ intx defaultStream::hold(intx writer_id) { writer_id == NO_WRITER || // bootstrap problem - tty_lock == NULL || + tty_lock == nullptr || // can't grab a lock if current Thread isn't set - Thread::current_or_null() == NULL || + Thread::current_or_null() == nullptr || // developer hook !SerializeVMOutput || @@ -911,7 +911,7 @@ void defaultStream::write(const char* s, size_t len) { } intx ttyLocker::hold_tty() { - if (defaultStream::instance == NULL) return defaultStream::NO_WRITER; + if (defaultStream::instance == nullptr) return defaultStream::NO_WRITER; intx thread_id = os::current_thread_id(); return defaultStream::instance->hold(thread_id); } @@ -933,9 +933,9 @@ bool ttyLocker::release_tty_if_locked() { } void ttyLocker::break_tty_lock_for_safepoint(intx holder) { - if (defaultStream::instance != NULL && + if (defaultStream::instance != nullptr && defaultStream::instance->writer() == holder) { - if (xtty != NULL) { + if (xtty != nullptr) { xtty->print_cr("<!-- safepoint while printing -->"); } defaultStream::instance->release(holder); @@ -944,7 +944,7 @@ void ttyLocker::break_tty_lock_for_safepoint(intx holder) { } void ostream_init() { - if (defaultStream::instance == NULL) { + if (defaultStream::instance == nullptr) { defaultStream::instance = new(mtInternal) defaultStream(); tty = defaultStream::instance; @@ -981,8 +981,8 @@ void ostream_exit() { delete tmp; } delete defaultStream::instance; - xtty = NULL; - defaultStream::instance = NULL; + xtty = nullptr; + defaultStream::instance = nullptr; } // ostream_abort() is called by os::abort() when VM is about to die. @@ -990,7 +990,7 @@ void ostream_abort() { // Here we can't delete tty, just flush its output if (tty) tty->flush(); - if (defaultStream::instance != NULL) { + if (defaultStream::instance != nullptr) { static char buf[4096]; defaultStream::instance->finish_log_on_error(buf, sizeof(buf)); } @@ -1139,7 +1139,7 @@ bool networkStream::connect(const char *ip, short port) { server.sin_addr.s_addr = inet_addr(ip); if (server.sin_addr.s_addr == (uint32_t)-1) { struct hostent* host = os::get_host_by_name((char*)ip); - if (host != NULL) { + if (host != nullptr) { memcpy(&server.sin_addr, host->h_addr_list[0], host->h_length); } else { return false; diff --git a/src/hotspot/share/utilities/ostream.hpp b/src/hotspot/share/utilities/ostream.hpp index db1a020e787..1b2a041a6ba 100644 --- a/src/hotspot/share/utilities/ostream.hpp +++ b/src/hotspot/share/utilities/ostream.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -128,7 +128,7 @@ class outputStream : public CHeapObjBase { // flushing virtual void flush() {} virtual void write(const char* str, size_t len) = 0; - virtual void rotate_log(bool force, outputStream* out = NULL) {} // GC log rotation + virtual void rotate_log(bool force, outputStream* out = nullptr) {} // GC log rotation virtual ~outputStream() {} // close properly on deletion // Caller may specify their own scratch buffer to use for printing; otherwise, @@ -235,18 +235,18 @@ class fileStream : public outputStream { FILE* _file; bool _need_close; public: - fileStream() { _file = NULL; _need_close = false; } + fileStream() { _file = nullptr; _need_close = false; } fileStream(const char* file_name); fileStream(const char* file_name, const char* opentype); fileStream(FILE* file, bool need_close = false) { _file = file; _need_close = need_close; } ~fileStream(); - bool is_open() const { return _file != NULL; } + bool is_open() const { return _file != nullptr; } virtual void write(const char* c, size_t len); - size_t read(void *data, size_t size, size_t count) { return _file != NULL ? ::fread(data, size, count, _file) : 0; } + size_t read(void *data, size_t size, size_t count) { return _file != nullptr ? ::fread(data, size, count, _file) : 0; } char* readln(char *data, int count); - int eof() { return _file != NULL ? feof(_file) : -1; } + int eof() { return _file != nullptr ? feof(_file) : -1; } long fileSize(); - void rewind() { if (_file != NULL) ::rewind(_file); } + void rewind() { if (_file != nullptr) ::rewind(_file); } void flush(); }; diff --git a/src/hotspot/share/utilities/preserveException.cpp b/src/hotspot/share/utilities/preserveException.cpp index 415055a430e..516302af5f8 100644 --- a/src/hotspot/share/utilities/preserveException.cpp +++ b/src/hotspot/share/utilities/preserveException.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -46,7 +46,7 @@ PreserveExceptionMark::~PreserveExceptionMark() { exception->print_string()); } - if (_preserved_exception_oop() != NULL) { + if (_preserved_exception_oop() != nullptr) { _thread->set_pending_exception(_preserved_exception_oop(), _preserved_exception_file, _preserved_exception_line); } } diff --git a/src/hotspot/share/utilities/resizeableResourceHash.hpp b/src/hotspot/share/utilities/resizeableResourceHash.hpp index ed9147445ba..96866c9dc4d 100644 --- a/src/hotspot/share/utilities/resizeableResourceHash.hpp +++ b/src/hotspot/share/utilities/resizeableResourceHash.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2023, 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 @@ -112,7 +112,7 @@ public: Node* const* bucket = old_table; while (bucket < &old_table[old_size]) { Node* node = *bucket; - while (node != NULL) { + while (node != nullptr) { Node* next = node->_next; unsigned hash = HASH(node->_key); unsigned index = hash % new_size; diff --git a/src/hotspot/share/utilities/resourceHash.hpp b/src/hotspot/share/utilities/resourceHash.hpp index 96894fe75f4..b04ff486631 100644 --- a/src/hotspot/share/utilities/resourceHash.hpp +++ b/src/hotspot/share/utilities/resourceHash.hpp @@ -39,11 +39,11 @@ public: ResourceHashtableNode* _next; ResourceHashtableNode(unsigned hash, K const& key, V const& value) : - _hash(hash), _key(key), _value(value), _next(NULL) {} + _hash(hash), _key(key), _value(value), _next(nullptr) {} // Create a node with a default-constructed value. ResourceHashtableNode(unsigned hash, K const& key) : - _hash(hash), _key(key), _value(), _next(NULL) {} + _hash(hash), _key(key), _value(), _next(nullptr) {} }; template< @@ -74,7 +74,7 @@ class ResourceHashtableBase : public STORAGE { Node** lookup_node(unsigned hash, K const& key) { unsigned index = hash % table_size(); Node** ptr = bucket_at(index); - while (*ptr != NULL) { + while (*ptr != nullptr) { Node* node = *ptr; if (node->_hash == hash && EQUALS(key, node->_key)) { break; @@ -102,7 +102,7 @@ class ResourceHashtableBase : public STORAGE { const unsigned sz = table_size(); while (bucket < bucket_at(sz)) { Node* node = *bucket; - while (node != NULL) { + while (node != nullptr) { Node* cur = node; node = node->_next; delete cur; @@ -117,16 +117,16 @@ class ResourceHashtableBase : public STORAGE { int number_of_entries() const { return _number_of_entries; } bool contains(K const& key) const { - return get(key) != NULL; + return get(key) != nullptr; } V* get(K const& key) const { unsigned hv = HASH(key); Node const** ptr = lookup_node(hv, key); - if (*ptr != NULL) { + if (*ptr != nullptr) { return const_cast<V*>(&(*ptr)->_value); } else { - return NULL; + return nullptr; } } @@ -138,7 +138,7 @@ class ResourceHashtableBase : public STORAGE { bool put(K const& key, V const& value) { unsigned hv = HASH(key); Node** ptr = lookup_node(hv, key); - if (*ptr != NULL) { + if (*ptr != nullptr) { (*ptr)->_value = value; return false; } else { @@ -160,7 +160,7 @@ class ResourceHashtableBase : public STORAGE { V* put_if_absent(K const& key, bool* p_created) { unsigned hv = HASH(key); Node** ptr = lookup_node(hv, key); - if (*ptr == NULL) { + if (*ptr == nullptr) { if (ALLOC_TYPE == AnyObj::C_HEAP) { *ptr = new (MEM_TYPE) Node(hv, key); } else { @@ -182,7 +182,7 @@ class ResourceHashtableBase : public STORAGE { V* put_if_absent(K const& key, V const& value, bool* p_created) { unsigned hv = HASH(key); Node** ptr = lookup_node(hv, key); - if (*ptr == NULL) { + if (*ptr == nullptr) { if (ALLOC_TYPE == AnyObj::C_HEAP) { *ptr = new (MEM_TYPE) Node(hv, key, value); } else { @@ -202,7 +202,7 @@ class ResourceHashtableBase : public STORAGE { Node** ptr = lookup_node(hv, key); Node* node = *ptr; - if (node != NULL) { + if (node != nullptr) { *ptr = node->_next; if (ALLOC_TYPE == AnyObj::C_HEAP) { delete node; @@ -232,7 +232,7 @@ class ResourceHashtableBase : public STORAGE { while (cnt > 0 && bucket < bucket_at(sz)) { Node* node = *bucket; - while (node != NULL) { + while (node != nullptr) { bool cont = function(node->_key, node->_value); if (!cont) { return; } node = node->_next; @@ -260,7 +260,7 @@ class ResourceHashtableBase : public STORAGE { const unsigned sz = table_size(); for (unsigned index = 0; index < sz; index++) { Node** ptr = bucket_at(index); - while (*ptr != NULL) { + while (*ptr != nullptr) { Node* node = *ptr; // do_entry must clean up the key and value in Node. bool clean = iter->do_entry(node->_key, node->_value); @@ -286,7 +286,7 @@ class ResourceHashtableBase : public STORAGE { while (bucket < bucket_at(sz)) { Node* node = *bucket; int count = 0; - while (node != NULL) { + while (node != nullptr) { literal_bytes += size_function(node->_key, node->_value); count++; node = node->_next; diff --git a/src/hotspot/share/utilities/stack.hpp b/src/hotspot/share/utilities/stack.hpp index cca1c4fd57a..628c69d67d4 100644 --- a/src/hotspot/share/utilities/stack.hpp +++ b/src/hotspot/share/utilities/stack.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2023, 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 @@ -104,7 +104,7 @@ public: size_t max_cache_size = 4, size_t max_size = 0); inline ~Stack() { clear(true); } - inline bool is_empty() const { return this->_cur_seg == NULL; } + inline bool is_empty() const { return this->_cur_seg == nullptr; } inline bool is_full() const { return this->_full_seg_size >= this->max_size(); } // Performance sensitive code should use is_empty() instead of size() == 0 and @@ -169,7 +169,7 @@ public: ResourceStack(size_t segment_size): Stack<E, F>(segment_size, max_uintx) { } - // Set the segment pointers to NULL so the parent dtor does not free them; + // Set the segment pointers to nullptr so the parent dtor does not free them; // that must be done by the ResourceMark code. ~ResourceStack() { Stack<E, F>::reset(true); } @@ -189,7 +189,7 @@ public: Stack<E, F>& stack() const { return _stack; } - bool is_empty() const { return _cur_seg == NULL; } + bool is_empty() const { return _cur_seg == nullptr; } E next() { return *next_addr(); } E* next_addr(); diff --git a/src/hotspot/share/utilities/stack.inline.hpp b/src/hotspot/share/utilities/stack.inline.hpp index 13a49b09c05..add7eef8464 100644 --- a/src/hotspot/share/utilities/stack.inline.hpp +++ b/src/hotspot/share/utilities/stack.inline.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2023, 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 @@ -187,7 +187,7 @@ NOINLINE void Stack<E, F>::pop_segment() DEBUG_ONLY(zap_segment(_cur_seg, true);) free(_cur_seg, segment_bytes()); } - const bool at_empty_transition = prev == NULL; + const bool at_empty_transition = prev == nullptr; this->_cur_seg = prev; this->_cur_seg_size = this->_seg_size; this->_full_seg_size -= at_empty_transition ? 0 : this->_seg_size; @@ -198,7 +198,7 @@ template <class E, MEMFLAGS F> void Stack<E, F>::free_segments(E* seg) { const size_t bytes = segment_bytes(); - while (seg != NULL) { + while (seg != nullptr) { E* const prev = get_link(seg); free(seg, bytes); seg = prev; @@ -210,10 +210,10 @@ void Stack<E, F>::reset(bool reset_cache) { this->_cur_seg_size = this->_seg_size; // So push() will alloc a new segment. this->_full_seg_size = 0; - _cur_seg = NULL; + _cur_seg = nullptr; if (reset_cache) { this->_cache_size = 0; - _cache = NULL; + _cache = nullptr; } } @@ -227,7 +227,7 @@ void Stack<E, F>::verify(bool at_empty_transition) const assert(this->_full_seg_size % this->_seg_size == 0, "not a multiple"); assert(at_empty_transition || is_empty() == (size() == 0), "mismatch"); - assert((_cache == NULL) == (this->cache_size() == 0), "mismatch"); + assert((_cache == nullptr) == (this->cache_size() == 0), "mismatch"); if (is_empty()) { assert(this->_cur_seg_size == this->segment_size(), "sanity"); diff --git a/src/hotspot/share/utilities/stringUtils.cpp b/src/hotspot/share/utilities/stringUtils.cpp index e939c8e9b73..3abebeec92a 100644 --- a/src/hotspot/share/utilities/stringUtils.cpp +++ b/src/hotspot/share/utilities/stringUtils.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2023, 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 @@ -36,7 +36,7 @@ int StringUtils::replace_no_expand(char* string, const char* from, const char* t size_t to_len = strlen(to); assert(from_len >= to_len, "must not expand input"); - for (char* dst = string; *dst && (dst = strstr(dst, from)) != NULL;) { + for (char* dst = string; *dst && (dst = strstr(dst, from)) != nullptr;) { char* left_over = dst + from_len; memmove(dst, to, to_len); // does not copy trailing 0 of <to> dst += to_len; // skip over the replacement. @@ -48,7 +48,7 @@ int StringUtils::replace_no_expand(char* string, const char* from, const char* t } double StringUtils::similarity(const char* str1, size_t len1, const char* str2, size_t len2) { - assert(str1 != NULL && str2 != NULL, "sanity"); + assert(str1 != nullptr && str2 != nullptr, "sanity"); // filter out zero-length strings else we will underflow on len-1 below if (len1 == 0 || len2 == 0) { diff --git a/src/hotspot/share/utilities/unsigned5.cpp b/src/hotspot/share/utilities/unsigned5.cpp index 67b4cf353b1..82c8a5d7b35 100644 --- a/src/hotspot/share/utilities/unsigned5.cpp +++ b/src/hotspot/share/utilities/unsigned5.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2023, 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 @@ -44,8 +44,8 @@ print_on(outputStream* st, int count, const char* left, // "U5: [" const char* right // "] (values=%d/length=%d)\n" ) { - if (left == NULL) left = "U5: ["; - if (right == NULL) right = "] (values=%d/length=%d)\n"; + if (left == nullptr) left = "U5: ["; + if (right == nullptr) right = "] (values=%d/length=%d)\n"; int printed = 0; st->print("%s", left); for (;;) { diff --git a/src/hotspot/share/utilities/unsigned5.hpp b/src/hotspot/share/utilities/unsigned5.hpp index 4151ab1f1c7..59803bc4437 100644 --- a/src/hotspot/share/utilities/unsigned5.hpp +++ b/src/hotspot/share/utilities/unsigned5.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -306,7 +306,7 @@ class UNSIGNED5 : AllStatic { // The %d formats are for the number of printed items and // their length in bytes, if you want to see that also. void print_on(outputStream* st, int count = -1, - const char* left = NULL, const char* right = NULL); + const char* left = nullptr, const char* right = nullptr); }; // Writer example use @@ -323,8 +323,8 @@ class UNSIGNED5 : AllStatic { OFF _position; public: Writer(const ARR& array) - : _array(const_cast<ARR&>(array)), _limit_ptr(NULL), _position(0) { - // Note: if _limit_ptr is NULL, the ARR& is never reassigned, + : _array(const_cast<ARR&>(array)), _limit_ptr(nullptr), _position(0) { + // Note: if _limit_ptr is nullptr, the ARR& is never reassigned, // because has_limit is false. So the const_cast here is safe. assert(!has_limit(), "this writer cannot be growable"); } @@ -363,7 +363,7 @@ class UNSIGNED5 : AllStatic { ARR array() { return _array; } OFF position() { return _position; } void set_position(OFF position) { _position = position; } - bool has_limit() { return _limit_ptr != NULL; } + bool has_limit() { return _limit_ptr != nullptr; } OFF limit() { assert(has_limit(), "needs limit"); return *_limit_ptr; } OFF remaining() { return limit() - position(); } }; diff --git a/src/hotspot/share/utilities/utf8.cpp b/src/hotspot/share/utilities/utf8.cpp index 556e95fc662..66e48d56065 100644 --- a/src/hotspot/share/utilities/utf8.cpp +++ b/src/hotspot/share/utilities/utf8.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -237,7 +237,7 @@ void UTF8::as_quoted_ascii(const char* utf8_str, int utf8_length, char* buf, int // no longer used, but could be useful to test output of UTF8::as_quoted_ascii const char* UTF8::from_quoted_ascii(const char* quoted_ascii_str) { const char *ptr = quoted_ascii_str; - char* result = NULL; + char* result = nullptr; while (*ptr != '\0') { char c = *ptr; if (c < 32 || c >= 127) break; @@ -248,11 +248,11 @@ const char* UTF8::from_quoted_ascii(const char* quoted_ascii_str) { } // everything up to this point was ok. int length = ptr - quoted_ascii_str; - char* buffer = NULL; + char* buffer = nullptr; for (int round = 0; round < 2; round++) { while (*ptr != '\0') { if (*ptr != '\\') { - if (buffer != NULL) { + if (buffer != nullptr) { buffer[length] = *ptr; } length++; @@ -280,7 +280,7 @@ const char* UTF8::from_quoted_ascii(const char* quoted_ascii_str) { ShouldNotReachHere(); } } - if (buffer == NULL) { + if (buffer == nullptr) { char utf8_buffer[4]; char* next = (char*)utf8_write((u_char*)utf8_buffer, value); length += next - utf8_buffer; @@ -290,10 +290,10 @@ const char* UTF8::from_quoted_ascii(const char* quoted_ascii_str) { } break; } - case 't': if (buffer != NULL) buffer[length] = '\t'; ptr += 2; length++; break; - case 'n': if (buffer != NULL) buffer[length] = '\n'; ptr += 2; length++; break; - case 'r': if (buffer != NULL) buffer[length] = '\r'; ptr += 2; length++; break; - case 'f': if (buffer != NULL) buffer[length] = '\f'; ptr += 2; length++; break; + case 't': if (buffer != nullptr) buffer[length] = '\t'; ptr += 2; length++; break; + case 'n': if (buffer != nullptr) buffer[length] = '\n'; ptr += 2; length++; break; + case 'r': if (buffer != nullptr) buffer[length] = '\r'; ptr += 2; length++; break; + case 'f': if (buffer != nullptr) buffer[length] = '\f'; ptr += 2; length++; break; default: ShouldNotReachHere(); } diff --git a/src/hotspot/share/utilities/utf8.hpp b/src/hotspot/share/utilities/utf8.hpp index 152edfed2ad..95e1886e0da 100644 --- a/src/hotspot/share/utilities/utf8.hpp +++ b/src/hotspot/share/utilities/utf8.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -73,14 +73,14 @@ class UTF8 : AllStatic { // Utility methods - // Returns NULL if 'c' it not found. This only works as long + // Returns nullptr if 'c' it not found. This only works as long // as 'c' is an ASCII character static const jbyte* strrchr(const jbyte* base, int length, jbyte c) { assert(length >= 0, "sanity check"); assert(c >= 0, "does not work for non-ASCII characters"); // Skip backwards in string until 'c' is found or end is reached while(--length >= 0 && base[length] != c); - return (length < 0) ? NULL : &base[length]; + return (length < 0) ? nullptr : &base[length]; } static bool equal(const jbyte* base1, int length1, const jbyte* base2,int length2); static bool is_supplementary_character(const unsigned char* str); diff --git a/src/hotspot/share/utilities/virtualizationSupport.cpp b/src/hotspot/share/utilities/virtualizationSupport.cpp index 5a2e8651efa..f3031a9582d 100644 --- a/src/hotspot/share/utilities/virtualizationSupport.cpp +++ b/src/hotspot/share/utilities/virtualizationSupport.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2019 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -28,10 +28,10 @@ #include "runtime/os.hpp" #include "utilities/virtualizationSupport.hpp" -static void *dlHandle = NULL; +static void *dlHandle = nullptr; -static GuestLib_StatGet_t GuestLib_StatGet = NULL; -static GuestLib_StatFree_t GuestLib_StatFree = NULL; +static GuestLib_StatGet_t GuestLib_StatGet = nullptr; +static GuestLib_StatFree_t GuestLib_StatFree = nullptr; static bool has_host_information = false; static bool has_resource_information = false; @@ -48,22 +48,22 @@ void VirtualizationSupport::initialize() { dlHandle = os::dll_load("vmGuestLib", ebuf, sizeof ebuf); #ifdef LINUX - if (dlHandle == NULL) { + if (dlHandle == nullptr) { // the open-vm-tools have a different guest lib name // on some distros e.g. SLES12 the open-vm-tools are the default, // so use the different libname as a fallback dlHandle = os::dll_load("/usr/lib64/libguestlib.so.0", ebuf, sizeof ebuf); } #endif - if (dlHandle == NULL) { + if (dlHandle == nullptr) { return; } GuestLib_StatGet = CAST_TO_FN_PTR(GuestLib_StatGet_t, os::dll_lookup(dlHandle, "VMGuestLib_StatGet")); GuestLib_StatFree = CAST_TO_FN_PTR(GuestLib_StatFree_t, os::dll_lookup(dlHandle, "VMGuestLib_StatFree")); - if (GuestLib_StatGet != NULL && GuestLib_StatFree != NULL) { - char* result_info = NULL; + if (GuestLib_StatGet != nullptr && GuestLib_StatFree != nullptr) { + char* result_info = nullptr; size_t result_size = 0; VMGuestLibError sg_error = GuestLib_StatGet("text", "resources", &result_info, &result_size); if (sg_error == VMGUESTLIB_ERROR_SUCCESS) { @@ -91,8 +91,8 @@ void VirtualizationSupport::print_virtualization_info(outputStream* st) { st->print_cr("%s", extended_resource_info_at_startup); } // current resource info - if (GuestLib_StatGet != NULL && GuestLib_StatFree != NULL) { - char* result_info = NULL; + if (GuestLib_StatGet != nullptr && GuestLib_StatFree != nullptr) { + char* result_info = nullptr; size_t result_size = 0; VMGuestLibError sg_error = GuestLib_StatGet("text", "resources", &result_info, &result_size); if (sg_error == VMGUESTLIB_ERROR_SUCCESS) { diff --git a/src/hotspot/share/utilities/vmError.cpp b/src/hotspot/share/utilities/vmError.cpp index 6ecc1969dbe..de94b2a8c9e 100644 --- a/src/hotspot/share/utilities/vmError.cpp +++ b/src/hotspot/share/utilities/vmError.cpp @@ -124,17 +124,17 @@ static const char* env_list[] = { // A simple parser for -XX:OnError, usage: // ptr = OnError; -// while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr) != NULL) +// while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr) != nullptr) // ... ... static char* next_OnError_command(char* buf, int buflen, const char** ptr) { - if (ptr == NULL || *ptr == NULL) return NULL; + if (ptr == nullptr || *ptr == nullptr) return nullptr; const char* cmd = *ptr; // skip leading blanks or ';' while (*cmd == ' ' || *cmd == ';') cmd++; - if (*cmd == '\0') return NULL; + if (*cmd == '\0') return nullptr; const char * cmdend = cmd; while (*cmdend != '\0' && *cmdend != ';') cmdend++; @@ -146,11 +146,11 @@ static char* next_OnError_command(char* buf, int buflen, const char** ptr) { } static void print_bug_submit_message(outputStream *out, Thread *thread) { - if (out == NULL) return; + if (out == nullptr) return; const char *url = Arguments::java_vendor_url_bug(); - if (url == NULL || *url == '\0') + if (url == nullptr || *url == '\0') url = JDK_Version::runtime_vendor_vm_bug_url(); - if (url != NULL && *url != '\0') { + if (url != nullptr && *url != '\0') { out->print_raw_cr("# If you would like to submit a bug report, please visit:"); out->print_raw ("# "); out->print_raw_cr(url); @@ -182,7 +182,7 @@ char* VMError::error_string(char* buf, int buflen) { "%s (0x%x) at pc=" PTR_FORMAT ", pid=%d, tid=" UINTX_FORMAT, signame, _id, _pc, os::current_process_id(), os::current_thread_id()); - } else if (_filename != NULL && _lineno > 0) { + } else if (_filename != nullptr && _lineno > 0) { // skip directory names int n = jio_snprintf(buf, buflen, "Internal Error at %s:%d, pid=%d, tid=" UINTX_FORMAT, @@ -271,7 +271,7 @@ static bool add_if_absent(address value, address* list, int list_capacity) { * been printed. If the code unit is an InterpreterCodelet or StubCodeDesc, it is * only printed if `is_crash_pc` is true. * - * @param printed array of code units that have already been printed (delimited by NULL entry) + * @param printed array of code units that have already been printed (delimited by nullptr entry) * @param printed_capacity the capacity of `printed` * @return true if the code unit was printed, false otherwise */ @@ -426,13 +426,13 @@ static void report_vm_version(outputStream* st, char* buf, int buflen) { // VM version st->print_cr("#"); JDK_Version::current().to_string(buf, buflen); - const char* runtime_name = JDK_Version::runtime_name() != NULL ? + const char* runtime_name = JDK_Version::runtime_name() != nullptr ? JDK_Version::runtime_name() : ""; - const char* runtime_version = JDK_Version::runtime_version() != NULL ? + const char* runtime_version = JDK_Version::runtime_version() != nullptr ? JDK_Version::runtime_version() : ""; - const char* vendor_version = JDK_Version::runtime_vendor_version() != NULL ? + const char* vendor_version = JDK_Version::runtime_vendor_version() != nullptr ? JDK_Version::runtime_vendor_version() : ""; - const char* jdk_debug_level = VM_Version::printable_jdk_debug_level() != NULL ? + const char* jdk_debug_level = VM_Version::printable_jdk_debug_level() != nullptr ? VM_Version::printable_jdk_debug_level() : ""; st->print_cr("# JRE version: %s%s%s (%s) (%sbuild %s)", runtime_name, @@ -671,7 +671,7 @@ void VMError::report(outputStream* st, bool _verbose) { st->print("%s", buf); st->print(" (0x%x)", _id); // signal number st->print(" at pc=" PTR_FORMAT, p2i(_pc)); - if (_siginfo != NULL && os::signal_sent_by_kill(_siginfo)) { + if (_siginfo != nullptr && os::signal_sent_by_kill(_siginfo)) { st->print(" (sent by kill)"); } } else { @@ -680,7 +680,7 @@ void VMError::report(outputStream* st, bool _verbose) { } else { st->print("Out of Memory Error"); } - if (_filename != NULL && _lineno > 0) { + if (_filename != nullptr && _lineno > 0) { #ifdef PRODUCT // In product mode chop off pathname const char *file = get_filename_only(); @@ -838,7 +838,7 @@ void VMError::report(outputStream* st, bool _verbose) { _verbose && _thread != nullptr && (_thread->is_Named_thread())) // printing Java thread stack trace if it is involved in GC crash Thread* thread = ((NamedThread *)_thread)->processed_thread(); - if (thread != NULL && thread->is_Java_thread()) { + if (thread != nullptr && thread->is_Java_thread()) { JavaThread* jt = JavaThread::cast(thread); st->print_cr("JavaThread " PTR_FORMAT " (nid = %d) was being processed", p2i(jt), jt->osthread()->thread_id()); print_stack_trace(st, jt, buf, sizeof(buf), true); @@ -1006,7 +1006,7 @@ void VMError::report(outputStream* st, bool _verbose) { STEP_IF("printing heap information", _verbose) GCLogPrecious::print_on_error(st); - if (Universe::heap() != NULL) { + if (Universe::heap() != nullptr) { Universe::heap()->print_on_error(st); st->cr(); } @@ -1299,7 +1299,7 @@ int VMError::prepare_log_file(const char* pattern, const char* default_pattern, int fd = -1; // If possible, use specified pattern to construct log file name - if (pattern != NULL) { + if (pattern != nullptr) { fd = expand_and_open(pattern, overwrite_existing, buf, buflen, 0); } @@ -1307,7 +1307,7 @@ int VMError::prepare_log_file(const char* pattern, const char* default_pattern, // so use the default name in the current directory if (fd == -1) { const char* cwd = os::get_current_directory(buf, buflen); - if (cwd != NULL) { + if (cwd != nullptr) { size_t pos = strlen(cwd); int fsep_len = jio_snprintf(&buf[pos], buflen-pos, "%s", os::file_separator()); pos += fsep_len; @@ -1320,7 +1320,7 @@ int VMError::prepare_log_file(const char* pattern, const char* default_pattern, // try temp directory if it exists. if (fd == -1) { const char* tmpdir = os::get_temp_directory(); - if (tmpdir != NULL && strlen(tmpdir) > 0) { + if (tmpdir != nullptr && strlen(tmpdir) > 0) { int pos = jio_snprintf(buf, buflen, "%s%s", tmpdir, os::file_separator()); if (pos > 0) { fd = expand_and_open(default_pattern, overwrite_existing, buf, buflen, pos); @@ -1336,7 +1336,7 @@ void VMError::report_and_die(Thread* thread, unsigned int sig, address pc, void* { va_list detail_args; va_start(detail_args, detail_fmt); - report_and_die(sig, NULL, detail_fmt, detail_args, thread, pc, siginfo, context, NULL, 0, 0); + report_and_die(sig, nullptr, detail_fmt, detail_args, thread, pc, siginfo, context, nullptr, 0, 0); va_end(detail_args); } @@ -1348,12 +1348,12 @@ void VMError::report_and_die(Thread* thread, unsigned int sig, address pc, void* void VMError::report_and_die(Thread* thread, void* context, const char* filename, int lineno, const char* message, const char* detail_fmt, va_list detail_args) { - report_and_die(INTERNAL_ERROR, message, detail_fmt, detail_args, thread, NULL, NULL, context, filename, lineno, 0); + report_and_die(INTERNAL_ERROR, message, detail_fmt, detail_args, thread, nullptr, nullptr, context, filename, lineno, 0); } void VMError::report_and_die(Thread* thread, const char* filename, int lineno, size_t size, VMErrorType vm_err_type, const char* detail_fmt, va_list detail_args) { - report_and_die(vm_err_type, NULL, detail_fmt, detail_args, thread, NULL, NULL, NULL, filename, lineno, size); + report_and_die(vm_err_type, nullptr, detail_fmt, detail_args, thread, nullptr, nullptr, nullptr, filename, lineno, size); } void VMError::report_and_die(int id, const char* message, const char* detail_fmt, va_list detail_args, @@ -1514,10 +1514,10 @@ void VMError::report_and_die(int id, const char* message, const char* detail_fmt } else { if (should_report_bug(id)) { st->print(", Internal Error (%s:%d)", - filename == NULL ? "??" : filename, lineno); + filename == nullptr ? "??" : filename, lineno); } else { st->print(", Out of Memory Error (%s:%d)", - filename == NULL ? "??" : filename, lineno); + filename == nullptr ? "??" : filename, lineno); } } st->print_cr("]"); @@ -1609,12 +1609,12 @@ void VMError::report_and_die(int id, const char* message, const char* detail_fmt if (DumpReplayDataOnError && _thread && _thread->is_Compiler_thread() && !skip_replay) { skip_replay = true; ciEnv* env = ciEnv::current(); - if (env != NULL) { + if (env != nullptr) { const bool overwrite = false; // We do not overwrite an existing replay file. int fd = prepare_log_file(ReplayDataFile, "replay_pid%p.log", overwrite, buffer, sizeof(buffer)); if (fd != -1) { FILE* replay_data_file = os::fdopen(fd, "w"); - if (replay_data_file != NULL) { + if (replay_data_file != nullptr) { fileStream replay_data_stream(replay_data_file, /*need_close=*/true); env->dump_replay_data_unsafe(&replay_data_stream); out.print_raw("#\n# Compiler replay data is saved as:\n# "); @@ -1629,7 +1629,7 @@ void VMError::report_and_die(int id, const char* message, const char* detail_fmt } #if INCLUDE_JVMCI - if (JVMCI::fatal_log_filename() != NULL) { + if (JVMCI::fatal_log_filename() != nullptr) { out.print_raw("#\n# The JVMCI shared library error report file is saved as:\n# "); out.print_raw_cr(JVMCI::fatal_log_filename()); } @@ -1657,7 +1657,7 @@ void VMError::report_and_die(int id, const char* message, const char* detail_fmt char* cmd; const char* ptr = OnError; - while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr)) != NULL){ + while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr)) != nullptr){ out.print_raw ("# Executing "); #if defined(LINUX) || defined(_ALLBSD_SOURCE) out.print_raw ("/bin/sh -c "); @@ -1675,7 +1675,7 @@ void VMError::report_and_die(int id, const char* message, const char* detail_fmt } // done with OnError - OnError = NULL; + OnError = nullptr; } if (WINDOWS_ONLY(!UseOSErrorReporting) NOT_WINDOWS(true)) { @@ -1718,7 +1718,7 @@ void VM_ReportJavaOutOfMemory::doit() { char* cmd; const char* ptr = OnOutOfMemoryError; - while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr)) != NULL){ + while ((cmd = next_OnError_command(buffer, sizeof(buffer), &ptr)) != nullptr){ tty->print("# Executing "); #if defined(LINUX) tty->print ("/bin/sh -c "); @@ -1760,8 +1760,8 @@ bool VMError::check_timeout() { // Do not check for timeouts if we still have a message box to show to the // user or if there are OnError handlers to be run. if (ShowMessageBoxOnError - || (OnError != NULL && OnError[0] != '\0') - || Arguments::abort_hook() != NULL) { + || (OnError != nullptr && OnError[0] != '\0') + || Arguments::abort_hook() != nullptr) { return false; } diff --git a/src/hotspot/share/utilities/vmError.hpp b/src/hotspot/share/utilities/vmError.hpp index c9b2b7f5474..66e9c1faab5 100644 --- a/src/hotspot/share/utilities/vmError.hpp +++ b/src/hotspot/share/utilities/vmError.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2017, 2022 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -42,7 +42,7 @@ class VMError : public AllStatic { static const char* _message; static char _detail_msg[1024]; - static Thread* _thread; // NULL if it's native thread + static Thread* _thread; // nullptr if it's native thread // additional info for crashes static address _pc; // faulting PC @@ -187,7 +187,7 @@ public: DEBUG_ONLY(static void controlled_crash(int how);) - // Non-NULL address guaranteed to generate a SEGV mapping error on read, for test purposes. + // Non-null address guaranteed to generate a SEGV mapping error on read, for test purposes. static constexpr intptr_t segfault_address = (1 * K) AIX_ONLY(+ (4 * K)); // Max value for the ErrorLogPrintCodeLimit flag. diff --git a/src/hotspot/share/utilities/xmlstream.cpp b/src/hotspot/share/utilities/xmlstream.cpp index 7080ff72628..dc863c58a9e 100644 --- a/src/hotspot/share/utilities/xmlstream.cpp +++ b/src/hotspot/share/utilities/xmlstream.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2023, 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 @@ -94,7 +94,7 @@ void xmlStream::write_text(const char* s, size_t len) { for (size_t i = 0; i < len; i++) { char ch = s[i]; // Escape special chars. - const char* esc = NULL; + const char* esc = nullptr; switch (ch) { // These are important only in attrs, but we do them always: case '\'': esc = "'"; break; @@ -104,7 +104,7 @@ void xmlStream::write_text(const char* s, size_t len) { // This is a freebie. case '>': esc = ">"; break; } - if (esc != NULL) { + if (esc != nullptr) { if (written < i) { out()->write(&s[written], i - written); written = i; @@ -153,7 +153,7 @@ void xmlStream::see_tag(const char* tag, bool push) { // tag goes up until either null or space: const char* tag_end = strchr(tag, ' '); - size_t tag_len = (tag_end == NULL) ? strlen(tag) : tag_end - tag; + size_t tag_len = (tag_end == nullptr) ? strlen(tag) : tag_end - tag; assert(tag_len > 0, "tag must not be empty"); // push the tag onto the stack, pulling down the pointer char* old_ptr = _element_close_stack_ptr; @@ -355,7 +355,7 @@ void xmlStream::va_done(const char* format, va_list ap) { const char* kind = format; const char* kind_end = strchr(kind, ' '); size_t kind_len; - if (kind_end != NULL) { + if (kind_end != nullptr) { kind_len = kind_end - kind; int n = os::snprintf(buffer, sizeof(buffer), "%.*s_done", (int)kind_len, kind); assert((size_t)n < sizeof(buffer), "Unexpected number of characters in string"); @@ -388,7 +388,7 @@ void xmlStream::stamp() { // This is used only when there is no ciMethod available. void xmlStream::method(Method* method) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (method == NULL) return; + if (method == nullptr) return; print_raw(" method='"); method_text(method); print("' bytes='%d'", method->code_size()); @@ -399,7 +399,7 @@ void xmlStream::method(Method* method) { int throwouts = method->interpreter_throwout_count(); if (throwouts != 0) print(" throwouts='%d'", throwouts); MethodData* mdo = method->method_data(); - if (mdo != NULL) { + if (mdo != nullptr) { uint cnt; cnt = mdo->decompile_count(); if (cnt != 0) print(" decompiles='%d'", cnt); @@ -417,7 +417,7 @@ void xmlStream::method(Method* method) { void xmlStream::method_text(Method* method) { ResourceMark rm; assert_if_no_error(inside_attrs(), "printing attributes"); - if (method == NULL) return; + if (method == nullptr) return; text()->print("%s", method->method_holder()->external_name()); print_raw(" "); // " " is easier for tools to parse than "::" method->name()->print_symbol_on(text()); @@ -431,7 +431,7 @@ void xmlStream::method_text(Method* method) { // This is used only when there is no ciKlass available. void xmlStream::klass(Klass* klass) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (klass == NULL) return; + if (klass == nullptr) return; print_raw(" klass='"); klass_text(klass); print_raw("'"); @@ -439,14 +439,14 @@ void xmlStream::klass(Klass* klass) { void xmlStream::klass_text(Klass* klass) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (klass == NULL) return; + if (klass == nullptr) return; //klass->print_short_name(log->out()); klass->name()->print_symbol_on(out()); } void xmlStream::name(const Symbol* name) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (name == NULL) return; + if (name == nullptr) return; print_raw(" name='"); name_text(name); print_raw("'"); @@ -454,14 +454,14 @@ void xmlStream::name(const Symbol* name) { void xmlStream::name_text(const Symbol* name) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (name == NULL) return; + if (name == nullptr) return; //name->print_short_name(text()); name->print_symbol_on(text()); } void xmlStream::object(const char* attr, Handle x) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (x == NULL) return; + if (x == nullptr) return; print_raw(" "); print_raw(attr); print_raw("='"); @@ -471,14 +471,14 @@ void xmlStream::object(const char* attr, Handle x) { void xmlStream::object_text(Handle x) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (x == NULL) return; + if (x == nullptr) return; x->print_value_on(text()); } void xmlStream::object(const char* attr, Metadata* x) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (x == NULL) return; + if (x == nullptr) return; print_raw(" "); print_raw(attr); print_raw("='"); @@ -488,7 +488,7 @@ void xmlStream::object(const char* attr, Metadata* x) { void xmlStream::object_text(Metadata* x) { assert_if_no_error(inside_attrs(), "printing attributes"); - if (x == NULL) return; + if (x == nullptr) return; //x->print_value_on(text()); if (x->is_method()) method_text((Method*)x); @@ -505,12 +505,12 @@ void xmlStream::flush() { } void xmlTextStream::flush() { - if (_outer_xmlStream == NULL) return; + if (_outer_xmlStream == nullptr) return; _outer_xmlStream->flush(); } void xmlTextStream::write(const char* str, size_t len) { - if (_outer_xmlStream == NULL) return; + if (_outer_xmlStream == nullptr) return; _outer_xmlStream->write_text(str, len); update_position(str, len); } diff --git a/src/hotspot/share/utilities/xmlstream.hpp b/src/hotspot/share/utilities/xmlstream.hpp index 9978e64a82e..a933d2c472d 100644 --- a/src/hotspot/share/utilities/xmlstream.hpp +++ b/src/hotspot/share/utilities/xmlstream.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2023, 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 @@ -41,7 +41,7 @@ class xmlTextStream : public outputStream { xmlStream* _outer_xmlStream; - xmlTextStream() { _outer_xmlStream = NULL; } + xmlTextStream() { _outer_xmlStream = nullptr; } public: virtual void flush(); // _outer.flush(); @@ -97,7 +97,7 @@ class xmlStream : public outputStream { xmlStream(outputStream* out) { initialize(out); } DEBUG_ONLY(virtual ~xmlStream();) - bool is_open() { return _out != NULL; } + bool is_open() { return _out != nullptr; } // text output bool inside_attrs() { return _markup_state != BODY; } @@ -182,6 +182,6 @@ class xmlStream : public outputStream { // Standard log file, null if no logging is happening. extern xmlStream* xtty; -// Note: If ::xtty != NULL, ::tty == ::xtty->text(). +// Note: If ::xtty != nullptr, ::tty == ::xtty->text(). #endif // SHARE_UTILITIES_XMLSTREAM_HPP