/* * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
class VM_EmptyOperation : public VM_Operation { public: virtualvoid doit() final {} virtualbool skip_thread_oop_barriers() const final { // Neither the doit function nor the safepoint // cleanup tasks read oops in the Java threads. returntrue;
}
};
class VM_Halt: public VM_EmptyOperation { public:
VMOp_Type type() const { return VMOp_Halt; }
};
class VM_SafepointALot: public VM_EmptyOperation { public:
VMOp_Type type() const { return VMOp_SafepointALot; }
};
class VM_Cleanup: public VM_EmptyOperation { public:
VMOp_Type type() const { return VMOp_Cleanup; }
};
// empty vm op, evaluated just to force a safepoint class VM_ForceSafepoint: public VM_EmptyOperation { public:
VMOp_Type type() const { return VMOp_ForceSafepoint; }
};
// empty vm op, when forcing a safepoint due to inline cache buffers being full class VM_ICBufferFull: public VM_EmptyOperation { public:
VMOp_Type type() const { return VMOp_ICBufferFull; }
};
// Base class for invoking parts of a gtest in a safepoint. // Derived classes provide the doit method. // Typically also need to transition the gtest thread from native to VM. class VM_GTestExecuteAtSafepoint: public VM_Operation { public:
VMOp_Type type() const { return VMOp_GTestExecuteAtSafepoint; }
protected:
VM_GTestExecuteAtSafepoint() {}
};
class VM_CleanClassLoaderDataMetaspaces : public VM_Operation { public:
VM_CleanClassLoaderDataMetaspaces() {}
VMOp_Type type() const { return VMOp_CleanClassLoaderDataMetaspaces; } void doit();
};
// Deopt helper that can deoptimize frames in threads other than the // current thread. Only used through Deoptimization::deoptimize_frame. class VM_DeoptimizeFrame: public VM_Operation { friendclass Deoptimization;
private:
JavaThread* _thread;
intptr_t* _id; int _reason;
VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id, int reason);
class DeadlockCycle; class VM_FindDeadlocks: public VM_Operation { private: bool _concurrent_locks;
DeadlockCycle* _deadlocks;
outputStream* _out;
ThreadsListSetter _setter; // Helper to set hazard ptr in the originating thread // which protects the JavaThreads in _deadlocks.
class ThreadDumpResult; class ThreadSnapshot; class ThreadConcurrentLocks;
class VM_ThreadDump : public VM_Operation { private:
ThreadDumpResult* _result; int _num_threads;
GrowableArray<instanceHandle>* _threads; int _max_depth; bool _with_locked_monitors; bool _with_locked_synchronizers;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.