8209087: Clean up runtime code that compares 'this' to NULL
Summary: Remove 'this' to NULL comparisons from methods and check if calling objects of these methods could be NULL.
Reviewed-by: lfoltan, gziemski
--- a/src/hotspot/share/classfile/verificationType.cpp Thu Oct 18 10:08:35 2018 -0400
+++ b/src/hotspot/share/classfile/verificationType.cpp Thu Oct 18 10:35:58 2018 -0400
@@ -172,7 +172,11 @@
} else if (is_uninitialized()) {
st->print("uninitialized %d", bci());
} else {
- name()->print_value_on(st);
+ if (name() != NULL) {
+ name()->print_value_on(st);
+ } else {
+ st->print_cr("NULL");
+ }
}
}
}
--- a/src/hotspot/share/oops/symbol.cpp Thu Oct 18 10:08:35 2018 -0400
+++ b/src/hotspot/share/oops/symbol.cpp Thu Oct 18 10:35:58 2018 -0400
@@ -294,28 +294,20 @@
}
void Symbol::print_on(outputStream* st) const {
- if (this == NULL) {
- st->print_cr("NULL");
- } else {
- st->print("Symbol: '");
- print_symbol_on(st);
- st->print("'");
- st->print(" count %d", refcount());
- }
+ st->print("Symbol: '");
+ print_symbol_on(st);
+ st->print("'");
+ st->print(" count %d", refcount());
}
// The print_value functions are present in all builds, to support the
// disassembler and error reporting.
void Symbol::print_value_on(outputStream* st) const {
- if (this == NULL) {
- st->print("NULL");
- } else {
- st->print("'");
- for (int i = 0; i < utf8_length(); i++) {
- st->print("%c", char_at(i));
- }
- st->print("'");
+ st->print("'");
+ for (int i = 0; i < utf8_length(); i++) {
+ st->print("%c", char_at(i));
}
+ st->print("'");
}
bool Symbol::is_valid(Symbol* s) {
--- a/src/hotspot/share/runtime/perfData.cpp Thu Oct 18 10:08:35 2018 -0400
+++ b/src/hotspot/share/runtime/perfData.cpp Thu Oct 18 10:35:58 2018 -0400
@@ -323,7 +323,12 @@
}
PerfData* PerfDataManager::find_by_name(const char* name) {
- return _all->find_by_name(name);
+ // if add_item hasn't been called the list won't be initialized
+ if (_all != NULL) {
+ return _all->find_by_name(name);
+ } else {
+ return NULL;
+ }
}
PerfDataList* PerfDataManager::all() {
@@ -591,10 +596,6 @@
PerfData* PerfDataList::find_by_name(const char* name) {
- // if add_item hasn't been called the list won't be initialized
- if (this == NULL)
- return NULL;
-
int i = _set->find((void*)name, PerfDataList::by_name);
if (i >= 0 && i <= _set->length())
--- a/src/hotspot/share/runtime/perfData.inline.hpp Thu Oct 18 10:08:35 2018 -0400
+++ b/src/hotspot/share/runtime/perfData.inline.hpp Thu Oct 18 10:35:58 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2018, 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
@@ -58,7 +58,11 @@
}
inline bool PerfDataManager::exists(const char* name) {
- return _all->contains(name);
+ if (_all != NULL) {
+ return _all->contains(name);
+ } else {
+ return false;
+ }
}
#endif // SHARE_VM_RUNTIME_PERFDATA_INLINE_HPP