On Mon, 29 May 2023 10:09:15 GMT, Johan Sjölen <jsjo...@openjdk.org> wrote:

> A final sweep of Hotspot to remove all re-added NULLs. With only 110 changes 
> I'd appreciate if this was considered trivial.

All of the stuff to actually keep.

src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp line 125:

> 123: 
> 124: void CodeInstaller::pd_relocate_JavaMethod(CodeBuffer &cbuf, 
> methodHandle& method, jint pc_offset, JVMCI_TRAPS) {
> 125:   NativeCall* call = nullptr;

T

src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp line 158:

> 156:     // Check for proper post_call_nop
> 157:     NativePostCallNop* nop = 
> nativePostCallNop_at(call->next_instruction_address());
> 158:     if (nop == nullptr) {

T

src/hotspot/cpu/ppc/templateTable_ppc_64.cpp line 2297:

> 2295:   __ ld_ptr(method, array_base_offset + 
> in_bytes(ResolvedIndyEntry::method_offset()), cache);
> 2296: 
> 2297:   // The invokedynamic is unresolved iff method is null

T

src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp line 374:

> 372:   // Make sure klass is 'reasonable', which is not zero.
> 373:   __ load_klass(obj, obj, tmp1); // get klass
> 374:   __ beqz(obj, error);           // if klass is null it is broken

T

src/hotspot/cpu/riscv/stubGenerator_riscv.cpp line 4019:

> 4017:     StubRoutines::_forward_exception_entry = 
> generate_forward_exception();
> 4018: 
> 4019:     if (UnsafeCopyMemory::_table == nullptr) {

T

src/hotspot/cpu/riscv/stubGenerator_riscv.cpp line 4077:

> 4075: 
> 4076:     BarrierSetNMethod* bs_nm = 
> BarrierSet::barrier_set()->barrier_set_nmethod();
> 4077:     if (bs_nm != nullptr) {

T

src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp line 489:

> 487:   __ load_klass(obj, obj, tmp1);  // get klass
> 488:   __ testptr(obj, obj);
> 489:   __ jcc(Assembler::zero, error); // if klass is null it is broken

T

src/hotspot/cpu/x86/interp_masm_x86.cpp line 303:

> 301:     jcc(Assembler::equal, L);
> 302:     stop("InterpreterMacroAssembler::call_VM_base:"
> 303:          " last_sp != null");

T

src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp line 191:

> 189:     // Check for proper post_call_nop
> 190:     NativePostCallNop* nop = 
> nativePostCallNop_at(call->next_instruction_address());
> 191:     if (nop == nullptr) {

T

src/hotspot/share/adlc/output_c.cpp line 279:

> 277:   int max_stage = 0;
> 278:   i = 0;
> 279:   for (pipeline->_reslist.reset(); (resource = 
> pipeline->_reslist.iter()) != nullptr;) {

T

src/hotspot/share/adlc/output_c.cpp line 305:

> 303:   templen = 0;
> 304:   i = 0;
> 305:   for (pipeline->_reslist.reset(); (resource = 
> pipeline->_reslist.iter()) != nullptr;) {

T

src/hotspot/share/adlc/output_c.cpp line 368:

> 366:   const char* resource;
> 367:   i = 0;
> 368:   for (pipeline->_reslist.reset(); (resource = 
> pipeline->_reslist.iter()) != nullptr;) {

T

src/hotspot/share/adlc/output_c.cpp line 393:

> 391: 
> 392:   i = 0;
> 393:   for (pipeline->_reslist.reset(); (resource = 
> pipeline->_reslist.iter()) != nullptr;) {

T

src/hotspot/share/adlc/output_c.cpp line 1009:

> 1007:   const char* resource;
> 1008:   i = 0;
> 1009:   for (_pipeline->_reslist.reset(); (resource = 
> _pipeline->_reslist.iter()) != nullptr;) {

T

src/hotspot/share/cds/filemap.cpp line 363:

> 361: 
> 362: void SharedClassPathEntry::copy_from(SharedClassPathEntry* ent, 
> ClassLoaderData* loader_data, TRAPS) {
> 363:   assert(ent != nullptr, "sanity");

T

src/hotspot/share/classfile/stringTable.hpp line 150:

> 148:   static size_t shared_entry_count() NOT_CDS_JAVA_HEAP_RETURN_(0);
> 149:   static void allocate_shared_strings_array(TRAPS) 
> NOT_CDS_JAVA_HEAP_RETURN;
> 150:   static oop init_shared_table(const DumpedInternedStrings* 
> dumped_interned_strings) NOT_CDS_JAVA_HEAP_RETURN_(nullptr);

T

src/hotspot/share/code/compiledIC.hpp line 93:

> 91:   CompiledICHolder*    claim_cached_icholder() {
> 92:     assert(_is_icholder, "");
> 93:     assert(_cached_value != nullptr, "must be non-null");

T

src/hotspot/share/code/compiledIC.hpp line 342:

> 340:   // Code
> 341: 
> 342:   // Returns null if CodeBuffer::expand fails

T

src/hotspot/share/compiler/compileBroker.cpp line 388:

> 386: 
> 387:   MonitorLocker locker(MethodCompileQueue_lock);
> 388:   // If _first is null we have no more compile jobs. There are two 
> reasons for

T

src/hotspot/share/gc/x/xBarrier.cpp line 242:

> 240: oop XBarrier::weak_load_barrier_on_oop_field_preloaded(volatile 
> narrowOop* p, oop o) {
> 241:   ShouldNotReachHere();
> 242:   return nullptr;

T

src/hotspot/share/gc/x/xBarrierSet.inline.hpp line 187:

> 185:     // No check cast, bulk barrier and bulk copy
> 186:     XBarrier::load_barrier_on_oop_array(src, length);
> 187:     return Raw::oop_arraycopy_in_heap(nullptr, 0, src, nullptr, 0, dst, 
> length);

T

src/hotspot/share/gc/x/xPageTable.inline.hpp line 43:

> 41: inline bool XPageTableIterator::next(XPage** page) {
> 42:   for (XPage* entry; _iter.next(&entry);) {
> 43:     if (entry != nullptr && entry != _prev) {

T

src/hotspot/share/gc/z/zHeap.cpp line 383:

> 381: 
> 382:   if (addr == zaddress::null) {
> 383:     st->print_raw_cr("null");

T

src/hotspot/share/gc/z/zHeap.cpp line 438:

> 436: 
> 437:   if (addr == zaddress::null) {
> 438:     st->print_raw_cr("null");

T

src/hotspot/share/interpreter/linkResolver.cpp line 816:

> 814:   st->print("%s%s, compile-time-class:%s, method:%s, method_holder:%s, 
> access_flags: ",
> 815:             prefix,
> 816:             (klass == nullptr ? "<null>" : klass->internal_name()),

T

src/hotspot/share/jfr/dcmd/jfrDcmds.hpp line 162:

> 160:   }
> 161:   static const JavaPermission permission() {
> 162:     JavaPermission p = {"java.lang.management.ManagementPermission", 
> "monitor", nullptr};

T

src/hotspot/share/jfr/dcmd/jfrDcmds.hpp line 187:

> 185:   }
> 186:   static const JavaPermission permission() {
> 187:     JavaPermission p = {"java.lang.management.ManagementPermission", 
> "monitor", nullptr};

T

src/hotspot/share/jfr/recorder/checkpoint/types/jfrThreadState.cpp line 125:

> 123:     }
> 124:   }
> 125:   assert(name_str != nullptr, "unexpected null thread name");

T

src/hotspot/share/jfr/recorder/repository/jfrRepository.cpp line 147:

> 145:   const char* const canonical_chunk_path = JfrJavaSupport::c_str(path, 
> jt);
> 146:   if (nullptr == canonical_chunk_path && !_chunkwriter->is_valid()) {
> 147:     // new output is null and current output is null

T

src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp line 119:

> 117:   }
> 118:   release(old, thread);
> 119:   return new_buffer; // might be null

T

src/hotspot/share/jvmci/jvmciEnv.cpp line 366:

> 364:     JNIAccessMark jni(this, THREAD);
> 365:     jthrowable ex = jni()->ExceptionOccurred();
> 366:     if (ex != nullptr) {

T

src/hotspot/share/logging/logAsyncWriter.cpp line 195:

> 193:   if (self->_initialized) {
> 194:     Atomic::release_store_fence(&AsyncLogWriter::_instance, self);
> 195:     // All readers of _instance after the fence see non-null.

T

src/hotspot/share/logging/logConfiguration.cpp line 481:

> 479:                                            const char* output_options,
> 480:                                            outputStream* errstream) {
> 481:   assert(errstream != nullptr, "errstream can not be null");

T

src/hotspot/share/logging/logConfiguration.hpp line 64:

> 62:   static bool                       _async_mode;
> 63: 
> 64:   // Create a new output. Returns null if failed.

T

src/hotspot/share/logging/logMessageBuffer.hpp line 112:

> 110:   // using set_prefix(). Lines added to the LogMessageBuffer after a 
> prefix
> 111:   // function has been set will be prefixed automatically.
> 112:   // Setting this to null will disable prefixing.

T

src/hotspot/share/logging/logStream.hpp line 103:

> 101:     : LogStreamImpl(LogTargetHandle(level, LogTagSetMapping<T0, T1, T2, 
> T3, T4>::tagset())) {}
> 102: 
> 103:   // Constructor to support creation from typed (likely null) pointer. 
> Mostly used by the logging framework.

T

src/hotspot/share/memory/metaspace.cpp line 878:

> 876:          "allocation size too large (" SIZE_FORMAT ")", word_size);
> 877: 
> 878:   assert(loader_data != nullptr, "Should never pass around a null 
> loader_data. "

T

src/hotspot/share/memory/metaspace/metachunk.cpp line 280:

> 278: 
> 279:   // Test base pointer
> 280:   assert(base() != nullptr, "Base pointer null");

T

src/hotspot/share/memory/metaspace/metaspaceArena.cpp line 346:

> 344: 
> 345:   if (p == nullptr) {
> 346:     UL(info, "allocation failed, returned null.");

T

src/hotspot/share/memory/universe.cpp line 469:

> 467:         if (!is_reference_type((BasicType)i)) {
> 468:           oop m = _basic_type_mirrors[i].resolve();
> 469:           assert(m != nullptr, "archived mirrors should not be null");

T

src/hotspot/share/memory/virtualspace.cpp line 598:

> 596:     // Last, desperate try without any placement.
> 597:     if (_base == nullptr) {
> 598:       log_trace(gc, heap, coops)("Trying to allocate at address null 
> heap of size " SIZE_FORMAT_X, size + noaccess_prefix);

T

src/hotspot/share/oops/cpCache.cpp line 888:

> 886:   const bool has_appendix    = appendix.not_null();
> 887: 
> 888:   LogStream* log_stream = nullptr;

T

src/hotspot/share/oops/cpCache.cpp line 906:

> 904:     objArrayOop resolved_references = 
> constant_pool()->resolved_references();
> 905:     assert(appendix_index >= 0 && appendix_index < 
> resolved_references->length(), "oob");
> 906:     assert(resolved_references->obj_at(appendix_index) == nullptr, "init 
> just once");

T

src/hotspot/share/oops/cpCache.cpp line 914:

> 912:   resolved_indy_entry_at(index)->fill_in(adapter, 
> adapter->size_of_parameters(), as_TosState(adapter->result_type()), 
> has_appendix);
> 913: 
> 914:   if (log_stream != nullptr) {

T

src/hotspot/share/prims/jvmtiAgent.cpp line 375:

> 373:   HandleMark hm(thread);
> 374:   extern struct JavaVM_ main_vm;
> 375:   const jint err = (*on_load_entry)(&main_vm, 
> const_cast<char*>(agent->options()), nullptr);

T

src/hotspot/share/prims/jvmtiThreadState.cpp line 248:

> 246: 
> 247: // disable VTMS transitions for one virtual thread
> 248: // no-op if thread is non-null and not a virtual thread

T

src/hotspot/share/prims/whitebox.cpp line 1885:

> 1883:   InstanceKlass* ik = 
> InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
> 1884:   ConstantPool* cp = ik->constants();
> 1885:   if (cp->cache() == nullptr) {

T

src/hotspot/share/prims/whitebox.cpp line 1894:

> 1892:   InstanceKlass* ik = 
> InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
> 1893:   ConstantPool* cp = ik->constants();
> 1894:   if (cp->cache() == nullptr) {

T

src/hotspot/share/runtime/fieldDescriptor.cpp line 164:

> 162:         obj->obj_field(offset())->print_value_on(st);
> 163:       } else {
> 164:         st->print("null");

T

src/hotspot/share/runtime/fieldDescriptor.cpp line 171:

> 169:         obj->obj_field(offset())->print_value_on(st);
> 170:       } else {
> 171:         st->print("null");

T

src/hotspot/share/runtime/globals.hpp line 632:

> 630:                                                                          
>    \
> 631:   develop(bool, InterceptOSException, false,                             
>    \
> 632:           "Start debugger when an implicit OS (e.g. null) "              
>    \

T

src/hotspot/share/runtime/handles.hpp line 71:

> 69:  protected:
> 70:   oop     obj() const                            { return _handle == 
> nullptr ? (oop)nullptr : *_handle; }
> 71:   oop     non_null_obj() const                   { assert(_handle != 
> nullptr, "resolving null handle"); return *_handle; }

T

src/hotspot/share/runtime/handles.hpp line 147:

> 145:    protected:                                    \
> 146:     type*        obj() const                     { return _value; } \
> 147:     type*        non_null_obj() const            { assert(_value != 
> nullptr, "resolving null _value"); return _value; } \

T

src/hotspot/share/runtime/jniHandles.cpp line 381:

> 379:       JNIHandleBlock* next = block->_next;
> 380:       Atomic::dec(&_blocks_allocated);
> 381:       assert(block->pop_frame_link() == nullptr, "pop_frame_link should 
> be null");

T

src/hotspot/share/runtime/jniHandles.inline.hpp line 116:

> 114:   assert(handle != nullptr, "JNI handle should not be null");
> 115:   oop result = resolve_impl<DECORATORS_NONE, false /* external_guard 
> */>(handle);
> 116:   assert(result != nullptr, "null read from jni handle");

T

src/hotspot/share/runtime/objectMonitor.cpp line 539:

> 537:     // Attempt async deflation protocol.
> 538: 
> 539:     // Set a null owner to DEFLATER_MARKER to force any contending thread

T

src/hotspot/share/runtime/objectMonitor.cpp line 564:

> 562:     if (Atomic::cmpxchg(&_contentions, 0, INT_MIN) != 0) {
> 563:       // Contentions was no longer 0 so we lost the race since the
> 564:       // ObjectMonitor is now busy. Restore owner to null if it is

T

src/hotspot/share/runtime/objectMonitor.cpp line 669:

> 667:     ss->print("owner=" INTPTR_FORMAT, p2i(owner_raw()));
> 668:   } else {
> 669:     // We report null instead of DEFLATER_MARKER here because is_busy()

T

src/hotspot/share/runtime/os.cpp line 1131:

> 1129:   // Handle null first, so later checks don't need to protect against 
> it.
> 1130:   if (addr == nullptr) {
> 1131:     st->print_cr("0x0 is null");

T

src/hotspot/share/runtime/safepoint.cpp line 235:

> 233:   for (; JavaThread *cur = jtiwh.next(); ) {
> 234:     ThreadSafepointState *cur_tss = cur->safepoint_state();
> 235:     assert(cur_tss->get_next() == nullptr, "Must be null");

T

src/hotspot/share/runtime/thread.cpp line 269:

> 267:   delete metadata_handles();
> 268: 
> 269:   // osthread() can be null, if creation of thread failed.

T

src/hotspot/share/runtime/thread.hpp line 343:

> 341:   virtual const char* type_name() const { return "Thread"; }
> 342: 
> 343:   // Returns the current thread (ASSERTS if null)

T

src/hotspot/share/runtime/threadSMR.cpp line 623:

> 621: // Shared singleton data for all ThreadsList(0) instances.
> 622: // Used by _bootstrap_list to avoid static init time heap allocation.
> 623: // No real entries, just the final null terminator.

T

src/hotspot/share/runtime/threadSMR.cpp line 849:

> 847:     _protected_java_thread = java_lang_Thread::thread(thread_oop);
> 848:     assert(_protected_java_thread == nullptr || 
> _tlh.includes(_protected_java_thread), "must be");
> 849:     // If we captured a non-null JavaThread* after the _tlh was created

T

src/hotspot/share/runtime/vmOperations.cpp line 335:

> 333:           jt->is_exiting() ||
> 334:           jt->is_hidden_from_external_view())  {
> 335:         // add a null snapshot if skipped

T

src/hotspot/share/services/threadService.cpp line 1071:

> 1069:       oop ownerObj = 
> java_util_concurrent_locks_AbstractOwnableSynchronizer::get_owner_threadObj(waitingToLockBlocker);
> 1070:       currentThread = java_lang_Thread::thread(ownerObj);
> 1071:       assert(currentThread != nullptr, "AbstractOwnableSynchronizer 
> owning thread is unexpectedly null");

T

src/hotspot/share/utilities/concurrentHashTable.inline.hpp line 1295:

> 1293:     return false;
> 1294:   }
> 1295:   assert(_new_table == nullptr || _new_table == POISON_PTR, "Must be 
> null");

T

src/hotspot/share/utilities/copy.cpp line 73:

> 71:     assert(src != nullptr, "address must not be null");
> 72:     assert(dst != nullptr, "address must not be null");
> 73:     assert(elem_size == 2 || elem_size == 4 || elem_size == 8,

T

src/hotspot/share/utilities/elfFile.cpp line 1827:

> 1825: }
> 1826: 
> 1827: // If result is a null, we do not care about the content of the string 
> being read.

T

src/hotspot/share/utilities/elfFuncDescTable.hpp line 135:

> 133:   ~ElfFuncDescTable();
> 134: 
> 135:   // return the function address for the function descriptor at 'index' 
> or null on error

T

src/hotspot/share/utilities/exceptions.cpp line 138:

> 136: // therefore the exception oop should be in the oopmap.
> 137: void Exceptions::_throw_oop(JavaThread* thread, const char* file, int 
> line, oop exception) {
> 138:   assert(exception != nullptr, "exception should not be null");

T

src/hotspot/share/utilities/exceptions.cpp line 145:

> 143: void Exceptions::_throw(JavaThread* thread, const char* file, int line, 
> Handle h_exception, const char* message) {
> 144:   ResourceMark rm(thread);
> 145:   assert(h_exception() != nullptr, "exception should not be null");

T

src/hotspot/share/utilities/globalDefinitions.cpp line 162:

> 160:   static_assert((size_t)HeapWordSize >= sizeof(juint),
> 161:                 "HeapWord should be at least as large as juint");
> 162:   static_assert(sizeof(nullptr) == sizeof(char*), "null must be same 
> size as pointer");

T

src/hotspot/share/utilities/globalDefinitions_gcc.hpp line 135:

> 133: 
> 134: // gcc warns about applying offsetof() to non-POD object or calculating
> 135: // offset directly when base address is null. The -Wno-invalid-offsetof

T

src/hotspot/share/utilities/linkedlist.hpp line 174:

> 172: 
> 173:   virtual void add(LinkedListNode<E>* node) {
> 174:     assert(node != nullptr, "null pointer");

T

src/hotspot/share/utilities/linkedlist.hpp line 388:

> 386: 
> 387:   virtual void add(LinkedListNode<E>* node) {
> 388:     assert(node != nullptr, "null pointer");

T

src/hotspot/share/utilities/lockFreeStack.hpp line 79:

> 77: 
> 78:   // Atomically removes the top object from this stack and returns a
> 79:   // pointer to that object, or null if this stack is empty. Acts as a

T

src/hotspot/share/utilities/lockFreeStack.hpp line 100:

> 98:   }
> 99: 
> 100:   // Atomically exchange the list of elements with null, returning the 
> old

T

src/hotspot/share/utilities/lockFreeStack.hpp line 146:

> 144:   bool empty() const { return top() == nullptr; }
> 145: 
> 146:   // Return the most recently pushed element, or null if the stack is 
> empty.

T

src/hotspot/share/utilities/nonblockingQueue.hpp line 48:

> 46: // A queue may temporarily appear to be empty even though elements have 
> been
> 47: // added and not removed.  For example, after running the following 
> program,
> 48: // the value of r may be null.

T

src/hotspot/share/utilities/nonblockingQueue.hpp line 108:

> 106:   // Thread-safe attempt to remove and return the first object in the 
> queue.
> 107:   // Returns true if successful.  If successful then *node_ptr is the 
> former
> 108:   // first object, or null if the queue was empty.  If unsuccessful, 
> because

T

src/hotspot/share/utilities/nonblockingQueue.hpp line 114:

> 112:   inline bool try_pop(T** node_ptr);
> 113: 
> 114:   // Thread-safe remove and return the first object in the queue, or null

T

src/hotspot/share/utilities/nonblockingQueue.hpp line 116:

> 114:   // Thread-safe remove and return the first object in the queue, or null
> 115:   // if the queue was empty.  This just iterates on try_pop() until it
> 116:   // succeeds, returning the (possibly null) element obtained from that.

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 88:

> 86: // An append operation atomically exchanges the new tail with the queue 
> tail.
> 87: // It then sets the "next" value of the old tail to the head of the list 
> being
> 88: // appended. If the old tail is null then the queue was empty, then the

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 111:

> 109:   if (old_tail == nullptr) {
> 110:     // If old_tail is null then the queue was empty, and _head must also 
> be
> 111:     // null.  The correctness of this assertion depends on try_pop 
> clearing

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 129:

> 127:   } else {
> 128:     // A concurrent try_pop has claimed old_tail, so it is no longer in 
> the
> 129:     // list.  The queue was logically empty.  _head is either null or

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 155:

> 153:     // There are several cases for next_node.
> 154:     // (1) next_node is the extension of the queue's list.
> 155:     // (2) next_node is null, because a competing try_pop took old_head.

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 178:

> 176:       // report it as such for consistency, though we could report the 
> queue
> 177:       // was empty.  We don't attempt to further help [Clause 2] by also
> 178:       // trying to set _tail to nullptr, as that would just ensure that 
> one or

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 194:

> 192:     // [Clause 2]
> 193:     // Old_head was the last entry and we've claimed it by setting its 
> next
> 194:     // value to null.  However, this leaves the queue in disarray.  Fix 
> up

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 203:

> 201:     // also consistent with [Clause 1b].
> 202: 
> 203:     // Attempt to change the queue head from old_head to null.  Failure 
> of

T

src/hotspot/share/utilities/nonblockingQueue.inline.hpp line 208:

> 206:     Atomic::cmpxchg(&_head, old_head, (T*)nullptr);
> 207: 
> 208:     // Attempt to change the queue tail from old_head to null.  Failure 
> of

T

src/hotspot/share/utilities/ostream.cpp line 709:

> 707:     start_log();
> 708:   } else {
> 709:     // and leave xtty as null

T

src/hotspot/share/utilities/ostream.cpp line 771:

> 769:           text->print_raw(p->key());
> 770:           text->put('=');
> 771:           assert(p->value() != nullptr, "p->value() is null");

T

src/hotspot/share/utilities/unsigned5.hpp line 327:

> 325:     Writer(const ARR& array)
> 326:       : _array(const_cast<ARR&>(array)), _limit_ptr(nullptr), 
> _position(0) {
> 327:       // Note: if _limit_ptr is null, the ARR& is never reassigned,

T

src/hotspot/share/utilities/utf8.hpp line 76:

> 74:   // Utility methods
> 75: 
> 76:   // Returns null if 'c' it not found. This only works as long

T

src/hotspot/share/utilities/vmError.hpp line 45:

> 43:   static char        _detail_msg[1024];
> 44: 
> 45:   static Thread*     _thread;           // null if it's native thread

T

-------------

PR Review: https://git.openjdk.org/jdk/pull/14198#pullrequestreview-1449252066
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209159785
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209159872
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209160289
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209160378
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209160527
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209160578
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209161770
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209160686
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209160791
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209161299
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209161367
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209161415
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209161470
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162033
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162094
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162234
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162319
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162344
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162424
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162602
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162648
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162687
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162835
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209162873
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163006
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163074
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163111
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163185
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163220
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163248
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163287
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163352
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163396
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163558
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163605
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163642
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163724
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163763
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163811
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163873
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209163927
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164027
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164087
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164125
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164508
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164848
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164910
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209164940
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165038
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165073
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165280
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165354
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165423
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165533
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165626
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165671
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165736
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165819
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209165977
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166087
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166196
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166250
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166340
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166433
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166563
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166748
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166817
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166925
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209166991
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167061
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167105
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167139
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167208
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167536
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167644
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167683
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167736
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167787
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167918
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209167968
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168014
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168057
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168094
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168142
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168185
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168230
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168252
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168310
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168372
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168414
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168454
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168522
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168564
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168609
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168655
PR Review Comment: https://git.openjdk.org/jdk/pull/14198#discussion_r1209168750

Reply via email to